diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/decoder.cc | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/decoder.cc b/src/decoder.cc index b9f634a..3c5a4e8 100644 --- a/src/decoder.cc +++ b/src/decoder.cc @@ -106,7 +106,7 @@ void Decoder::decode() // NOTE: we only decode video, we only need the data from stream_index 0 // (stream 0: video, stream 1: audio) // while(pkt.stream_index == 0 && len > 0) { - while(len > 0) { + while(pkt.stream_index == 0 && len > 0) { int ret; int got_picture; // buf_t *buf = buf_alloc(); @@ -117,8 +117,9 @@ void Decoder::decode() memcpy(dvf->frame, ptr, len); // fprintf(stderr, "DVBufferSize: [%d]bytes\n", len); + ret = avcodec_decode_video(&fc->streams[0]->codec, - fff->frame, &got_picture, ptr, len); + fff->frame, &got_picture, ptr, len); if(ret < 0) { fprintf(stderr, "Error while decoding stream\n"); @@ -130,18 +131,16 @@ void Decoder::decode() pthread_mutex_lock(mutex); encode_queue->push(dvf); - if(pkt.stream_index == 0) player_queue->push(fff); + player_queue->push(fff); pthread_mutex_unlock(mutex); sem_post(encode_sem); - if(pkt.stream_index == 0) { - user_event.type = SDL_USEREVENT; - user_event.user.code = 0; - user_event.user.data1 = NULL; - user_event.user.data2 = NULL; - SDL_PushEvent(&user_event); - } + user_event.type = SDL_USEREVENT; + user_event.user.code = 0; + user_event.user.data1 = NULL; + user_event.user.data2 = NULL; + SDL_PushEvent(&user_event); } /* // For later use, when audio must be implemented |