Libav
Data Structures | Macros | Functions | Variables
asfenc.c File Reference
#include "libavutil/dict.h"
#include "libavutil/mathematics.h"
#include "avformat.h"
#include "avio_internal.h"
#include "internal.h"
#include "riff.h"
#include "asf.h"
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  ASFContext
 

Macros

#define ASF_INDEXED_INTERVAL   10000000
 
#define ASF_INDEX_BLOCK   600
 
#define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE   0x2
 
#define ASF_PACKET_ERROR_CORRECTION_FLAGS
 
#define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE   1
 
#define ASF_PPI_PROPERTY_FLAGS
 
#define ASF_PPI_LENGTH_TYPE_FLAGS   0
 
#define ASF_PAYLOAD_FLAGS   ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD
 
#define ASF_PPI_SEQUENCE_FIELD_SIZE   0
 
#define ASF_PPI_PACKET_LENGTH_FIELD_SIZE   0
 
#define ASF_PPI_PADDING_LENGTH_FIELD_SIZE   0
 
#define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE   1
 
#define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE   4
 
#define ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE   1
 
#define ASF_PAYLOAD_LENGTH_FIELD_SIZE   2
 
#define PACKET_HEADER_MIN_SIZE
 
#define ASF_PAYLOAD_REPLICATED_DATA_LENGTH   0x08
 
#define PAYLOAD_HEADER_SIZE_SINGLE_PAYLOAD
 
#define PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS
 
#define SINGLE_PAYLOAD_DATA_LENGTH
 
#define MULTI_PAYLOAD_CONSTANT
 
#define DATA_HEADER_SIZE   50
 
#define PREROLL_TIME   3100
 

Functions

static void put_guid (AVIOContext *s, const ff_asf_guid *g)
 
static void put_str16 (AVIOContext *s, const char *tag)
 
static int64_t put_header (AVIOContext *pb, const ff_asf_guid *g)
 
static void end_header (AVIOContext *pb, int64_t pos)
 
static void put_chunk (AVFormatContext *s, int type, int payload_length, int flags)
 
static int64_t unix_to_file_time (int ti)
 
static int32_t get_send_time (ASFContext *asf, int64_t pres_time, uint64_t *offset)
 
static int asf_write_markers (AVFormatContext *s)
 
static int asf_write_header1 (AVFormatContext *s, int64_t file_size, int64_t data_chunk_size)
 
static int asf_write_header (AVFormatContext *s)
 
static int asf_write_stream_header (AVFormatContext *s)
 
static int put_payload_parsing_info (AVFormatContext *s, unsigned sendtime, unsigned duration, int nb_payloads, int padsize)
 
static void flush_packet (AVFormatContext *s)
 
static void put_payload_header (AVFormatContext *s, ASFStream *stream, int presentation_time, int m_obj_size, int m_obj_offset, int payload_len, int flags)
 
static void put_frame (AVFormatContext *s, ASFStream *stream, AVStream *avst, int timestamp, const uint8_t *buf, int m_obj_size, int flags)
 
static int asf_write_packet (AVFormatContext *s, AVPacket *pkt)
 
static int asf_write_index (AVFormatContext *s, ASFIndex *index, uint16_t max, uint32_t count)
 
static int asf_write_trailer (AVFormatContext *s)
 

Variables

static const AVCodecTag codec_asf_bmp_tags []
 

Macro Definition Documentation

§ ASF_INDEXED_INTERVAL

#define ASF_INDEXED_INTERVAL   10000000

Definition at line 34 of file asfenc.c.

Referenced by asf_write_index().

§ ASF_INDEX_BLOCK

#define ASF_INDEX_BLOCK   600

Definition at line 35 of file asfenc.c.

Referenced by asf_write_header(), and asf_write_packet().

§ ASF_PACKET_ERROR_CORRECTION_DATA_SIZE

#define ASF_PACKET_ERROR_CORRECTION_DATA_SIZE   0x2

Definition at line 37 of file asfenc.c.

Referenced by put_payload_parsing_info().

§ ASF_PACKET_ERROR_CORRECTION_FLAGS

#define ASF_PACKET_ERROR_CORRECTION_FLAGS
Value:
ASF_PACKET_ERROR_CORRECTION_DATA_SIZE)
#define ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT
Definition: asf.h:118

Definition at line 38 of file asfenc.c.

Referenced by put_payload_parsing_info().

§ ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE

#define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE   1

Definition at line 43 of file asfenc.c.

§ ASF_PPI_PROPERTY_FLAGS

#define ASF_PPI_PROPERTY_FLAGS
Value:
ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD | \
ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE | \
ASF_PL_FLAG_STREAM_NUMBER_LENGTH_FIELD_IS_BYTE)
#define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE
Definition: asf.h:155

Definition at line 48 of file asfenc.c.

Referenced by put_payload_parsing_info().

§ ASF_PPI_LENGTH_TYPE_FLAGS

#define ASF_PPI_LENGTH_TYPE_FLAGS   0

Definition at line 54 of file asfenc.c.

Referenced by put_payload_parsing_info().

§ ASF_PAYLOAD_FLAGS

#define ASF_PAYLOAD_FLAGS   ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD

Definition at line 56 of file asfenc.c.

Referenced by put_payload_parsing_info().

§ ASF_PPI_SEQUENCE_FIELD_SIZE

#define ASF_PPI_SEQUENCE_FIELD_SIZE   0

Definition at line 68 of file asfenc.c.

§ ASF_PPI_PACKET_LENGTH_FIELD_SIZE

#define ASF_PPI_PACKET_LENGTH_FIELD_SIZE   0

Definition at line 81 of file asfenc.c.

§ ASF_PPI_PADDING_LENGTH_FIELD_SIZE

#define ASF_PPI_PADDING_LENGTH_FIELD_SIZE   0

Definition at line 94 of file asfenc.c.

§ ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE

#define ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE   1

Definition at line 98 of file asfenc.c.

§ ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE

#define ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE   4

Definition at line 117 of file asfenc.c.

§ ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE

#define ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE   1

Definition at line 124 of file asfenc.c.

§ ASF_PAYLOAD_LENGTH_FIELD_SIZE

#define ASF_PAYLOAD_LENGTH_FIELD_SIZE   2

Definition at line 140 of file asfenc.c.

§ PACKET_HEADER_MIN_SIZE

#define PACKET_HEADER_MIN_SIZE
Value:
ASF_PACKET_ERROR_CORRECTION_DATA_SIZE + \
1 + /* Length Type Flags */ \
1 + /* Property Flags */ \
ASF_PPI_PACKET_LENGTH_FIELD_SIZE + \
ASF_PPI_SEQUENCE_FIELD_SIZE + \
ASF_PPI_PADDING_LENGTH_FIELD_SIZE + \
4 + /* Send Time Field */ \
2) /* Duration Field */
#define ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE
Definition: asfenc.c:43

Definition at line 146 of file asfenc.c.

Referenced by put_frame(), and put_payload_parsing_info().

§ ASF_PAYLOAD_REPLICATED_DATA_LENGTH

#define ASF_PAYLOAD_REPLICATED_DATA_LENGTH   0x08

Definition at line 158 of file asfenc.c.

Referenced by put_payload_header().

§ PAYLOAD_HEADER_SIZE_SINGLE_PAYLOAD

#define PAYLOAD_HEADER_SIZE_SINGLE_PAYLOAD
Value:
(1 + /* Stream Number */ \
ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE + \
ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE + \
ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE + \
ASF_PAYLOAD_REPLICATED_DATA_LENGTH)

Definition at line 160 of file asfenc.c.

Referenced by put_frame().

§ PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS

#define PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS
Value:
(1 + /* Stream Number */ \
ASF_PAYLOAD_MEDIA_OBJECT_NUMBER_FIELD_SIZE + \
ASF_PAYLOAD_OFFSET_INTO_MEDIA_OBJECT_FIELD_SIZE + \
ASF_PAYLOAD_REPLICATED_DATA_LENGTH_FIELD_SIZE + \
ASF_PAYLOAD_REPLICATED_DATA_LENGTH + \
ASF_PAYLOAD_LENGTH_FIELD_SIZE)

Definition at line 167 of file asfenc.c.

Referenced by put_frame().

§ SINGLE_PAYLOAD_DATA_LENGTH

#define SINGLE_PAYLOAD_DATA_LENGTH
Value:
PACKET_HEADER_MIN_SIZE - \
PAYLOAD_HEADER_SIZE_SINGLE_PAYLOAD)
#define PACKET_SIZE
Definition: asf.h:29

Definition at line 175 of file asfenc.c.

Referenced by put_frame().

§ MULTI_PAYLOAD_CONSTANT

#define MULTI_PAYLOAD_CONSTANT
Value:
PACKET_HEADER_MIN_SIZE - \
1 - /* Payload Flags */ \
#define PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS
Definition: asfenc.c:167
#define PACKET_SIZE
Definition: asf.h:29

Definition at line 180 of file asfenc.c.

Referenced by put_frame().

§ DATA_HEADER_SIZE

#define DATA_HEADER_SIZE   50

Definition at line 186 of file asfenc.c.

Referenced by asf_write_header(), asf_write_header1(), and get_send_time().

§ PREROLL_TIME

#define PREROLL_TIME   3100

Definition at line 220 of file asfenc.c.

Referenced by asf_write_header1(), asf_write_markers(), and put_frame().

Function Documentation

§ put_guid()

static void put_guid ( AVIOContext s,
const ff_asf_guid g 
)
static

Definition at line 222 of file asfenc.c.

Referenced by asf_write_header1(), asf_write_index(), asf_write_markers(), and put_header().

§ put_str16()

static void put_str16 ( AVIOContext s,
const char *  tag 
)
static

Definition at line 228 of file asfenc.c.

Referenced by asf_write_header1().

§ put_header()

static int64_t put_header ( AVIOContext pb,
const ff_asf_guid g 
)
static

Definition at line 243 of file asfenc.c.

Referenced by asf_write_header1(), and asf_write_markers().

§ end_header()

static void end_header ( AVIOContext pb,
int64_t  pos 
)
static

Definition at line 254 of file asfenc.c.

Referenced by asf_write_header1(), and asf_write_markers().

§ put_chunk()

static void put_chunk ( AVFormatContext s,
int  type,
int  payload_length,
int  flags 
)
static

Definition at line 265 of file asfenc.c.

Referenced by asf_write_header1(), asf_write_trailer(), and flush_packet().

§ unix_to_file_time()

static int64_t unix_to_file_time ( int  ti)
static

Definition at line 282 of file asfenc.c.

Referenced by asf_write_header1().

§ get_send_time()

static int32_t get_send_time ( ASFContext asf,
int64_t  pres_time,
uint64_t *  offset 
)
static

Definition at line 291 of file asfenc.c.

Referenced by asf_write_markers().

§ asf_write_markers()

static int asf_write_markers ( AVFormatContext s)
static

Definition at line 306 of file asfenc.c.

Referenced by asf_write_header1().

§ asf_write_header1()

static int asf_write_header1 ( AVFormatContext s,
int64_t  file_size,
int64_t  data_chunk_size 
)
static

Definition at line 350 of file asfenc.c.

Referenced by asf_write_header(), and asf_write_trailer().

§ asf_write_header()

static int asf_write_header ( AVFormatContext s)
static

Definition at line 625 of file asfenc.c.

Referenced by asf_write_stream_header(), and asf_write_trailer().

§ asf_write_stream_header()

static int asf_write_stream_header ( AVFormatContext s)
static

Definition at line 657 of file asfenc.c.

Referenced by asf_write_trailer().

§ put_payload_parsing_info()

static int put_payload_parsing_info ( AVFormatContext s,
unsigned  sendtime,
unsigned  duration,
int  nb_payloads,
int  padsize 
)
static

Definition at line 666 of file asfenc.c.

Referenced by flush_packet().

§ flush_packet()

static void flush_packet ( AVFormatContext s)
static

Definition at line 714 of file asfenc.c.

Referenced by asf_write_trailer(), and put_frame().

§ put_payload_header()

static void put_payload_header ( AVFormatContext s,
ASFStream stream,
int  presentation_time,
int  m_obj_size,
int  m_obj_offset,
int  payload_len,
int  flags 
)
static

Definition at line 746 of file asfenc.c.

Referenced by put_frame().

§ put_frame()

static void put_frame ( AVFormatContext s,
ASFStream stream,
AVStream avst,
int  timestamp,
const uint8_t buf,
int  m_obj_size,
int  flags 
)
static

Definition at line 777 of file asfenc.c.

Referenced by asf_write_packet().

§ asf_write_packet()

static int asf_write_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 840 of file asfenc.c.

Referenced by asf_write_trailer().

§ asf_write_index()

static int asf_write_index ( AVFormatContext s,
ASFIndex index,
uint16_t  max,
uint32_t  count 
)
static

Definition at line 901 of file asfenc.c.

Referenced by asf_write_trailer().

§ asf_write_trailer()

static int asf_write_trailer ( AVFormatContext s)
static

Definition at line 921 of file asfenc.c.

Variable Documentation

§ codec_asf_bmp_tags

const AVCodecTag codec_asf_bmp_tags[]
static
Initial value:
= {
{ AV_CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
{ AV_CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
{ AV_CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
}
#define MKTAG(a, b, c, d)
Definition: common.h:238

Definition at line 213 of file asfenc.c.

Referenced by asf_write_trailer().