[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