Loading...
Searching...
No Matches
dirac.h
Go to the documentation of this file.
/*
* Copyright (C) 2007 Marco Gerards <marco@gnu.org>
* Copyright (C) 2009 David Conrad
* Copyright (C) 2011 Jordi Ortiz
*
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* FFmpeg is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with FFmpeg; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCODEC_DIRAC_H
#define AVCODEC_DIRAC_H
/**
* @file
* Interface to Dirac Decoder/Encoder
* @author Marco Gerards <marco@gnu.org>
* @author David Conrad
* @author Jordi Ortiz
*/
#include <stddef.h>
#include <stdint.h>
#include "libavutil/pixfmt.h"
#include "libavutil/rational.h"
/**
* The spec limits the number of wavelet decompositions to 4 for both
* level 1 (VC-2) and 128 (long-gop default).
* 5 decompositions is the maximum before >16-bit buffers are needed.
* Schroedinger allows this for DD 9,7 and 13,7 wavelets only, limiting
* the others to 4 decompositions (or 3 for the fidelity filter).
*
* We use this instead of MAX_DECOMPOSITIONS to save some memory.
*/
#define MAX_DWT_LEVELS 5
/**
* Parse code values:
*
* Dirac Specification ->
* 9.6.1 Table 9.1
*
* VC-2 Specification ->
* 10.4.1 Table 10.1
*/
enum DiracParseCodes {
DIRAC_PCODE_SEQ_HEADER = 0x00,
DIRAC_PCODE_END_SEQ = 0x10,
DIRAC_PCODE_AUX = 0x20,
DIRAC_PCODE_PAD = 0x30,
DIRAC_PCODE_PICTURE_CODED = 0x08,
DIRAC_PCODE_PICTURE_RAW = 0x48,
DIRAC_PCODE_PICTURE_LOW_DEL = 0xC8,
DIRAC_PCODE_PICTURE_HQ = 0xE8,
DIRAC_PCODE_INTER_NOREF_CO1 = 0x0A,
DIRAC_PCODE_INTER_NOREF_CO2 = 0x09,
DIRAC_PCODE_INTER_REF_CO1 = 0x0D,
DIRAC_PCODE_INTER_REF_CO2 = 0x0E,
DIRAC_PCODE_INTRA_REF_CO = 0x0C,
DIRAC_PCODE_INTRA_REF_RAW = 0x4C,
DIRAC_PCODE_INTRA_REF_PICT = 0xCC,
DIRAC_PCODE_MAGIC = 0x42424344,
};
typedef struct DiracVersionInfo {
int major;
int minor;
} DiracVersionInfo;
typedef struct AVDiracSeqHeader {
unsigned width;
unsigned height;
uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
uint8_t interlaced;
uint8_t top_field_first;
uint8_t frame_rate_index; ///< index into dirac_frame_rate[]
uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[]
uint16_t clean_width;
uint16_t clean_height;
uint16_t clean_left_offset;
uint16_t clean_right_offset;
uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[]
uint8_t color_spec_index; ///< index into dirac_color_spec_presets[]
int profile;
int level;
AVRational framerate;
AVRational sample_aspect_ratio;
enum AVPixelFormat pix_fmt;
enum AVColorRange color_range;
enum AVColorPrimaries color_primaries;
enum AVColorTransferCharacteristic color_trc;
enum AVColorSpace colorspace;
DiracVersionInfo version;
int bit_depth;
} AVDiracSeqHeader;
/**
* Parse a Dirac sequence header.
*
* @param dsh this function will allocate and fill an AVDiracSeqHeader struct
* and write it into this pointer. The caller must free it with
* av_free().
* @param buf the data buffer
* @param buf_size the size of the data buffer in bytes
* @param log_ctx if non-NULL, this function will log errors here
* @return 0 on success, a negative AVERROR code on failure
*/
int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh,
const uint8_t *buf, size_t buf_size,
void *log_ctx);
#endif /* AVCODEC_DIRAC_H */
av_dirac_parse_sequence_header
int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh, const uint8_t *buf, size_t buf_size, void *log_ctx)
Parse a Dirac sequence header.
DiracParseCodes
DiracParseCodes
Parse code values:
Definition dirac.h:61
DIRAC_PCODE_PICTURE_CODED
@ DIRAC_PCODE_PICTURE_CODED
Definition dirac.h:66
DIRAC_PCODE_AUX
@ DIRAC_PCODE_AUX
Definition dirac.h:64
DIRAC_PCODE_INTER_NOREF_CO2
@ DIRAC_PCODE_INTER_NOREF_CO2
Definition dirac.h:71
DIRAC_PCODE_INTER_REF_CO1
@ DIRAC_PCODE_INTER_REF_CO1
Definition dirac.h:72
DIRAC_PCODE_INTRA_REF_PICT
@ DIRAC_PCODE_INTRA_REF_PICT
Definition dirac.h:76
DIRAC_PCODE_INTER_NOREF_CO1
@ DIRAC_PCODE_INTER_NOREF_CO1
Definition dirac.h:70
DIRAC_PCODE_PICTURE_LOW_DEL
@ DIRAC_PCODE_PICTURE_LOW_DEL
Definition dirac.h:68
DIRAC_PCODE_END_SEQ
@ DIRAC_PCODE_END_SEQ
Definition dirac.h:63
DIRAC_PCODE_MAGIC
@ DIRAC_PCODE_MAGIC
Definition dirac.h:77
DIRAC_PCODE_PICTURE_RAW
@ DIRAC_PCODE_PICTURE_RAW
Definition dirac.h:67
DIRAC_PCODE_INTER_REF_CO2
@ DIRAC_PCODE_INTER_REF_CO2
Definition dirac.h:73
DIRAC_PCODE_INTRA_REF_CO
@ DIRAC_PCODE_INTRA_REF_CO
Definition dirac.h:74
DIRAC_PCODE_SEQ_HEADER
@ DIRAC_PCODE_SEQ_HEADER
Definition dirac.h:62
DIRAC_PCODE_INTRA_REF_RAW
@ DIRAC_PCODE_INTRA_REF_RAW
Definition dirac.h:75
DIRAC_PCODE_PAD
@ DIRAC_PCODE_PAD
Definition dirac.h:65
DIRAC_PCODE_PICTURE_HQ
@ DIRAC_PCODE_PICTURE_HQ
Definition dirac.h:69
pixfmt.h
pixel format definitions
AVColorRange
AVColorRange
Visual content value range.
Definition pixfmt.h:651
AVPixelFormat
AVPixelFormat
Pixel format.
Definition pixfmt.h:71
AVColorPrimaries
AVColorPrimaries
Chromaticity coordinates of the source primaries.
Definition pixfmt.h:555
AVColorTransferCharacteristic
AVColorTransferCharacteristic
Color Transfer Characteristic.
Definition pixfmt.h:580
AVColorSpace
AVColorSpace
YUV colorspace type.
Definition pixfmt.h:609
rational.h
Utilties for rational number calculation.
AVDiracSeqHeader
Definition dirac.h:85
AVDiracSeqHeader::bit_depth
int bit_depth
Definition dirac.h:117
AVDiracSeqHeader::version
DiracVersionInfo version
Definition dirac.h:116
AVDiracSeqHeader::clean_right_offset
uint16_t clean_right_offset
Definition dirac.h:99
AVDiracSeqHeader::top_field_first
uint8_t top_field_first
Definition dirac.h:91
AVDiracSeqHeader::chroma_format
uint8_t chroma_format
0: 444 1: 422 2: 420
Definition dirac.h:88
AVDiracSeqHeader::color_primaries
enum AVColorPrimaries color_primaries
Definition dirac.h:112
AVDiracSeqHeader::pixel_range_index
uint8_t pixel_range_index
index into dirac_pixel_range_presets[]
Definition dirac.h:101
AVDiracSeqHeader::height
unsigned height
Definition dirac.h:87
AVDiracSeqHeader::color_range
enum AVColorRange color_range
Definition dirac.h:111
AVDiracSeqHeader::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition dirac.h:108
AVDiracSeqHeader::level
int level
Definition dirac.h:105
AVDiracSeqHeader::color_spec_index
uint8_t color_spec_index
index into dirac_color_spec_presets[]
Definition dirac.h:102
AVDiracSeqHeader::width
unsigned width
Definition dirac.h:86
AVDiracSeqHeader::colorspace
enum AVColorSpace colorspace
Definition dirac.h:114
AVDiracSeqHeader::clean_height
uint16_t clean_height
Definition dirac.h:97
AVDiracSeqHeader::color_trc
enum AVColorTransferCharacteristic color_trc
Definition dirac.h:113
AVDiracSeqHeader::pix_fmt
enum AVPixelFormat pix_fmt
Definition dirac.h:110
AVDiracSeqHeader::frame_rate_index
uint8_t frame_rate_index
index into dirac_frame_rate[]
Definition dirac.h:93
AVDiracSeqHeader::aspect_ratio_index
uint8_t aspect_ratio_index
index into dirac_aspect_ratio[]
Definition dirac.h:94
AVDiracSeqHeader::interlaced
uint8_t interlaced
Definition dirac.h:90
AVDiracSeqHeader::clean_left_offset
uint16_t clean_left_offset
Definition dirac.h:98
AVDiracSeqHeader::clean_width
uint16_t clean_width
Definition dirac.h:96
AVDiracSeqHeader::framerate
AVRational framerate
Definition dirac.h:107
AVDiracSeqHeader::profile
int profile
Definition dirac.h:104
AVRational
Rational number (pair of numerator and denominator).
Definition rational.h:58
DiracVersionInfo
Definition dirac.h:80
DiracVersionInfo::major
int major
Definition dirac.h:81
DiracVersionInfo::minor
int minor
Definition dirac.h:82