From patchwork Sat Mar 7 01:31:41 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Walls X-Patchwork-Id: 10438 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n271cKfb031821 for ; Sat, 7 Mar 2009 01:38:21 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751164AbZCGBfe (ORCPT ); Fri, 6 Mar 2009 20:35:34 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753480AbZCGBfe (ORCPT ); Fri, 6 Mar 2009 20:35:34 -0500 Received: from mail1.radix.net ([207.192.128.31]:62340 "EHLO mail1.radix.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751164AbZCGBfd (ORCPT ); Fri, 6 Mar 2009 20:35:33 -0500 Received: from [192.168.1.2] (01-060.155.popsite.net [66.217.131.60]) (authenticated bits=0) by mail1.radix.net (8.13.4/8.13.4) with ESMTP id n271VFWj025027; Fri, 6 Mar 2009 20:31:16 -0500 (EST) Subject: [RFC] API changes for V4L2_MPEG_SLICED_VBI_FMT_IVTV definitions (Re: [PULL] http://linuxtv.org/hg/~awalls/cx18) From: Andy Walls To: Hans Verkuil Cc: linux-media@vger.kernel.org, ivtv-devel@ivtvdriver.org In-Reply-To: <200903061541.21079.hverkuil@xs4all.nl> References: <1235963095.10699.30.camel@morgan.walls.org> <20090303215040.12d7a839@pedra.chehab.org> <1236310774.3073.50.camel@palomino.walls.org> <200903061541.21079.hverkuil@xs4all.nl> Date: Fri, 06 Mar 2009 20:31:41 -0500 Message-Id: <1236389501.3068.10.camel@palomino.walls.org> Mime-Version: 1.0 X-Mailer: Evolution 2.24.1 (2.24.1-2.fc10) Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org On Fri, 2009-03-06 at 15:41 +0100, Hans Verkuil wrote: > On Friday 06 March 2009 04:39:34 Andy Walls wrote: > > Yes, they should be exported to userspace as well, so apps like MythTV > > don't have to keep their own copies as well. I'm going to work on a > > V4L2 spec change to add structures and defines for the packets indicated > > by V4L2_MPEG_STREAM_VBI_FMT_IVTV, and then add it to some API header. > > Maybe in linux/include/linux/videodev2.h with all the other VBI data > > formats. > > > > Unless someone really disagrees. > > These VBI defines should be moved to videodev2.h. In hindsight this should > never have been added to ivtv.h. Originally only ivtv used this, but now > cx18 does as well, and in theory any MPEG encoder device can use it. Hans, Mauro, and whoever: Before I get too far down the road of writing the spec modifications and perhaps modifying drivers, in the diff below: 1. Are the modifications to the headers acceptable? 2. Are they correct? (I *think* they are.) Regards, Andy Acked-by: Hans Verkuil --- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff -r 5361470b10f4 linux/include/linux/ivtv.h --- a/linux/include/linux/ivtv.h Sun Mar 01 21:10:07 2009 -0500 +++ b/linux/include/linux/ivtv.h Fri Mar 06 20:27:20 2009 -0500 @@ -60,10 +60,10 @@ #define IVTV_IOC_DMA_FRAME _IOW ('V', BASE_VIDIOC_PRIVATE+0, struct ivtv_dma_frame) -/* These are the VBI types as they appear in the embedded VBI private packets. */ -#define IVTV_SLICED_TYPE_TELETEXT_B (1) -#define IVTV_SLICED_TYPE_CAPTION_525 (4) -#define IVTV_SLICED_TYPE_WSS_625 (5) -#define IVTV_SLICED_TYPE_VPS (7) +/* Deprecated defines: applications should use the defines from videodev2.h */ +#define IVTV_SLICED_TYPE_TELETEXT_B V4L2_MPEG_VBI_IVTV_TELETEXT_B +#define IVTV_SLICED_TYPE_CAPTION_525 V4L2_MPEG_VBI_IVTV_CAPTION_525 +#define IVTV_SLICED_TYPE_WSS_625 V4L2_MPEG_VBI_IVTV_WSS_625 +#define IVTV_SLICED_TYPE_VPS V4L2_MPEG_VBI_IVTV_VPS #endif /* _LINUX_IVTV_H */ diff -r 5361470b10f4 linux/include/linux/videodev2.h --- a/linux/include/linux/videodev2.h Sun Mar 01 21:10:07 2009 -0500 +++ b/linux/include/linux/videodev2.h Fri Mar 06 20:27:20 2009 -0500 @@ -1348,6 +1348,53 @@ }; /* + * Sliced VBI data inserted into MPEG Streams + */ + +/* + * V4L2_MPEG_STREAM_VBI_FMT_IVTV: + * + * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an + * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI + * data + * + * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header + * definitions are not included here. See the MPEG-2 specifications for details + * on these headers. + */ + +/* Line type IDs */ +#define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1) +#define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4) +#define V4L2_MPEG_VBI_IVTV_WSS_625 (5) +#define V4L2_MPEG_VBI_IVTV_VPS (7) + +struct v4l2_mpeg_vbi_itv0_line { + __u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */ + __u8 data[42]; /* Sliced VBI data for the line */ +} __attribute__ ((packed)); + +struct v4l2_mpeg_vbi_itv0 { + __u32 linemask[2]; /* Bitmasks of which VBI service lines are present */ + struct v4l2_mpeg_vbi_itv0_line line[35]; +} __attribute__ ((packed)); + +struct v4l2_mpeg_vbi_ITV0 { + struct v4l2_mpeg_vbi_itv0_line line[36]; +} __attribute__ ((packed)); + +#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0" +#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0" + +struct v4l2_mpeg_vbi_fmt_ivtv { + __u8 magic[4]; + union { + struct v4l2_mpeg_vbi_itv0 itv0; + struct v4l2_mpeg_vbi_ITV0 ITV0; + }; +} __attribute__ ((packed)); + +/* * A G G R E G A T E S T R U C T U R E S */