From patchwork Thu Jul 14 14:10:19 2005 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mike lewis X-Patchwork-Id: 11944 Received: from wproxy.gmail.com ([64.233.184.194]) by www.linuxtv.org with esmtp (Exim 4.34) id 1Dt4R8-00065t-Ia for vdr@linuxtv.org; Thu, 14 Jul 2005 16:11:38 +0200 Received: by wproxy.gmail.com with SMTP id 68so429173wri for ; Thu, 14 Jul 2005 07:11:06 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:references; b=hP2TnR23kyA0qHDPTqIl7cMBD64QHOV3Rv44cytQrwG+r0D+yLev/SqrVQHo7dS/aMPRUdfsHyke9QPMsFLcj9BN9d/dw1pfpy9peR0YwBMiHXA1J26/w0AunZVvtYEDQYkWxpQkb0loFCdjZXd51TtuIdb1R9qUqxhQBdhZNPc= Received: by 10.54.13.50 with SMTP id 50mr763007wrm; Thu, 14 Jul 2005 07:10:19 -0700 (PDT) Received: by 10.54.22.71 with HTTP; Thu, 14 Jul 2005 07:10:19 -0700 (PDT) Message-ID: Date: Thu, 14 Jul 2005 22:10:19 +0800 From: mike lewis To: Klaus Schmidinger's VDR Subject: Re: [vdr] WSS data in vdr-xine In-Reply-To: <42D2E5C6.2000407@gmx.de> Mime-Version: 1.0 References: <42D20CFC.1060003@registru.md> <42D2E5C6.2000407@gmx.de> Cc: Xine Devel X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: mike lewis , Klaus Schmidinger's VDR List-Id: Klaus Schmidinger's VDR List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 14:11:38 -0000 Status: O X-Status: X-Keywords: X-UID: 3546 > Well, in the case of vdr-xine, it's xine related, as xine has to deal > with decoding the images. xine has the possibilty to do something like > that (my patched expand post plugin makes use of it). > > Just create a post video plugin that modifies crop_top / crop_bottom of > each frame. > Ok, done. Well, just for now (and as I have no idea how to do it otherwise..) I've extended the expand plugin.. Only, I havn't had a chance to test it yet. Can you *please* comment on the code? What I'd really like to know is this: what actually are crop_top / crop_bottom? Are they the amount that is to be cropped in pixels, or are they amount which is going to be left visible? What would be an easy way to find out? Mick --- /build/xine-lib-old/src/post/planar/expand.c 2005-07-14 22:08:48.000000000 +0800 +++ /build/xine-lib/src/post/planar/expand.c 2005-07-14 21:47:53.000000000 +0800 @@ -69,6 +69,7 @@ int enable_automatic_shift; int overlay_y_offset; int centre_cut_out_mode; + int hide_wss; } expand_parameters_t; START_PARAM_DESCR(expand_parameters_t) @@ -78,6 +79,8 @@ "manually shift the overlay vertically") PARAM_ITEM(POST_PARAM_TYPE_BOOL, centre_cut_out_mode, NULL, 0, 1, 0, "cut out centered 4:3 image contained in 16:9 frame") +PARAM_ITEM(POST_PARAM_TYPE_BOOL, hide_wss, NULL, 0, 1, 0, + "cut out WSS data from the frame") END_PARAM_DESCR(expand_param_descr) typedef struct post_expand_s { @@ -89,6 +92,7 @@ int overlay_y_offset; int top_bar_height; int centre_cut_out_mode; + int hide_wss; int cropping_active; } post_expand_t; @@ -162,6 +166,7 @@ this->enable_automatic_shift = 0; this->overlay_y_offset = 0; this->centre_cut_out_mode = 0; + this->hide_wss = 0; this->cropping_active = 0; port = _x_post_intercept_video_port(&this->post, video_target[0], &input, &output); @@ -224,6 +229,7 @@ this->enable_automatic_shift = param->enable_automatic_shift; this->overlay_y_offset = param->overlay_y_offset; this->centre_cut_out_mode = param->centre_cut_out_mode; + this->hide_wss = param->hide_wss; return 1; } @@ -236,6 +242,7 @@ param->enable_automatic_shift = this->enable_automatic_shift; param->overlay_y_offset = this->overlay_y_offset; param->centre_cut_out_mode = this->centre_cut_out_mode; + param->hide_wss = this->hide_wss; return 1; } @@ -250,6 +257,8 @@ " Enable_automatic_shift: Enable automatic overlay shifting\n" " Overlay_y_offset: Manually shift the overlay vertically\n" " Centre_cut_out_mode: extracts 4:3 image contained in 16:9 frame\n" + " hide_wss: hides the WSS stream data which can be displayed as\n" + " white dots at the top or bottom of each frame\n" "\n" ); } @@ -435,7 +444,11 @@ /* get_frame() allocated an extra high frame */ frame->crop_top += (frame->next->height - frame->height) / 2; frame->crop_bottom += (frame->next->height - frame->height) / 2; + } else if (this->centre_cut_out_mode && this->hide_wss) { + frame->crop_top += (frame->height - 10) + frame->crop_bottom += (frame->height - 10) } + } _x_post_frame_copy_down(frame, frame->next);