aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelupus <elupus@svn>2010-03-02 23:33:12 +0000
committerelupus <elupus@svn>2010-03-02 23:33:12 +0000
commit1bcfc043a4f74bfd2a0d28632ee9aab3f9900d4f (patch)
tree3c13596a2bb70360d188bb064bc4d0fb32387dce
parent17a6824b230f657152b9fa559457413e0e02bdb6 (diff)
added: ffmpeg vdpau fixes for mpeg4
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@28328 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
-rw-r--r--xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/h263dec.c6
-rw-r--r--xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/vdpau.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/h263dec.c b/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/h263dec.c
index d75904cec4..2f052ff503 100644
--- a/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/h263dec.c
+++ b/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/h263dec.c
@@ -623,12 +623,12 @@ retry:
return -1;
if (CONFIG_MPEG4_VDPAU_DECODER && (s->avctx->codec->capabilities & CODEC_CAP_HWACCEL_VDPAU)) {
- ff_vdpau_mpeg4_decode_picture(s, buf, buf_size);
+ ff_vdpau_mpeg4_decode_picture(s, s->gb.buffer, s->gb.buffer_end - s->gb.buffer);
goto frame_end;
}
if (avctx->hwaccel) {
- if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0)
+ if (avctx->hwaccel->start_frame(avctx, s->gb.buffer, s->gb.buffer_end - s->gb.buffer) < 0)
return -1;
}
@@ -667,6 +667,7 @@ retry:
s->error_status_table[s->mb_num-1]= AC_ERROR|DC_ERROR|MV_ERROR;
}
+frame_end:
/* divx 5.01+ bistream reorder stuff */
if(s->codec_id==CODEC_ID_MPEG4 && s->bitstream_buffer_size==0 && s->divx_packed){
int current_pos= get_bits_count(&s->gb)>>3;
@@ -701,7 +702,6 @@ retry:
intrax8_decoded:
ff_er_frame_end(s);
-frame_end:
if (avctx->hwaccel) {
if (avctx->hwaccel->end_frame(avctx) < 0)
return -1;
diff --git a/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/vdpau.c b/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/vdpau.c
index 47e431ff1e..a6d903457e 100644
--- a/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/vdpau.c
+++ b/xbmc/cores/dvdplayer/Codecs/ffmpeg/libavcodec/vdpau.c
@@ -318,6 +318,10 @@ void ff_vdpau_mpeg4_decode_picture(MpegEncContext *s, const uint8_t *buf,
assert(render);
/* fill VdpPictureInfoMPEG4Part2 struct */
+ render->info.mpeg4.trd[0] = s->pp_time;
+ render->info.mpeg4.trb[0] = s->pb_time;
+ render->info.mpeg4.trd[1] = s->pp_field_time >> 2;
+ render->info.mpeg4.trb[1] = s->pb_field_time >> 2;
render->info.mpeg4.vop_time_increment_resolution = s->avctx->time_base.den;
render->info.mpeg4.vop_coding_type = 0;
render->info.mpeg4.vop_fcode_forward = s->f_code;