diff options
author | Jordi Ortiz <nenjordi@gmail.com> | 2011-10-07 13:58:21 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-10-30 21:50:16 +0100 |
commit | e3cfe541451161560a0efbcb0d67847b815dc77e (patch) | |
tree | e710442fbc1157fdccd91b433064dc7450267f7e /libavcodec/diracdec.c | |
parent | 5d50fcc5497407f4e6d8e90dd9660b3369d86764 (diff) | |
download | ffmpeg-e3cfe541451161560a0efbcb0d67847b815dc77e.tar.gz |
Dirac now returns AVFrames instead of DiracFrames
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/diracdec.c')
-rw-r--r-- | libavcodec/diracdec.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/libavcodec/diracdec.c b/libavcodec/diracdec.c index 86c361969b..5272f4dbab 100644 --- a/libavcodec/diracdec.c +++ b/libavcodec/diracdec.c @@ -1661,7 +1661,7 @@ static int dirac_decode_picture_header(DiracContext *s) return 0; } -static int get_delayed_pic(DiracContext *s, DiracFrame *picture, int *data_size) +static int get_delayed_pic(DiracContext *s, AVFrame *picture, int *data_size) { DiracFrame *out = s->delay_frames[0]; int i, out_idx = 0; @@ -1678,8 +1678,8 @@ static int get_delayed_pic(DiracContext *s, DiracFrame *picture, int *data_size) if (out) { out->avframe.reference ^= DELAYED_PIC_REF; - *data_size = sizeof(DiracFrame); - *picture = *out; + *data_size = sizeof(AVFrame); + *(AVFrame *)picture = out->avframe; } return 0; @@ -1792,7 +1792,7 @@ static int dirac_decode_frame(AVCodecContext *avctx, void *data, int *data_size, // end of stream, so flush delayed pics if (buf_size == 0) - return get_delayed_pic(s, picture, data_size); + return get_delayed_pic(s, (AVFrame *)data, data_size); for (;;) { //[DIRAC_STD] Here starts the code from parse_info() defined in 9.6 @@ -1815,10 +1815,12 @@ static int dirac_decode_frame(AVCodecContext *avctx, void *data, int *data_size, buf_idx += 4; continue; } - // [DIRAC_STD] dirac_decode_data_unit makes reference to the while defined in 9.3 inside the function parse_sequence() if (dirac_decode_data_unit(avctx, buf+buf_idx, data_unit_size)) + { + av_log(s->avctx, AV_LOG_ERROR,"Error in dirac_decode_data_unit\n"); return -1; + } buf_idx += data_unit_size; } @@ -1846,13 +1848,13 @@ static int dirac_decode_frame(AVCodecContext *avctx, void *data, int *data_size, if (delayed_frame) { delayed_frame->avframe.reference ^= DELAYED_PIC_REF; - *data_size = sizeof(DiracFrame); - *picture = *delayed_frame; + *(AVFrame*)data = delayed_frame->avframe; + *data_size = sizeof(AVFrame); } } else if (s->current_picture->avframe.display_picture_number == s->frame_number) { // The right frame at the right time :-) - *data_size = sizeof(DiracFrame); - *picture = *s->current_picture; + *(AVFrame*)data = s->current_picture->avframe; + *data_size = sizeof(AVFrame); } if (*data_size) |