summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-29 11:26:26 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-10-29 11:26:26 +0000
commitba8010344279ca4a2cf0374bcb7c002a15225b79 (patch)
tree6a3935d8eb7ed3f270fbc0cf441b117bc13518a3 /libmpcodecs
parentcaa57f98bd032f4b65cd5b394dbd8bd2d748eb8a (diff)
downloadmpv-ba8010344279ca4a2cf0374bcb7c002a15225b79.tar.bz2
mpv-ba8010344279ca4a2cf0374bcb7c002a15225b79.tar.xz
passing picture_type (might be usefull for postprocessing)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7958 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/mp_image.h1
-rw-r--r--libmpcodecs/vd_ffmpeg.c11
-rw-r--r--libmpcodecs/vd_libmpeg2.c11
3 files changed, 23 insertions, 0 deletions
diff --git a/libmpcodecs/mp_image.h b/libmpcodecs/mp_image.h
index 942536ce4f..8414aa47aa 100644
--- a/libmpcodecs/mp_image.h
+++ b/libmpcodecs/mp_image.h
@@ -75,6 +75,7 @@ typedef struct mp_image_s {
unsigned int stride[MP_MAX_PLANES];
int* qscale;
int qstride;
+ int pict_type; // 0->unknown, 1->I, 2->P, 3->B
int num_planes;
/* these are only used by planar formats Y,U(Cb),V(Cr) */
int chroma_width;
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c
index 56e4171c55..1908089570 100644
--- a/libmpcodecs/vd_ffmpeg.c
+++ b/libmpcodecs/vd_ffmpeg.c
@@ -630,6 +630,17 @@ static mp_image_t* decode(sh_video_t *sh,void* data,int len,int flags){
mpi->qscale=&quant_store[0][0];
mpi->qstride=MBC+1;
#endif
+
+ {
+ static int last_non_b_type= 0;
+
+ if(avctx->pict_type == B_TYPE)
+ mpi->pict_type= B_TYPE;
+ else{
+ mpi->pict_type= last_non_b_type;
+ last_non_b_type= avctx->pict_type;
+ }
+ }
return mpi;
}
diff --git a/libmpcodecs/vd_libmpeg2.c b/libmpcodecs/vd_libmpeg2.c
index 3f89c333bd..389a351028 100644
--- a/libmpcodecs/vd_libmpeg2.c
+++ b/libmpcodecs/vd_libmpeg2.c
@@ -290,5 +290,16 @@ while(current<end){
if(ret) mpi=ret;
// }
+ if(mpi){
+ static int last_non_b_type= 0;
+
+ if(picture->picture_coding_type == B_TYPE)
+ mpi->pict_type= B_TYPE;
+ else{
+ mpi->pict_type= last_non_b_type;
+ last_non_b_type= picture->picture_coding_type;
+ }
+ }
+
return mpi;
}