38 #define MAX_PAGE_SIZE 65307 39 #define DECODER_BUFFER_SIZE MAX_PAGE_SIZE 72 for (i = 0; i < ogg->
nstreams; i++) {
121 for (i = 0; i < ogg->
nstreams; i++) {
145 for (i = 0; ogg_codecs[i]; i++)
148 return ogg_codecs[i];
226 if (sync[sp & 3] ==
'O' &&
227 sync[(sp + 1) & 3] ==
'g' &&
228 sync[(sp + 2) & 3] ==
'g' && sync[(sp + 3) & 3] ==
'S')
258 for (n = 0; n < ogg->
nstreams; n++) {
290 for (i = 0; i <
nsegs; i++)
354 av_dlog(s,
"ogg_packet: idx=%d pstart=%d psize=%d segp=%d nsegs=%d\n",
382 if (!complete && os->
segp == os->
nsegs) {
392 av_dlog(s,
"ogg_packet: idx %i, frame size %i, start %i\n",
397 "Page at %"PRId64
" is missing granule\n",
419 for (i = 0; i < ogg->
nstreams; i++) {
476 for (i = 0; i < ogg->
nstreams; i++) {
482 "Headers mismatch for stream %d: " 483 "expected %d received %d.\n",
538 for (i = 0; i < ogg->
nstreams; i++) {
609 int64_t fpos, pts, dts;
614 ret =
ogg_packet(s, &idx, &pstart, &psize, &fpos);
617 }
while (idx < 0 || !s->streams[idx]);
634 memcpy(pkt->
data, os->
buf + pstart, psize);
646 int64_t *pos_arg, int64_t pos_limit)
657 if (i == stream_index) {
671 int64_t timestamp,
int flags)
684 os = ogg->
streams + stream_index;
692 if (!memcmp(
"OggS", p->
buf, 5) && p->
buf[5] <= 0x7)
700 .priv_data_size =
sizeof(
struct ogg),
int granule_is_start
1 if granule is the start time of the associated packet.
void * av_malloc(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int64_t avio_size(AVIOContext *s)
Get the filesize.
Copyright (C) 2005 Michael Ahlberg, Måns Rullgård.
static const struct ogg_codec * ogg_find_codec(uint8_t *buf, int size)
const struct ogg_codec ff_celt_codec
#define DECODER_BUFFER_SIZE
int nb_header
set to the number of parsed headers
#define AV_LOG_WARNING
Something somehow does not look correct.
int(* packet)(AVFormatContext *, int)
int64_t pos
byte position in stream, -1 if unknown
static int ogg_new_buf(struct ogg *ogg, int idx)
#define OGG_NOGRANULE_VALUE
const struct ogg_codec * codec
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
static int sync(AVFormatContext *s, uint8_t *header)
Read input until we find the next ident.
int64_t data_offset
offset of the first packet
static int ogg_get_length(AVFormatContext *s)
static int ogg_probe(AVProbeData *p)
static const struct ogg_codec *const ogg_codecs[]
static int ogg_read_packet(AVFormatContext *s, AVPacket *pkt)
void av_freep(void *arg)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc() and set the pointer ...
const struct ogg_codec ff_ogm_old_codec
av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (%s)\, len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt), use_generic ? ac->func_descr_generic :ac->func_descr)
static int ogg_restore(AVFormatContext *s, int discard)
int64_t sync_pos
file offset of the first page needed to reconstruct the current packet
const struct ogg_codec ff_ogm_video_codec
int id
Format-specific stream ID.
int(* header)(AVFormatContext *, int)
Attempt to process a packet as a header.
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
int64_t page_pos
file offset of the current page
AVStream ** streams
A list of all streams in the file.
#define AVERROR_EOF
End of file.
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
static int ogg_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
int duration
Duration of this packet in AVStream->time_base units, 0 if unknown.
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
const struct ogg_codec ff_skeleton_codec
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
int av_reallocp_array(void *ptr, size_t nmemb, size_t size)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void av_free(void *ptr)
Free a memory block which has been allocated with av_malloc(z)() or av_realloc(). ...
unsigned int avio_rl32(AVIOContext *s)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int ogg_read_close(AVFormatContext *s)
void av_log(void *avcl, int level, const char *fmt,...)
const struct ogg_codec ff_opus_codec
int flags
A combination of AV_PKT_FLAG values.
int avio_r8(AVIOContext *s)
AVCodecContext * codec
Codec context associated with this stream.
int incomplete
whether we're expecting a continuation in the next page
unsigned char * buf
Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.
#define FF_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
int seekable
A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
static int ogg_get_headers(AVFormatContext *s)
static int64_t ogg_calc_pts(AVFormatContext *s, int idx, int64_t *dts)
static av_always_inline int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
struct ogg_stream * streams
const struct ogg_codec ff_vorbis_codec
static int ogg_new_stream(AVFormatContext *s, uint32_t serial, int new_avstream)
int page_end
current packet is the last one completed in the page
AVInputFormat ff_ogg_demuxer
const struct ogg_codec ff_ogm_audio_codec
if(ac->has_optimized_func)
const struct ogg_codec ff_theora_codec
static int ogg_find_stream(struct ogg *ogg, int serial)
#define AV_LOG_INFO
Standard information.
enum AVMediaType codec_type
AVIOContext * pb
I/O context.
const struct ogg_codec ff_flac_codec
const struct ogg_codec ff_old_dirac_codec
static int ogg_read_page(AVFormatContext *s, int *str)
static int ogg_read_header(AVFormatContext *s)
int nb_header
Number of expected headers.
static int ogg_reset(struct ogg *ogg)
This structure contains the data a format has to probe a file.
const struct ogg_codec ff_old_flac_codec
void(* cleanup)(AVFormatContext *s, int idx)
const struct ogg_codec ff_dirac_codec
int64_t duration
Decoding: duration of the stream, in stream time base.
const struct ogg_codec ff_speex_codec
void * av_realloc(void *ptr, size_t size)
Allocate or reallocate a block of memory.
int64_t start_time
Decoding: pts of the first frame of the stream, in stream time base.
int error_recognition
Error recognition; higher values will detect more errors but may misdetect some more or less valid pa...
const struct ogg_codec ff_ogm_text_codec
static int ogg_packet(AVFormatContext *s, int *str, int *dstart, int *dsize, int64_t *fpos)
int eof_reached
true if eof reached
static int ogg_save(AVFormatContext *s)
void * priv_data
Format private data.
int64_t dts
Decompression timestamp in AVStream->time_base units; the time at which the packet is decompressed...
static int64_t ogg_read_timestamp(AVFormatContext *s, int stream_index, int64_t *pos_arg, int64_t pos_limit)
int64_t duration
Duration of the stream, in AV_TIME_BASE fractional seconds.
struct ogg_stream streams[1]
This structure stores compressed data.
uint64_t avio_rl64(AVIOContext *s)
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
int64_t pts
Presentation timestamp in AVStream->time_base units; the time at which the decompressed packet will b...
static uint64_t ogg_gptopts(AVFormatContext *s, int i, uint64_t gp, int64_t *dts)
#define AV_NOPTS_VALUE
Undefined timestamp value.