|
|
@ -1366,26 +1366,26 @@ static int video_thread(void *arg) |
|
|
|
|
|
|
|
|
|
|
|
/* NOTE: ipts is the PTS of the _first_ picture beginning in
|
|
|
|
/* NOTE: ipts is the PTS of the _first_ picture beginning in
|
|
|
|
this packet, if any */ |
|
|
|
this packet, if any */ |
|
|
|
global_video_pkt_pts= pkt->pts; |
|
|
|
global_video_pkt_pts= pkt->pts; |
|
|
|
len1 = avcodec_decode_video(is->video_st->codec, |
|
|
|
len1 = avcodec_decode_video(is->video_st->codec, |
|
|
|
frame, &got_picture, |
|
|
|
frame, &got_picture, |
|
|
|
pkt->data, pkt->size); |
|
|
|
pkt->data, pkt->size); |
|
|
|
|
|
|
|
|
|
|
|
if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE) |
|
|
|
if( (decoder_reorder_pts || pkt->dts == AV_NOPTS_VALUE) |
|
|
|
&& frame->opaque && *(uint64_t*)frame->opaque != AV_NOPTS_VALUE) |
|
|
|
&& frame->opaque && *(uint64_t*)frame->opaque != AV_NOPTS_VALUE) |
|
|
|
pts= *(uint64_t*)frame->opaque; |
|
|
|
pts= *(uint64_t*)frame->opaque; |
|
|
|
else if(pkt->dts != AV_NOPTS_VALUE) |
|
|
|
else if(pkt->dts != AV_NOPTS_VALUE) |
|
|
|
pts= pkt->dts; |
|
|
|
pts= pkt->dts; |
|
|
|
else |
|
|
|
else |
|
|
|
pts= 0; |
|
|
|
pts= 0; |
|
|
|
pts *= av_q2d(is->video_st->time_base); |
|
|
|
pts *= av_q2d(is->video_st->time_base); |
|
|
|
|
|
|
|
|
|
|
|
// if (len1 < 0)
|
|
|
|
// if (len1 < 0)
|
|
|
|
// break;
|
|
|
|
// break;
|
|
|
|
if (got_picture) { |
|
|
|
if (got_picture) { |
|
|
|
if (output_picture2(is, frame, pts) < 0) |
|
|
|
if (output_picture2(is, frame, pts) < 0) |
|
|
|
goto the_end; |
|
|
|
goto the_end; |
|
|
|
} |
|
|
|
} |
|
|
|
av_free_packet(pkt); |
|
|
|
av_free_packet(pkt); |
|
|
|
if (step) |
|
|
|
if (step) |
|
|
|
if (cur_stream) |
|
|
|
if (cur_stream) |
|
|
|