Commit d8844b30 authored by bcoudurier's avatar bcoudurier

simplify slice_end, return size of output frame

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19317 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent d74d3e8e
...@@ -1935,7 +1935,7 @@ static int slice_decode_thread(AVCodecContext *c, void *arg){ ...@@ -1935,7 +1935,7 @@ static int slice_decode_thread(AVCodecContext *c, void *arg){
/** /**
* Handles slice ends. * Handles slice ends.
* @return 1 if it seems to be the last slice * @return sizeof(AVFrame) if a frame is output, 0 otherwise
*/ */
static int slice_end(AVCodecContext *avctx, AVFrame *pict) static int slice_end(AVCodecContext *avctx, AVFrame *pict)
{ {
...@@ -1966,6 +1966,7 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) ...@@ -1966,6 +1966,7 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict)
if (s->pict_type == FF_B_TYPE || s->low_delay) { if (s->pict_type == FF_B_TYPE || s->low_delay) {
*pict= *(AVFrame*)s->current_picture_ptr; *pict= *(AVFrame*)s->current_picture_ptr;
ff_print_debug_info(s, pict); ff_print_debug_info(s, pict);
return sizeof(*pict);
} else { } else {
s->picture_number++; s->picture_number++;
/* latency of 1 frame for I- and P-frames */ /* latency of 1 frame for I- and P-frames */
...@@ -1973,13 +1974,11 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict) ...@@ -1973,13 +1974,11 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict)
if (s->last_picture_ptr != NULL) { if (s->last_picture_ptr != NULL) {
*pict= *(AVFrame*)s->last_picture_ptr; *pict= *(AVFrame*)s->last_picture_ptr;
ff_print_debug_info(s, pict); ff_print_debug_info(s, pict);
return sizeof(*pict);
} }
} }
return 1;
} else {
return 0;
} }
return 0;
} }
static int mpeg1_decode_sequence(AVCodecContext *avctx, static int mpeg1_decode_sequence(AVCodecContext *avctx,
...@@ -2317,10 +2316,7 @@ static int decode_chunks(AVCodecContext *avctx, ...@@ -2317,10 +2316,7 @@ static int decode_chunks(AVCodecContext *avctx,
if (CONFIG_MPEG_VDPAU_DECODER && avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU) if (CONFIG_MPEG_VDPAU_DECODER && avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
ff_vdpau_mpeg_picture_complete(s2, buf, buf_size, s->slice_count); ff_vdpau_mpeg_picture_complete(s2, buf, buf_size, s->slice_count);
if (slice_end(avctx, picture)) { *data_size = slice_end(avctx, picture);
if(s2->last_picture_ptr || s2->low_delay) //FIXME merge with the stuff in mpeg_decode_slice
*data_size = sizeof(AVPicture);
}
} }
s2->pict_type= 0; s2->pict_type= 0;
return FFMAX(0, buf_ptr - buf - s2->parse_context.last_index); return FFMAX(0, buf_ptr - buf - s2->parse_context.last_index);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment