summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vd_ffmpeg.c
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-12-22 17:26:19 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-12-22 17:26:19 +0000
commit2e1298c035cba585b328d57bba0eb3a206f5b5f8 (patch)
treed83ca9629012449b403cb851142ea661c479c44c /libmpcodecs/vd_ffmpeg.c
parentc54390d32339b315eeaeaf0ef35f6cb6a973b11b (diff)
downloadmpv-2e1298c035cba585b328d57bba0eb3a206f5b5f8.tar.bz2
mpv-2e1298c035cba585b328d57bba0eb3a206f5b5f8.tar.xz
set top_field first for lavc decoding and add MP_IMGFIELD_INTERLACED
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11670 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/vd_ffmpeg.c')
-rw-r--r--libmpcodecs/vd_ffmpeg.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index dcd0b16d88..3dea4d1d24 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -253,6 +253,8 @@ static int init(sh_video_t *sh){
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|| sh->format == mmioFOURCC('R', 'V', '1', '3')
|| sh->format == mmioFOURCC('R', 'V', '2', '0')
+ || sh->format == mmioFOURCC('R', 'V', '3', '0')
+ || sh->format == mmioFOURCC('R', 'V', '4', '0')
){
avctx->extradata_size= 8;
avctx->extradata = malloc(avctx->extradata_size);
@@ -680,7 +682,9 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
// if(sh->ds->demuxer->type == DEMUXER_TYPE_REAL){
if( sh->format == mmioFOURCC('R', 'V', '1', '0')
|| sh->format == mmioFOURCC('R', 'V', '1', '3')
- || sh->format == mmioFOURCC('R', 'V', '2', '0'))
+ || sh->format == mmioFOURCC('R', 'V', '2', '0')
+ || sh->format == mmioFOURCC('R', 'V', '3', '0')
+ || sh->format == mmioFOURCC('R', 'V', '4', '0'))
if(sh->bih->biSize==sizeof(*sh->bih)+8){
int i;
dp_hdr_t *hdr= (dp_hdr_t*)data;
@@ -700,7 +704,6 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
ret = avcodec_decode_video(avctx, pic,
&got_picture, data, len);
dr1= ctx->do_dr1;
-
if(ret<0) mp_msg(MSGT_DECVIDEO,MSGL_WARN, "Error while decoding frame!\n");
//printf("repeat: %d\n", pic->repeat_pict);
//-- vstats generation
@@ -819,6 +822,11 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
#if LIBAVCODEC_BUILD >= 4664
mpi->qscale_type= pic->qscale_type;
#endif
+#if LIBAVCODEC_BUILD >= 4697
+ mpi->fields = MP_IMGFIELD_ORDERED;
+ if(pic->interlaced_frame) mpi->fields |= MP_IMGFIELD_INTERLACED;
+ if(pic->top_field_first ) mpi->fields |= MP_IMGFIELD_TOP_FIRST;
+#endif
return mpi;
}