Changeset c5c65b6 in mainline


Ignore:
Timestamp:
2012-07-06T14:11:32Z (12 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9b3d999
Parents:
6be06d0
Message:

app/dplay: Refactoring. Ouput + sign instead of one line.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/dplay/dplay.c

    r6be06d0 rc5c65b6  
    7474        pb->buffer.base = NULL;
    7575        pb->buffer.size = 0;
     76        pb->buffer.position = NULL;
    7677        pb->playing = false;
    7778        pb->source = NULL;
     
    9495                        break;
    9596                }
    96                 printf("Got device event!!!\n");
     97                printf("+");
    9798                const size_t bytes = fread(pb->buffer.position, sizeof(uint8_t),
    9899                   buffer_part, pb->source);
    99                 pb->buffer.position += bytes;
    100                 if (bytes != buffer_part)
    101                         bzero(pb->buffer.position, buffer_part - bytes);
    102                 pb->buffer.position += buffer_part - bytes;
     100                bzero(pb->buffer.position + bytes, buffer_part - bytes);
     101                pb->buffer.position += buffer_part;
     102
    103103                if (pb->buffer.position >= (pb->buffer.base + pb->buffer.size))
    104104                        pb->buffer.position = pb->buffer.base;
     
    118118        assert(pb->device);
    119119        pb->buffer.position = pb->buffer.base;
    120         printf("Playing: %dHz, %d-bit samples, %d channel(s), %sSIGNED.\n",
    121             sampling_rate, sample_size, channels, sign ? "": "UN");
     120        printf("Playing: %dHz, %d-bit %ssigned samples, %d channel(s).\n",
     121            sampling_rate, sample_size, sign ? "": "un", channels);
    122122        const size_t bytes = fread(pb->buffer.base, sizeof(uint8_t),
    123123            pb->buffer.size, pb->source);
    124124        if (bytes != pb->buffer.size)
    125                 return;
     125                bzero(pb->buffer.base + bytes, pb->buffer.size - bytes);
    126126        printf("Buffer data ready.\n");
    127127        fibril_mutex_lock(&pb->mutex);
     
    139139        audio_pcm_buffer_stop_playback(pb->device, pb->buffer.id);
    140140        fibril_condvar_wait(&pb->cv, &pb->mutex);
     141        printf("\n");
    141142}
    142143
     
    175176        async_exch_t *exch = async_exchange_begin(session);
    176177        if (!exch) {
     178                ret = EPARTY;
    177179                printf("Failed to start session exchange.\n");
    178                 async_hangup(session);
    179                 return 1;
     180                goto close_session;
    180181        }
    181182        const char* info = NULL;
     
    183184        if (ret != EOK) {
    184185                printf("Failed to get PCM info.\n");
    185                 async_exchange_end(exch);
    186                 async_hangup(session);
    187                 return 1;
     186                goto close_session;
    188187        }
    189188        printf("Playing on %s.\n", info);
     
    197196        if (ret != EOK) {
    198197                printf("Failed to get PCM buffer: %s.\n", str_error(ret));
    199                 async_exchange_end(exch);
    200                 async_hangup(session);
    201                 return 1;
     198                goto close_session;
    202199        }
    203200        printf("Buffer (%u): %p %zu.\n", pb.buffer.id, pb.buffer.base,
     
    209206        pb.source = fopen(file, "rb");
    210207        if (pb.source == NULL) {
     208                ret = ENOENT;
    211209                printf("Failed to open %s.\n", file);
    212                 munmap(pb.buffer.base, pb.buffer.size);
    213                 audio_pcm_buffer_release_buffer(exch, pb.buffer.id);
    214                 async_exchange_end(exch);
    215                 async_hangup(session);
    216                 return 1;
     210                goto cleanup;
    217211        }
    218212        wave_header_t header;
     
    226220                printf("Error parsing wav header: %s.\n", error);
    227221                fclose(pb.source);
    228                 munmap(pb.buffer.base, pb.buffer.size);
    229                 audio_pcm_buffer_release_buffer(exch, pb.buffer.id);
    230                 async_exchange_end(exch);
    231                 async_hangup(session);
    232                 return 1;
     222                goto cleanup;
    233223        }
    234224
    235225        play(&pb, rate, sample_size, channels, sign);
    236226
     227cleanup:
    237228        munmap(pb.buffer.base, pb.buffer.size);
    238229        audio_pcm_buffer_release_buffer(exch, pb.buffer.id);
     230close_session:
    239231        async_exchange_end(exch);
    240232        async_hangup(session);
    241         return 0;
     233        return ret == EOK ? 0 : 1;
    242234}
    243235/**
Note: See TracChangeset for help on using the changeset viewer.