libavformat/asfenc.c File Reference
#include "avformat.h"
#include "internal.h"
#include "riff.h"
#include "asf.h"
#include "avio_internal.h"
#include "libavutil/dict.h"
#include <assert.h>

Go to the source code of this file.

Data Structures

struct  ASFContext

Defines

#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 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 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 int sendtime, unsigned int 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 []

Define Documentation

#define ASF_INDEX_BLOCK   600

Definition at line 33 of file asfenc.c.

Referenced by asf_write_header(), and asf_write_packet().

#define ASF_INDEXED_INTERVAL   10000000

Definition at line 32 of file asfenc.c.

Referenced by asf_write_index().

Definition at line 35 of file asfenc.c.

Referenced by put_payload_parsing_info().

Value:
(\
                ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT | \
                ASF_PACKET_ERROR_CORRECTION_DATA_SIZE\
                )

Definition at line 36 of file asfenc.c.

Referenced by put_payload_parsing_info().

Definition at line 42 of file asfenc.c.

Definition at line 56 of file asfenc.c.

Referenced by put_payload_parsing_info().

Definition at line 141 of file asfenc.c.

Definition at line 125 of file asfenc.c.

Definition at line 118 of file asfenc.c.

Definition at line 161 of file asfenc.c.

Referenced by put_payload_header().

Definition at line 99 of file asfenc.c.

#define ASF_PPI_LENGTH_TYPE_FLAGS   0

Definition at line 54 of file asfenc.c.

Referenced by put_payload_parsing_info().

Definition at line 82 of file asfenc.c.

Definition at line 95 of file asfenc.c.

Value:
(\
                ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE | \
                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 \
                )

Definition at line 47 of file asfenc.c.

Referenced by put_payload_parsing_info().

Definition at line 68 of file asfenc.c.

Value:
(\
                PACKET_SIZE - \
                PACKET_HEADER_MIN_SIZE - \
                1 - /*Payload Flags*/ \
                2*PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS \
                )

Definition at line 186 of file asfenc.c.

Referenced by put_frame().

Value:
(\
                ASF_PACKET_ERROR_CORRECTION_FLAGS_FIELD_SIZE + \
                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*/ \
                )

Definition at line 147 of file asfenc.c.

Referenced by put_frame(), and put_payload_parsing_info().

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 171 of file asfenc.c.

Referenced by put_frame().

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 163 of file asfenc.c.

Referenced by put_frame().

#define PREROLL_TIME   3100

Definition at line 225 of file asfenc.c.

Referenced by asf_write_header1(), and put_frame().

Value:
(\
                PACKET_SIZE - \
                PACKET_HEADER_MIN_SIZE - \
                PAYLOAD_HEADER_SIZE_SINGLE_PAYLOAD \
                )

Definition at line 180 of file asfenc.c.

Referenced by put_frame().


Function Documentation

static int asf_write_header ( AVFormatContext s) [static]

Definition at line 553 of file asfenc.c.

Referenced by asf_write_stream_header().

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

Definition at line 296 of file asfenc.c.

Referenced by asf_write_header(), and asf_write_trailer().

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

Definition at line 831 of file asfenc.c.

Referenced by asf_write_trailer().

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

Definition at line 785 of file asfenc.c.

static int asf_write_stream_header ( AVFormatContext s) [static]

Definition at line 585 of file asfenc.c.

static int asf_write_trailer ( AVFormatContext s) [static]

Definition at line 850 of file asfenc.c.

static void end_header ( AVIOContext pb,
int64_t  pos 
) [static]

Definition at line 259 of file asfenc.c.

Referenced by asf_write_header1().

static void flush_packet ( AVFormatContext s) [static]

Definition at line 647 of file asfenc.c.

Referenced by asf_write_trailer(), and put_frame().

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

Definition at line 270 of file asfenc.c.

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

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 718 of file asfenc.c.

Referenced by asf_write_packet().

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

Definition at line 227 of file asfenc.c.

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

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

Definition at line 248 of file asfenc.c.

Referenced by asf_write_header1().

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 681 of file asfenc.c.

Referenced by put_frame().

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

Definition at line 594 of file asfenc.c.

Referenced by flush_packet().

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

Definition at line 233 of file asfenc.c.

Referenced by asf_write_header1().

static int64_t unix_to_file_time ( int  ti) [static]

Definition at line 286 of file asfenc.c.

Referenced by asf_write_header1().


Variable Documentation

const AVCodecTag codec_asf_bmp_tags[] [static]
Initial value:
 {
    { CODEC_ID_MPEG4, MKTAG('M', 'P', '4', 'S') },
    { CODEC_ID_MPEG4, MKTAG('M', '4', 'S', '2') },
    { CODEC_ID_MSMPEG4V3, MKTAG('M', 'P', '4', '3') },
    { CODEC_ID_NONE, 0 },
}

Definition at line 218 of file asfenc.c.