linux/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Broadcom BM2835 V4L2 driver
   4 *
   5 * Copyright © 2013 Raspberry Pi (Trading) Ltd.
   6 *
   7 * Authors: Vincent Sanders @ Collabora
   8 *          Dave Stevenson @ Broadcom
   9 *              (now dave.stevenson@raspberrypi.org)
  10 *          Simon Mellor @ Broadcom
  11 *          Luke Diamand @ Broadcom
  12 */
  13
  14#ifndef MMAL_MSG_FORMAT_H
  15#define MMAL_MSG_FORMAT_H
  16
  17#include "mmal-msg-common.h"
  18
  19/* MMAL_ES_FORMAT_T */
  20
  21struct mmal_audio_format {
  22        u32 channels;           /* Number of audio channels */
  23        u32 sample_rate;        /* Sample rate */
  24
  25        u32 bits_per_sample;    /* Bits per sample */
  26        u32 block_align;        /* Size of a block of data */
  27};
  28
  29struct mmal_video_format {
  30        u32 width;              /* Width of frame in pixels */
  31        u32 height;             /* Height of frame in rows of pixels */
  32        struct mmal_rect crop;  /* Visible region of the frame */
  33        struct mmal_rational frame_rate;        /* Frame rate */
  34        struct mmal_rational par;               /* Pixel aspect ratio */
  35
  36        /*
  37         * FourCC specifying the color space of the video stream. See the
  38         * MmalColorSpace "pre-defined color spaces" for some examples.
  39         */
  40        u32 color_space;
  41};
  42
  43struct mmal_subpicture_format {
  44        u32 x_offset;
  45        u32 y_offset;
  46};
  47
  48union mmal_es_specific_format {
  49        struct mmal_audio_format audio;
  50        struct mmal_video_format video;
  51        struct mmal_subpicture_format subpicture;
  52};
  53
  54/* Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
  55struct mmal_es_format_local {
  56        u32 type;       /* enum mmal_es_type */
  57
  58        u32 encoding;   /* FourCC specifying encoding of the elementary
  59                         * stream.
  60                         */
  61        u32 encoding_variant;   /* FourCC specifying the specific
  62                                 * encoding variant of the elementary
  63                                 * stream.
  64                                 */
  65
  66        union mmal_es_specific_format *es;      /* Type specific
  67                                                 * information for the
  68                                                 * elementary stream
  69                                                 */
  70
  71        u32 bitrate;    /* Bitrate in bits per second */
  72        u32 flags;      /* Flags describing properties of the elementary
  73                         * stream.
  74                         */
  75
  76        u32 extradata_size;     /* Size of the codec specific data */
  77        u8  *extradata;         /* Codec specific data */
  78};
  79
  80/* Remote definition of an elementary stream format (MMAL_ES_FORMAT_T) */
  81struct mmal_es_format {
  82        u32 type;       /* enum mmal_es_type */
  83
  84        u32 encoding;   /* FourCC specifying encoding of the elementary
  85                         * stream.
  86                         */
  87        u32 encoding_variant;   /* FourCC specifying the specific
  88                                 * encoding variant of the elementary
  89                                 * stream.
  90                                 */
  91
  92        u32 es; /* Type specific
  93                 * information for the
  94                 * elementary stream
  95                 */
  96
  97        u32 bitrate;    /* Bitrate in bits per second */
  98        u32 flags;      /* Flags describing properties of the elementary
  99                         * stream.
 100                         */
 101
 102        u32 extradata_size;     /* Size of the codec specific data */
 103        u32 extradata;          /* Codec specific data */
 104};
 105
 106#endif /* MMAL_MSG_FORMAT_H */
 107