diff options
author | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-28 12:39:00 +0200 |
---|---|---|
committer | Lars-Dominik Braun <PromyLOPh@gmail.com> | 2008-06-28 12:39:00 +0200 |
commit | 3b6b49c735331e58767f2635859d557058cbde18 (patch) | |
tree | 991da7cd002adb6134e7a0c7dfa6fd9cb0552ec7 /src/player.c | |
parent | 6811fd397c0e7efc00a55e49002fa08732ef4af5 (diff) | |
download | pianobar-3b6b49c735331e58767f2635859d557058cbde18.tar.gz pianobar-3b6b49c735331e58767f2635859d557058cbde18.tar.bz2 pianobar-3b6b49c735331e58767f2635859d557058cbde18.zip |
client: Use mode instead of finishedPlayback in player
Smarter solution than commit 8421cfd9886ec5ee19cde18b48853c2f9ea60c29.
Diffstat (limited to 'src/player.c')
-rw-r--r-- | src/player.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/player.c b/src/player.c index d70b63f..d72979d 100644 --- a/src/player.c +++ b/src/player.c @@ -74,7 +74,7 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { player->bufferFilled += size*nmemb; player->bufferRead = 0; - if (player->mode == RECV_DATA) { + if (player->mode == PLAYER_RECV_DATA) { char *aacDecoded; NeAACDecFrameInfo frameInfo; @@ -101,18 +101,18 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { } } } else { - if (player->mode == FIND_ESDS) { + if (player->mode == PLAYER_INITIALIZED) { while (player->bufferRead+4 < player->bufferFilled) { if (memcmp (player->buffer + player->bufferRead, "esds", 4) == 0) { - player->mode = FOUND_ESDS; + player->mode = PLAYER_FOUND_ESDS; player->bufferRead += 4; break; } player->bufferRead++; } } - if (player->mode == FOUND_ESDS) { + if (player->mode == PLAYER_FOUND_ESDS) { /* FIXME: is this the correct way? */ /* we're gonna read 10 bytes */ while (player->bufferRead+1+4+5 < player->bufferFilled) { @@ -140,17 +140,17 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { format.byte_format = AO_FMT_LITTLE; player->audioOutDevice = ao_open_live (audioOutDriver, &format, NULL); - player->mode = AUDIO_INITIALIZED; + player->mode = PLAYER_AUDIO_INITIALIZED; break; } player->bufferRead++; } } - if (player->mode == AUDIO_INITIALIZED) { + if (player->mode == PLAYER_AUDIO_INITIALIZED) { while (player->bufferRead+4+8 < player->bufferFilled) { if (memcmp (player->buffer + player->bufferRead, "stsz", 4) == 0) { - player->mode = FOUND_STSZ; + player->mode = PLAYER_FOUND_STSZ; player->bufferRead += 4; /* skip version and unknown */ player->bufferRead += 8; @@ -160,7 +160,7 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { } } /* get frame sizes */ - if (player->mode == FOUND_STSZ) { + if (player->mode == PLAYER_FOUND_STSZ) { while (player->bufferRead+4 < player->bufferFilled) { /* how many frames do we have? */ if (player->sampleSizeN == 0) { @@ -182,17 +182,17 @@ size_t BarPlayerCurlCb (void *ptr, size_t size, size_t nmemb, void *stream) { } /* all sizes read, nearly ready for data mode */ if (player->sampleSizeCurr >= player->sampleSizeN) { - player->mode = SAMPLESIZE_INITIALIZED; + player->mode = PLAYER_SAMPLESIZE_INITIALIZED; break; } } } /* search for data atom and let the show begin... */ - if (player->mode == SAMPLESIZE_INITIALIZED) { + if (player->mode == PLAYER_SAMPLESIZE_INITIALIZED) { while (player->bufferRead+4 < player->bufferFilled) { if (memcmp (player->buffer + player->bufferRead, "mdat", 4) == 0) { - player->mode = RECV_DATA; + player->mode = PLAYER_RECV_DATA; player->sampleSizeCurr = 0; player->bufferRead += 4; break; @@ -219,19 +219,25 @@ void *BarPlayerThread (void *data) { struct aacPlayer *player = data; NeAACDecConfigurationPtr conf; + /* init handles */ player->audioFd = curl_easy_init (); player->aacHandle = NeAACDecOpen(); + /* set aac conf */ conf = NeAACDecGetCurrentConfiguration(player->aacHandle); conf->outputFormat = FAAD_FMT_16BIT; conf->downMatrix = 1; NeAACDecSetConfiguration(player->aacHandle, conf); + /* init curl */ curl_easy_setopt (player->audioFd, CURLOPT_URL, player->url); curl_easy_setopt (player->audioFd, CURLOPT_WRITEFUNCTION, BarPlayerCurlCb); curl_easy_setopt (player->audioFd, CURLOPT_WRITEDATA, player); curl_easy_setopt (player->audioFd, CURLOPT_USERAGENT, PACKAGE_STRING); curl_easy_setopt (player->audioFd, CURLOPT_CONNECTTIMEOUT, 60); + + player->mode = PLAYER_INITIALIZED; + curl_easy_perform (player->audioFd); NeAACDecClose(player->aacHandle); @@ -241,7 +247,7 @@ void *BarPlayerThread (void *data) { free (player->sampleSize); } - player->finishedPlayback = 1; + player->mode = PLAYER_FINISHED_PLAYBACK; return NULL; } |