#include "funcprotos.h"#include "quicktime.h"#include "qtvorbis.h"#include <string.h>#include "vorbis/vorbisenc.h"

Go to the source code of this file.
Data Structures | |
| struct | quicktime_vorbis_codec_t |
Defines | |
| #define | OUTPUT_ALLOCATION 0x100000 |
| #define | CLAMP(x, y, z) ((x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x)))) |
| #define | BUFFER_FRAGMENT 4096 |
| #define | SEGMENT_OFFSET 0x1a |
| #define | LACE_OFFSET 0x1b |
| #define | READ_CHUNK(chunk) |
| #define | FLUSH_OGG1 |
| #define | FLUSH_OGG2 |
Functions | |
| static int | delete_codec (quicktime_audio_map_t *atrack) |
| static int | chunk_len (quicktime_t *file, int64_t offset, int64_t next_chunk) |
| static int | decode (quicktime_t *file, int16_t *output_i, float *output_f, long samples, int track, int channel) |
| static int | encode (quicktime_t *file, int16_t **input_i, float **input_f, int track, long samples) |
| static int | set_parameter (quicktime_t *file, int track, char *key, void *value) |
| static void | flush (quicktime_t *file, int track) |
| void | quicktime_init_codec_vorbis (quicktime_audio_map_t *atrack) |
| #define BUFFER_FRAGMENT 4096 |
| #define CLAMP | ( | x, | |||
| y, | |||||
| z | ) | ((x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x)))) |
| #define FLUSH_OGG1 |
Value:
while(1) \ { \ int eos = !ogg_stream_flush(&codec->enc_os, &codec->enc_og); \ if(eos) break; \ \ if(!chunk_started) \ { \ chunk_started = 1; \ quicktime_write_chunk_header(file, trak, &chunk_atom); \ } \ \ result = !quicktime_write_data(file, codec->enc_og.header, codec->enc_og.header_len); \ size += codec->enc_og.header_len; \ \ if(!result) \ { \ result = !quicktime_write_data(file, codec->enc_og.body, codec->enc_og.body_len); \ size += codec->enc_og.body_len; \ } \ \ \ if(!result) break; \ }
Definition at line 596 of file vorbis.c.
Referenced by encode().
| #define LACE_OFFSET 0x1b |
| #define READ_CHUNK | ( | chunk | ) |
Value:
{ \
int64_t offset1 = quicktime_chunk_to_offset(file, trak, (chunk)); \
int64_t offset2 = quicktime_chunk_to_offset(file, trak, (chunk) + 1); \
int size = 0; \
if(offset2 == offset1) \
result = 1; \
else \
{ \
size = chunk_len(file, offset1, \
offset2 > offset1 ? offset2 : offset1 + 0xfffff); \
\
buffer = ogg_sync_buffer(&codec->dec_oy, size); \
quicktime_set_position(file, offset1); \
result = !quicktime_read_data(file, buffer, size); \
ogg_sync_wrote(&codec->dec_oy, size); \
} \
/* printf("READ_CHUNK size=%d\n", size); */ \
/* printf("%llx %x: ", quicktime_chunk_to_offset(file, trak, (chunk)), size); */ \
/* for(i = 0; i < 16; i++) */ \
/* printf("%02x ", buffer[i]); */ \
/* printf("result=%d\n", result); */ \
}
Definition at line 167 of file vorbis.c.
Referenced by decode().
| #define SEGMENT_OFFSET 0x1a |
| static int chunk_len | ( | quicktime_t * | file, | |
| int64_t | offset, | |||
| int64_t | next_chunk | |||
| ) | [static] |
Definition at line 117 of file vorbis.c.
References BUFFER_FRAGMENT, LACE_OFFSET, memcmp, quicktime_read_data(), quicktime_set_position(), and SEGMENT_OFFSET.

| static int decode | ( | quicktime_t * | file, | |
| int16_t * | output_i, | |||
| float * | output_f, | |||
| long | samples, | |||
| int | track, | |||
| int | channel | |||
| ) | [static] |
Definition at line 194 of file vorbis.c.
References quicktime_t::atracks, bytes, quicktime_audio_map_t::channels, quicktime_vorbis_codec_t::chunk, quicktime_vorbis_codec_t::chunk_samples, CLAMP, quicktime_audio_map_t::codec, quicktime_audio_map_t::current_position, quicktime_vorbis_codec_t::dec_og, quicktime_vorbis_codec_t::dec_op, quicktime_vorbis_codec_t::dec_os, quicktime_vorbis_codec_t::dec_oy, quicktime_vorbis_codec_t::dec_vb, quicktime_vorbis_codec_t::dec_vc, quicktime_vorbis_codec_t::dec_vd, quicktime_vorbis_codec_t::dec_vi, quicktime_vorbis_codec_t::decode_initialized, fprintf, quicktime_vorbis_codec_t::output, quicktime_vorbis_codec_t::output_allocated, OUTPUT_ALLOCATION, quicktime_vorbis_codec_t::output_end, quicktime_vorbis_codec_t::output_position, quicktime_vorbis_codec_t::output_size, quicktime_chunk_of_sample(), READ_CHUNK, and quicktime_audio_map_t::track.

| static int delete_codec | ( | quicktime_audio_map_t * | atrack | ) | [static] |
Definition at line 69 of file vorbis.c.
References quicktime_audio_map_t::channels, quicktime_audio_map_t::codec, quicktime_vorbis_codec_t::dec_os, quicktime_vorbis_codec_t::dec_vb, quicktime_vorbis_codec_t::dec_vc, quicktime_vorbis_codec_t::dec_vd, quicktime_vorbis_codec_t::dec_vi, quicktime_vorbis_codec_t::decode_initialized, quicktime_vorbis_codec_t::enc_os, quicktime_vorbis_codec_t::enc_vb, quicktime_vorbis_codec_t::enc_vc, quicktime_vorbis_codec_t::enc_vd, quicktime_vorbis_codec_t::enc_vi, quicktime_vorbis_codec_t::encode_initialized, and quicktime_vorbis_codec_t::output.
| static int encode | ( | quicktime_t * | file, | |
| int16_t ** | input_i, | |||
| float ** | input_f, | |||
| int | track, | |||
| long | samples | |||
| ) | [static] |
Definition at line 657 of file vorbis.c.
References quicktime_t::atracks, quicktime_audio_map_t::channels, quicktime_audio_map_t::codec, quicktime_audio_map_t::current_chunk, quicktime_vorbis_codec_t::enc_os, quicktime_vorbis_codec_t::enc_vb, quicktime_vorbis_codec_t::enc_vc, quicktime_vorbis_codec_t::enc_vd, quicktime_vorbis_codec_t::enc_vi, quicktime_vorbis_codec_t::encode_initialized, quicktime_vorbis_codec_t::encoded_bytes, quicktime_vorbis_codec_t::encoded_samples, FLUSH_OGG1, FLUSH_OGG2, header, quicktime_vorbis_codec_t::max_bitrate, quicktime_trak_t::mdia, memcpy, quicktime_vorbis_codec_t::min_bitrate, quicktime_mdia_t::minf, quicktime_vorbis_codec_t::next_chunk_size, quicktime_vorbis_codec_t::nominal_bitrate, NULL, offset, output, quicktime_position(), quicktime_write_chunk_footer(), quicktime_stsd_table_t::sample_rate, quicktime_stsd_table_t::sample_size, quicktime_minf_t::stbl, quicktime_stbl_t::stsd, quicktime_stsd_t::table, quicktime_audio_map_t::track, quicktime_t::use_avi, and quicktime_vorbis_codec_t::use_vbr.

| static void flush | ( | quicktime_t * | file, | |
| int | track | |||
| ) | [static] |
Definition at line 821 of file vorbis.c.
References quicktime_t::atracks, quicktime_audio_map_t::codec, quicktime_audio_map_t::current_chunk, quicktime_vorbis_codec_t::enc_vd, quicktime_vorbis_codec_t::encode_initialized, quicktime_vorbis_codec_t::encoded_bytes, quicktime_vorbis_codec_t::encoded_samples, FLUSH_OGG2, quicktime_trak_t::mdia, quicktime_mdia_t::minf, quicktime_vorbis_codec_t::next_chunk_size, quicktime_vorbis_codec_t::nominal_bitrate, offset, quicktime_position(), quicktime_write_chunk_footer(), quicktime_stsd_table_t::sample_rate, quicktime_minf_t::stbl, quicktime_stbl_t::stsd, quicktime_stsd_t::table, quicktime_audio_map_t::track, and quicktime_vorbis_codec_t::use_vbr.

| void quicktime_init_codec_vorbis | ( | quicktime_audio_map_t * | atrack | ) |
Definition at line 862 of file vorbis.c.
References quicktime_audio_map_t::codec, quicktime_codec_t::decode_audio, quicktime_codec_t::delete_acodec, delete_codec(), quicktime_codec_t::desc, encode(), quicktime_codec_t::encode_audio, flush, quicktime_codec_t::flush, quicktime_codec_t::fourcc, quicktime_codec_t::priv, QUICKTIME_VORBIS, set_parameter(), quicktime_codec_t::set_parameter, and quicktime_codec_t::title.
Referenced by register_acodecs().

| static int set_parameter | ( | quicktime_t * | file, | |
| int | track, | |||
| char * | key, | |||
| void * | value | |||
| ) | [static] |
Definition at line 797 of file vorbis.c.
References quicktime_t::atracks, quicktime_audio_map_t::codec, quicktime_vorbis_codec_t::max_bitrate, quicktime_vorbis_codec_t::min_bitrate, quicktime_vorbis_codec_t::nominal_bitrate, and quicktime_vorbis_codec_t::use_vbr.
1.5.5