spdifenc.c File Reference

IEC-61937 encapsulation of various formats, used by S/PDIF. More...

#include "avformat.h"
#include "avio_internal.h"
#include "spdif.h"
#include "libavcodec/ac3.h"
#include "libavcodec/dca.h"
#include "libavcodec/aacadtsdec.h"
#include "libavutil/opt.h"
Include dependency graph for spdifenc.c:

Go to the source code of this file.

Data Structures

struct  IEC61937Context
 

Macros

#define SPDIF_FLAG_BIGENDIAN   0x01
 
#define MAT_FRAME_SIZE   61424
 
#define TRUEHD_FRAME_OFFSET   2560
 
#define MAT_MIDDLE_CODE_OFFSET   -4
 

Typedefs

typedef struct IEC61937Context IEC61937Context
 

Functions

static int spdif_header_ac3 (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_header_eac3 (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_dts4_subtype (int period)
 
static int spdif_header_dts4 (AVFormatContext *s, AVPacket *pkt, int core_size, int sample_rate, int blocks)
 
static int spdif_header_dts (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_header_mpeg (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_header_aac (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_header_truehd (AVFormatContext *s, AVPacket *pkt)
 
static int spdif_write_header (AVFormatContext *s)
 
static int spdif_write_trailer (AVFormatContext *s)
 
static av_always_inline void spdif_put_16 (IEC61937Context *ctx, AVIOContext *pb, unsigned int val)
 
static int spdif_write_packet (struct AVFormatContext *s, AVPacket *pkt)
 

Variables

static const AVOption options []
 
class {
      class_name = "spdif"
 
      item_name = av_default_item_name
 
      option = options
 
      version = LIBAVUTIL_VERSION_INT
 
}; 
 
static enum IEC61937DataType mpeg_data_type [2][3]
 
AVOutputFormat ff_spdif_muxer
 

Detailed Description

IEC-61937 encapsulation of various formats, used by S/PDIF.

Author
Bartlomiej Wolowiec
Anssi Hannula
Carl Eugen Hoyos

Definition in file spdifenc.c.

Macro Definition Documentation

#define MAT_FRAME_SIZE   61424

Definition at line 390 of file spdifenc.c.

Referenced by spdif_header_truehd(), and spdif_write_header().

#define MAT_MIDDLE_CODE_OFFSET   -4

Definition at line 392 of file spdifenc.c.

Referenced by spdif_header_truehd().

#define SPDIF_FLAG_BIGENDIAN   0x01

Definition at line 79 of file spdifenc.c.

Referenced by spdif_put_16(), and spdif_write_packet().

#define TRUEHD_FRAME_OFFSET   2560

Definition at line 391 of file spdifenc.c.

Referenced by spdif_header_truehd().

Typedef Documentation

Function Documentation

static int spdif_dts4_subtype ( int  period)
static

Definition at line 150 of file spdifenc.c.

Referenced by spdif_header_dts4().

static int spdif_header_aac ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 346 of file spdifenc.c.

Referenced by spdif_write_header().

static int spdif_header_ac3 ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 102 of file spdifenc.c.

Referenced by spdif_write_header().

static int spdif_header_dts ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 240 of file spdifenc.c.

Referenced by spdif_write_header().

static int spdif_header_dts4 ( AVFormatContext s,
AVPacket pkt,
int  core_size,
int  sample_rate,
int  blocks 
)
static

Definition at line 163 of file spdifenc.c.

Referenced by spdif_header_dts().

static int spdif_header_eac3 ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 112 of file spdifenc.c.

Referenced by spdif_write_header().

static int spdif_header_mpeg ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 323 of file spdifenc.c.

Referenced by spdif_write_header().

static int spdif_header_truehd ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 394 of file spdifenc.c.

Referenced by spdif_write_header().

static av_always_inline void spdif_put_16 ( IEC61937Context ctx,
AVIOContext pb,
unsigned int  val 
)
static

Definition at line 483 of file spdifenc.c.

Referenced by spdif_write_packet().

static int spdif_write_header ( AVFormatContext s)
static

Definition at line 440 of file spdifenc.c.

static int spdif_write_packet ( struct AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 492 of file spdifenc.c.

static int spdif_write_trailer ( AVFormatContext s)
static

Definition at line 475 of file spdifenc.c.

Variable Documentation

const { ... }
class_name = "spdif"
private

Definition at line 96 of file spdifenc.c.

AVOutputFormat ff_spdif_muxer
Initial value:
= {
.name = "spdif",
.long_name = NULL_IF_CONFIG_SMALL("IEC 61937 (used on S/PDIF - IEC958)"),
.extensions = "spdif",
.priv_data_size = sizeof(IEC61937Context),
.audio_codec = AV_CODEC_ID_AC3,
.video_codec = AV_CODEC_ID_NONE,
.priv_class = &class,
}
struct IEC61937Context IEC61937Context
static int write_packet(AVFormatContext *s, AVPacket *pkt)
static int spdif_write_packet(struct AVFormatContext *s, AVPacket *pkt)
Definition: spdifenc.c:492
static int spdif_write_trailer(AVFormatContext *s)
Definition: spdifenc.c:475
static int write_trailer(AVFormatContext *s)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define AVFMT_NOTIMESTAMPS
Format does not need / have any timestamps.
Definition: avformat.h:352
static int spdif_write_header(AVFormatContext *s)
Definition: spdifenc.c:440
static int flags
Definition: cpu.c:23
static void write_header(FFV1Context *f)
Definition: ffv1enc.c:470

Definition at line 544 of file spdifenc.c.

item_name = av_default_item_name
private

Definition at line 97 of file spdifenc.c.

enum IEC61937DataType mpeg_data_type[2][3]
static
Initial value:
= {
{ IEC61937_MPEG1_LAYER1, IEC61937_MPEG1_LAYER23, IEC61937_MPEG1_LAYER23 },
}
MPEG-2, layer-1 low sampling frequency.
Definition: spdif.h:38
MPEG-1 layer 2 or 3 data or MPEG-2 without extension.
Definition: spdif.h:35
MPEG-2, layer-3 low sampling frequency.
Definition: spdif.h:40
MPEG-1 layer 1.
Definition: spdif.h:34
MPEG-2, layer-2 low sampling frequency.
Definition: spdif.h:39

Definition at line 317 of file spdifenc.c.

Referenced by spdif_header_mpeg().

option = options
private

Definition at line 98 of file spdifenc.c.

const AVOption options[]
static
Initial value:
= {
{ "spdif_flags", "IEC 61937 encapsulation flags", offsetof(IEC61937Context, spdif_flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "spdif_flags" },
{ "be", "output in big-endian format (for use as s16be)", 0, AV_OPT_TYPE_CONST, {.i64 = SPDIF_FLAG_BIGENDIAN}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "spdif_flags" },
{ "dtshd_rate", "mux complete DTS frames in HD mode at the specified IEC958 rate (in Hz, default 0=disabled)", offsetof(IEC61937Context, dtshd_rate), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 768000, AV_OPT_FLAG_ENCODING_PARAM },
{ "dtshd_fallback_time", "min secs to strip HD for after an overflow (-1: till the end, default 60)", offsetof(IEC61937Context, dtshd_fallback), AV_OPT_TYPE_INT, {.i64 = 60}, -1, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM },
{ NULL },
}
#define SPDIF_FLAG_BIGENDIAN
Definition: spdifenc.c:79
#define AV_OPT_FLAG_ENCODING_PARAM
a generic parameter which can be set by the user for muxing or encoding
Definition: opt.h:281
NULL
Definition: eval.c:55

Definition at line 87 of file spdifenc.c.

version = LIBAVUTIL_VERSION_INT
private

Definition at line 99 of file spdifenc.c.

Referenced by spdif_header_mpeg().