[MPlayer-cvslog] r35241 - trunk/libmpcodecs/vd_hmblck.c

iive subversion at mplayerhq.hu
Thu Oct 11 23:50:18 CEST 2012


Author: iive
Date: Thu Oct 11 23:50:18 2012
New Revision: 35241

Log:
Remove nv12/nv21 decoding from vd_hmblck.

The codecs.conf doesn't list nv12/nv21 in the hmblck section, 
so the hmblck is never actually used for decoding them.
Instead these pixel formats are passed through rawnv12/21 (vd_raw).
They can be converted to yv12 by vf_scale.

When swscale support hm12 pixel format, this decoder could be completely
removed.

Modified:
   trunk/libmpcodecs/vd_hmblck.c

Modified: trunk/libmpcodecs/vd_hmblck.c
==============================================================================
--- trunk/libmpcodecs/vd_hmblck.c	Thu Oct 11 18:39:30 2012	(r35240)
+++ trunk/libmpcodecs/vd_hmblck.c	Thu Oct 11 23:50:18 2012	(r35241)
@@ -25,7 +25,7 @@
 #include "vd_internal.h"
 
 static const vd_info_t info = {
-	"Hauppauge Macroblock/NV12/NV21 Decoder",
+	"Hauppauge Macroblock Decoder",
 	"hmblck",
 	"Alex <d18c7db at hotmail.com>, A'rpi, Alex Beregszaszi",
 	"Alex <d18c7db at hotmail.com>",
@@ -73,41 +73,6 @@ static void de_macro_uv(unsigned char* d
 }
 
 /*************************************************************************
- * convert a nv12 buffer to yv12
- */
-static int nv12_to_yv12(unsigned char *data, int len, mp_image_t* mpi, int swapped) {
-    unsigned int Y_size  = mpi->width * mpi->height;
-    unsigned int UV_size = mpi->chroma_width * mpi->chroma_height;
-    unsigned int idx;
-    unsigned char *dst_Y = mpi->planes[0];
-    unsigned char *dst_U = mpi->planes[1];
-    unsigned char *dst_V = mpi->planes[2];
-    unsigned char *src   = data + Y_size;
-
-    // sanity check raw stream
-    if ( (len != (Y_size + (UV_size<<1))) ) {
-        mp_msg(MSGT_DECVIDEO, MSGL_ERR,
-               "hmblck: Image size inconsistent with data size.\n");
-        return 0;
-    }
-    if (mpi->num_planes != 3) {
-        mp_msg(MSGT_DECVIDEO,MSGL_ERR,
-               "hmblck: Incorrect number of image planes.\n");
-        return 0;
-    }
-
-    // luma data is easy, just copy it
-    memcpy(dst_Y, data, Y_size);
-
-    // chroma data is interlaced UVUV... so deinterlace it
-    for(idx=0; idx<UV_size; idx++ ) {
-        *(dst_U + idx) = *(src + (idx<<1) + (swapped ? 1 : 0));
-        *(dst_V + idx) = *(src + (idx<<1) + (swapped ? 0 : 1));
-    }
-    return 1;
-}
-
-/*************************************************************************
  * set/get/query special features/parameters
  */
 static int control(sh_video_t *sh,int cmd, void *arg,...){
@@ -136,15 +101,10 @@ static mp_image_t* decode(sh_video_t *sh
         sh->disp_w, sh->disp_h);
     if(!mpi) return NULL;
 
-    if(sh->format == IMGFMT_HM12) {
-        //if(!de_macro(sh, data, len, flags, mpi)) return NULL;
-	de_macro_y(mpi->planes[0],data,mpi->stride[0],mpi->w,mpi->h);
-	de_macro_uv(mpi->planes[1],mpi->planes[2],
+    de_macro_y(mpi->planes[0],data,mpi->stride[0],mpi->w,mpi->h);
+    de_macro_uv(mpi->planes[1],mpi->planes[2],
                     (unsigned char *)data+mpi->w*mpi->h,mpi->stride[1],
                     mpi->w/2,mpi->h/2);
-    } else {
-	if(!nv12_to_yv12(data, len, mpi,(sh->format == IMGFMT_NV21))) return NULL;
-    }
 
     return mpi;
 }


More information about the MPlayer-cvslog mailing list