[SCM] libav/experimental: Remove superfluous call to mpeg_decode_slice() for hwaccel, this function already contains the needed code. Patch by Gwenole Beauchesne.
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:39:45 UTC 2013
The following commit has been merged in the experimental branch:
commit 6aca2c67858e4cc926ed70165ace763ff7d0a178
Author: Gwenole Beauchesne <gbeauchesne at splitted-desktop.com>
Date: Fri Feb 27 08:20:45 2009 +0000
Remove superfluous call to mpeg_decode_slice() for hwaccel, this
function already contains the needed code.
Patch by Gwenole Beauchesne.
Originally committed as revision 17636 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index 6988da2..d543c87 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -1216,7 +1216,7 @@ static enum PixelFormat mpeg_get_pixelformat(AVCodecContext *avctx){
return PIX_FMT_VDPAU_MPEG2;
}else{
if(s->chroma_format < 2)
- return avctx->get_format(avctx,ff_pixfmt_list_420);
+ return avctx->get_format(avctx,ff_hwaccel_pixfmt_list_420);
else if(s->chroma_format == 2)
return PIX_FMT_YUV422P;
else
@@ -1704,6 +1704,19 @@ static int mpeg_decode_slice(Mpeg1Context *s1, int mb_y,
s->mb_x=0;
+ if (avctx->hwaccel) {
+ const uint8_t *buf_end, *buf_start = *buf - 4; /* include start_code */
+ int start_code = -1;
+ buf_end = ff_find_start_code(buf_start + 2, *buf + buf_size, &start_code);
+ if (buf_end < *buf + buf_size)
+ buf_end -= 4;
+ s->mb_y = mb_y;
+ if (avctx->hwaccel->decode_slice(avctx, buf_start, buf_end - buf_start) < 0)
+ return DECODE_SLICE_ERROR;
+ *buf = buf_end;
+ return DECODE_SLICE_OK;
+ }
+
for(;;) {
int code = get_vlc2(&s->gb, mbincr_vlc.table, MBINCR_VLC_BITS, 2);
if (code < 0){
@@ -1922,6 +1935,11 @@ static int slice_end(AVCodecContext *avctx, AVFrame *pict)
if (!s1->mpeg_enc_ctx_allocated || !s->current_picture_ptr)
return 0;
+ if (s->avctx->hwaccel) {
+ if (s->avctx->hwaccel->end_frame(s->avctx) < 0)
+ av_log(avctx, AV_LOG_ERROR, "hardware accelerator failed to decode picture\n");
+ }
+
if(CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration)
ff_xvmc_field_end(s);
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list