1098ca2bdSWarner Losh /*- 2718cf2ccSPedro F. Giffuni * SPDX-License-Identifier: BSD-4-Clause 3718cf2ccSPedro F. Giffuni * 477ee030bSHidetoshi Shimokawa * Copyright (c) 2003 Hidetoshi Shimokawa 577ee030bSHidetoshi Shimokawa * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa 63c60ba66SKatsushi Kobayashi * All rights reserved. 73c60ba66SKatsushi Kobayashi * 83c60ba66SKatsushi Kobayashi * Redistribution and use in source and binary forms, with or without 93c60ba66SKatsushi Kobayashi * modification, are permitted provided that the following conditions 103c60ba66SKatsushi Kobayashi * are met: 113c60ba66SKatsushi Kobayashi * 1. Redistributions of source code must retain the above copyright 123c60ba66SKatsushi Kobayashi * notice, this list of conditions and the following disclaimer. 133c60ba66SKatsushi Kobayashi * 2. Redistributions in binary form must reproduce the above copyright 143c60ba66SKatsushi Kobayashi * notice, this list of conditions and the following disclaimer in the 153c60ba66SKatsushi Kobayashi * documentation and/or other materials provided with the distribution. 163c60ba66SKatsushi Kobayashi * 3. All advertising materials mentioning features or use of this software 173c60ba66SKatsushi Kobayashi * must display the acknowledgement as bellow: 183c60ba66SKatsushi Kobayashi * 193c60ba66SKatsushi Kobayashi * This product includes software developed by K. Kobayashi and H. Shimokawa 203c60ba66SKatsushi Kobayashi * 213c60ba66SKatsushi Kobayashi * 4. The name of the author may not be used to endorse or promote products 223c60ba66SKatsushi Kobayashi * derived from this software without specific prior written permission. 233c60ba66SKatsushi Kobayashi * 243c60ba66SKatsushi Kobayashi * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 253c60ba66SKatsushi Kobayashi * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 263c60ba66SKatsushi Kobayashi * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 273c60ba66SKatsushi Kobayashi * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 283c60ba66SKatsushi Kobayashi * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 293c60ba66SKatsushi Kobayashi * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 303c60ba66SKatsushi Kobayashi * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 313c60ba66SKatsushi Kobayashi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 323c60ba66SKatsushi Kobayashi * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 333c60ba66SKatsushi Kobayashi * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 343c60ba66SKatsushi Kobayashi * POSSIBILITY OF SUCH DAMAGE. 353c60ba66SKatsushi Kobayashi * 363c60ba66SKatsushi Kobayashi * 373c60ba66SKatsushi Kobayashi */ 385364715aSHidetoshi Shimokawa 395364715aSHidetoshi Shimokawa #define DV_BROADCAST_ON (1<<30) 405364715aSHidetoshi Shimokawa #define oMPR 0x900 415364715aSHidetoshi Shimokawa #define oPCR 0x904 425364715aSHidetoshi Shimokawa #define iMPR 0x980 435364715aSHidetoshi Shimokawa #define iPCR 0x984 445364715aSHidetoshi Shimokawa 453c60ba66SKatsushi Kobayashi struct ciphdr { 4677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 4703161bbcSDoug Rabson uint8_t eoh0:1, /* 0 */ 4877ee030bSHidetoshi Shimokawa form0:1, /* 0 */ 4977ee030bSHidetoshi Shimokawa src:6; 5077ee030bSHidetoshi Shimokawa #else 5103161bbcSDoug Rabson uint8_t src:6, 52d0035474SHidetoshi Shimokawa form0:1, /* 0 */ 53d0035474SHidetoshi Shimokawa eoh0:1; /* 0 */ 5477ee030bSHidetoshi Shimokawa #endif 5503161bbcSDoug Rabson uint8_t len; 5677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 5703161bbcSDoug Rabson uint8_t fn:2, 5877ee030bSHidetoshi Shimokawa qpc:3, 5977ee030bSHidetoshi Shimokawa sph:1, 6077ee030bSHidetoshi Shimokawa :2; 6177ee030bSHidetoshi Shimokawa #else 6203161bbcSDoug Rabson uint8_t :2, 63d0035474SHidetoshi Shimokawa sph:1, 64d0035474SHidetoshi Shimokawa qpc:3, 65cd1f52feSHidetoshi Shimokawa fn:2; 6677ee030bSHidetoshi Shimokawa #endif 6703161bbcSDoug Rabson uint8_t dbc; 6877ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 6903161bbcSDoug Rabson uint8_t eoh1:1, /* 1 */ 7077ee030bSHidetoshi Shimokawa form1:1, /* 0 */ 7177ee030bSHidetoshi Shimokawa fmt:6; 7277ee030bSHidetoshi Shimokawa #else 7303161bbcSDoug Rabson uint8_t fmt:6, 74d0035474SHidetoshi Shimokawa form1:1, /* 0 */ 75d0035474SHidetoshi Shimokawa eoh1:1; /* 1 */ 7677ee030bSHidetoshi Shimokawa #endif 7777ee030bSHidetoshi Shimokawa #define CIP_FMT_DVCR 0 7877ee030bSHidetoshi Shimokawa #define CIP_FMT_MPEG (1<<5) 79d0035474SHidetoshi Shimokawa union { 80d0035474SHidetoshi Shimokawa struct { 8177ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 8203161bbcSDoug Rabson uint8_t fs:1, /* 50/60 field system 8377ee030bSHidetoshi Shimokawa NTSC/PAL */ 8477ee030bSHidetoshi Shimokawa stype:5, 8577ee030bSHidetoshi Shimokawa :2; 8677ee030bSHidetoshi Shimokawa #else 8703161bbcSDoug Rabson uint8_t :2, 88d0035474SHidetoshi Shimokawa stype:5, 8977ee030bSHidetoshi Shimokawa fs:1; /* 50/60 field system 9077ee030bSHidetoshi Shimokawa NTSC/PAL */ 9177ee030bSHidetoshi Shimokawa #endif 92d0035474SHidetoshi Shimokawa #define CIP_STYPE_SD 0 93d0035474SHidetoshi Shimokawa #define CIP_STYPE_SDL 1 94d0035474SHidetoshi Shimokawa #define CIP_STYPE_HD 2 9503161bbcSDoug Rabson uint16_t cyc:16; /* take care of byte order! */ 96d0035474SHidetoshi Shimokawa } __attribute__ ((packed)) dv; 9703161bbcSDoug Rabson uint8_t bytes[3]; 98d0035474SHidetoshi Shimokawa } fdf; 99d0035474SHidetoshi Shimokawa 1003c60ba66SKatsushi Kobayashi }; 1013c60ba66SKatsushi Kobayashi struct dvdbc { 10277ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 10303161bbcSDoug Rabson uint8_t sct:3, /* Section type */ 10477ee030bSHidetoshi Shimokawa :1, /* Reserved */ 10577ee030bSHidetoshi Shimokawa arb:4; /* Arbitrary bit */ 10677ee030bSHidetoshi Shimokawa #else 10703161bbcSDoug Rabson uint8_t arb:4, /* Arbitrary bit */ 108d0035474SHidetoshi Shimokawa :1, /* Reserved */ 109d0035474SHidetoshi Shimokawa sct:3; /* Section type */ 11077ee030bSHidetoshi Shimokawa #endif 111d0035474SHidetoshi Shimokawa #define DV_SCT_HEADER 0 112d0035474SHidetoshi Shimokawa #define DV_SCT_SUBCODE 1 113d0035474SHidetoshi Shimokawa #define DV_SCT_VAUX 2 114d0035474SHidetoshi Shimokawa #define DV_SCT_AUDIO 3 115d0035474SHidetoshi Shimokawa #define DV_SCT_VIDEO 4 11677ee030bSHidetoshi Shimokawa #if BYTE_ORDER == BIG_ENDIAN 11703161bbcSDoug Rabson uint8_t dseq:4, /* DIF sequence number */ 11877ee030bSHidetoshi Shimokawa fsc:1, /* ID of a DIF block in each channel */ 11977ee030bSHidetoshi Shimokawa :3; 12077ee030bSHidetoshi Shimokawa #else 12103161bbcSDoug Rabson uint8_t :3, 122d0035474SHidetoshi Shimokawa fsc:1, /* ID of a DIF block in each channel */ 123d0035474SHidetoshi Shimokawa dseq:4; /* DIF sequence number */ 12477ee030bSHidetoshi Shimokawa #endif 12503161bbcSDoug Rabson uint8_t dbn; /* DIF block number */ 12603161bbcSDoug Rabson uint8_t payload[77]; 127d0035474SHidetoshi Shimokawa #define DV_DSF_12 0x80 /* PAL: payload[0] in Header DIF */ 1283c60ba66SKatsushi Kobayashi }; 129