libavformat/mpegtsenc.c File Reference

#include "libavutil/bswap.h"
#include "libavutil/crc.h"
#include "libavutil/dict.h"
#include "libavutil/mathematics.h"
#include "libavutil/opt.h"
#include "libavutil/avassert.h"
#include "libavcodec/mpegvideo.h"
#include "avformat.h"
#include "internal.h"
#include "mpegts.h"
#include "adts.h"

Go to the source code of this file.

Data Structures

struct  MpegTSSection
struct  MpegTSService
struct  MpegTSWrite
struct  MpegTSWriteStream

Defines

#define PCR_TIME_BASE   27000000
#define DEFAULT_PES_HEADER_FREQ   16
#define DEFAULT_PES_PAYLOAD_SIZE   ((DEFAULT_PES_HEADER_FREQ - 1) * 184 + 170)
#define DEFAULT_PROVIDER_NAME   "FFmpeg"
#define DEFAULT_SERVICE_NAME   "Service01"
#define SDT_RETRANS_TIME   500
#define PAT_RETRANS_TIME   100
#define PCR_RETRANS_TIME   20

Functions

static void mpegts_write_section (MpegTSSection *s, uint8_t *buf, int len)
static void put16 (uint8_t **q_ptr, int val)
static int mpegts_write_section1 (MpegTSSection *s, int tid, int id, int version, int sec_num, int last_sec_num, uint8_t *buf, int len)
static void mpegts_write_pat (AVFormatContext *s)
static void mpegts_write_pmt (AVFormatContext *s, MpegTSService *service)
static void putstr8 (uint8_t **q_ptr, const char *str)
static void mpegts_write_sdt (AVFormatContext *s)
static MpegTSServicempegts_add_service (MpegTSWrite *ts, int sid, const char *provider_name, const char *name)
static int64_t get_pcr (const MpegTSWrite *ts, AVIOContext *pb)
static void mpegts_prefix_m2ts_header (AVFormatContext *s)
static void section_write_packet (MpegTSSection *s, const uint8_t *packet)
static int mpegts_write_header (AVFormatContext *s)
static void retransmit_si_info (AVFormatContext *s, int force_pat)
static int write_pcr_bits (uint8_t *buf, int64_t pcr)
static void mpegts_insert_null_packet (AVFormatContext *s)
static void mpegts_insert_pcr_only (AVFormatContext *s, AVStream *st)
static void write_pts (uint8_t *q, int fourbits, int64_t pts)
static void set_af_flag (uint8_t *pkt, int flag)
static void extend_af (uint8_t *pkt, int size)
static uint8_tget_ts_payload_start (uint8_t *pkt)
static void mpegts_write_pes (AVFormatContext *s, AVStream *st, const uint8_t *payload, int payload_size, int64_t pts, int64_t dts, int key)
static int mpegts_write_packet_internal (AVFormatContext *s, AVPacket *pkt)
static void mpegts_write_flush (AVFormatContext *s)
static int mpegts_write_packet (AVFormatContext *s, AVPacket *pkt)
static int mpegts_write_end (AVFormatContext *s)

Variables

static const AVOption options []
static const AVClass mpegts_muxer_class
AVOutputFormat ff_mpegts_muxer


Define Documentation

#define DEFAULT_PES_HEADER_FREQ   16

Definition at line 86 of file mpegtsenc.c.

#define DEFAULT_PES_PAYLOAD_SIZE   ((DEFAULT_PES_HEADER_FREQ - 1) * 184 + 170)

Definition at line 87 of file mpegtsenc.c.

#define DEFAULT_PROVIDER_NAME   "FFmpeg"

Definition at line 204 of file mpegtsenc.c.

Referenced by mpegts_write_header().

#define DEFAULT_SERVICE_NAME   "Service01"

Definition at line 205 of file mpegtsenc.c.

Referenced by mpegts_write_header().

#define PAT_RETRANS_TIME   100

Definition at line 209 of file mpegtsenc.c.

Referenced by mpegts_write_header().

#define PCR_RETRANS_TIME   20

Definition at line 210 of file mpegtsenc.c.

Referenced by mpegts_write_header().

#define PCR_TIME_BASE   27000000

Definition at line 34 of file mpegtsenc.c.

Referenced by get_pcr(), and mpegts_write_header().

#define SDT_RETRANS_TIME   500

Definition at line 208 of file mpegtsenc.c.

Referenced by mpegts_write_header().


Function Documentation

static void extend_af ( uint8_t pkt,
int  size 
) [static]

Definition at line 774 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static int64_t get_pcr ( const MpegTSWrite ts,
AVIOContext pb 
) [static]

static uint8_t* get_ts_payload_start ( uint8_t pkt  )  [static]

Definition at line 782 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static MpegTSService* mpegts_add_service ( MpegTSWrite ts,
int  sid,
const char *  provider_name,
const char *  name 
) [static]

Definition at line 446 of file mpegtsenc.c.

Referenced by mpegts_write_header().

static void mpegts_insert_null_packet ( AVFormatContext s  )  [static]

Definition at line 702 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static void mpegts_insert_pcr_only ( AVFormatContext s,
AVStream st 
) [static]

Definition at line 718 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static void mpegts_prefix_m2ts_header ( AVFormatContext s  )  [static]

static int mpegts_write_end ( AVFormatContext s  )  [static]

Definition at line 1145 of file mpegtsenc.c.

static void mpegts_write_flush ( AVFormatContext s  )  [static]

Definition at line 1117 of file mpegtsenc.c.

Referenced by mpegts_write_end(), and mpegts_write_packet().

static int mpegts_write_header ( AVFormatContext s  )  [static]

Definition at line 490 of file mpegtsenc.c.

static int mpegts_write_packet ( AVFormatContext s,
AVPacket pkt 
) [static]

Definition at line 1135 of file mpegtsenc.c.

static int mpegts_write_packet_internal ( AVFormatContext s,
AVPacket pkt 
) [static]

Definition at line 985 of file mpegtsenc.c.

Referenced by mpegts_write_packet().

static void mpegts_write_pat ( AVFormatContext s  )  [static]

Definition at line 226 of file mpegtsenc.c.

Referenced by retransmit_si_info().

static void mpegts_write_pes ( AVFormatContext s,
AVStream st,
const uint8_t payload,
int  payload_size,
int64_t  pts,
int64_t  dts,
int  key 
) [static]

Definition at line 795 of file mpegtsenc.c.

Referenced by mpegts_write_flush(), and mpegts_write_packet_internal().

static void mpegts_write_pmt ( AVFormatContext s,
MpegTSService service 
) [static]

Definition at line 243 of file mpegtsenc.c.

Referenced by retransmit_si_info().

static void mpegts_write_sdt ( AVFormatContext s  )  [static]

Definition at line 408 of file mpegtsenc.c.

Referenced by retransmit_si_info().

static void mpegts_write_section ( MpegTSSection s,
uint8_t buf,
int  len 
) [static]

Definition at line 119 of file mpegtsenc.c.

Referenced by mpegts_write_section1().

static int mpegts_write_section1 ( MpegTSSection s,
int  tid,
int  id,
int  version,
int  sec_num,
int  last_sec_num,
uint8_t buf,
int  len 
) [static]

Definition at line 174 of file mpegtsenc.c.

Referenced by mpegts_write_pat(), mpegts_write_pmt(), and mpegts_write_sdt().

static void put16 ( uint8_t **  q_ptr,
int  val 
) [inline, static]

static void putstr8 ( uint8_t **  q_ptr,
const char *  str 
) [static]

Definition at line 392 of file mpegtsenc.c.

Referenced by mpegts_write_sdt().

static void retransmit_si_info ( AVFormatContext s,
int  force_pat 
) [static]

Definition at line 669 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static void section_write_packet ( MpegTSSection s,
const uint8_t packet 
) [static]

Definition at line 483 of file mpegtsenc.c.

Referenced by mpegts_write_header().

static void set_af_flag ( uint8_t pkt,
int  flag 
) [static]

Definition at line 758 of file mpegtsenc.c.

Referenced by mpegts_write_pes().

static int write_pcr_bits ( uint8_t buf,
int64_t  pcr 
) [static]

Definition at line 687 of file mpegtsenc.c.

Referenced by mpegts_insert_pcr_only(), and mpegts_write_pes().

static void write_pts ( uint8_t q,
int  fourbits,
int64_t  pts 
) [static]

Definition at line 743 of file mpegtsenc.c.

Referenced by mpegts_write_pes().


Variable Documentation

Initial value:

 {
    .name              = "mpegts",
    .long_name         = NULL_IF_CONFIG_SMALL("MPEG-2 transport stream format"),
    .mime_type         = "video/x-mpegts",
    .extensions        = "ts,m2t,m2ts,mts",
    .priv_data_size    = sizeof(MpegTSWrite),
    .audio_codec       = CODEC_ID_MP2,
    .video_codec       = CODEC_ID_MPEG2VIDEO,
    .write_header      = mpegts_write_header,
    .write_packet      = mpegts_write_packet,
    .write_trailer     = mpegts_write_end,
    .flags             = AVFMT_ALLOW_FLUSH,
    .priv_class        = &mpegts_muxer_class,
}

Definition at line 1171 of file mpegtsenc.c.

const AVClass mpegts_muxer_class [static]

Initial value:

 {
    .class_name     = "MPEGTS muxer",
    .item_name      = av_default_item_name,
    .option         = options,
    .version        = LIBAVUTIL_VERSION_INT,
}

Definition at line 111 of file mpegtsenc.c.

const AVOption options[] [static]

Initial value:

 {
    { "mpegts_transport_stream_id", "Set transport_stream_id field.",
      0x42, AV_OPT_TYPE_INT, {.dbl = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM},
    { "mpegts_original_network_id", "Set original_network_id field.",
      0x42, AV_OPT_TYPE_INT, {.dbl = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM},
    { "mpegts_service_id", "Set service_id field.",
      0x42, AV_OPT_TYPE_INT, {.dbl = 0x0001 }, 0x0001, 0xffff, AV_OPT_FLAG_ENCODING_PARAM},
    { "mpegts_pmt_start_pid", "Set the first pid of the PMT.",
      0x42, AV_OPT_TYPE_INT, {.dbl = 0x1000 }, 0x0010, 0x1f00, AV_OPT_FLAG_ENCODING_PARAM},
    { "mpegts_start_pid", "Set the first pid.",
      0x42, AV_OPT_TYPE_INT, {.dbl = 0x0100 }, 0x0100, 0x0f00, AV_OPT_FLAG_ENCODING_PARAM},
    {"mpegts_m2ts_mode", "Enable m2ts mode.",
        0x42, AV_OPT_TYPE_INT, {.dbl = -1 },
        -1,1, AV_OPT_FLAG_ENCODING_PARAM},
    { "muxrate", NULL, 0x42, AV_OPT_TYPE_INT, {1}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
    { "pes_payload_size", "Minimum PES packet payload in bytes",
      0x42, AV_OPT_TYPE_INT, {DEFAULT_PES_PAYLOAD_SIZE}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
    { "resend_headers", "Reemit PAT/PMT before writing the next packet",
      0x42, AV_OPT_TYPE_INT, {0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM},
    { NULL },
}

Definition at line 89 of file mpegtsenc.c.


Generated on Fri Oct 26 02:48:02 2012 for FFmpeg by  doxygen 1.5.8