30#define RIFF_TAG MKTAG('R','I','F','F')
31#define WAVE_TAG MKTAG('W','A','V','E')
59 for(
i=264;
i<512;
i++)
122 int frame_size=
s->streams[0]->codecpar->sample_rate==8000?10:22;
125 if(
s->streams[0]->codecpar->sample_rate==8000)
133 if(
s->streams[0]->codecpar->sample_rate==4400 && !
ctx->second_packet)
140 pkt->data[0]=
ctx->audio_buffer[11];
141 pkt->data[1]=
ctx->audio_buffer[0];
142 pkt->data[2]=
ctx->audio_buffer[12];
143 pkt->data[3]=
ctx->audio_buffer[1];
144 pkt->data[4]=
ctx->audio_buffer[13];
145 pkt->data[5]=
ctx->audio_buffer[2];
146 pkt->data[6]=
ctx->audio_buffer[14];
147 pkt->data[7]=
ctx->audio_buffer[3];
148 pkt->data[8]=
ctx->audio_buffer[15];
149 pkt->data[9]=
ctx->audio_buffer[4];
150 pkt->data[10]=
ctx->audio_buffer[16];
152 ctx->second_packet=1;
154 else if(
s->streams[0]->codecpar->sample_rate==4400 &&
ctx->second_packet)
156 pkt->data[0]=
ctx->audio_buffer[5];
157 pkt->data[1]=
ctx->audio_buffer[17];
158 pkt->data[2]=
ctx->audio_buffer[6];
159 pkt->data[3]=
ctx->audio_buffer[18];
160 pkt->data[4]=
ctx->audio_buffer[7];
161 pkt->data[5]=
ctx->audio_buffer[19];
162 pkt->data[6]=
ctx->audio_buffer[8];
163 pkt->data[7]=
ctx->audio_buffer[20];
164 pkt->data[8]=
ctx->audio_buffer[9];
165 pkt->data[9]=
ctx->audio_buffer[21];
166 pkt->data[10]=
ctx->audio_buffer[10];
168 ctx->second_packet=0;
177 pkt->data[0]=
ctx->audio_buffer[5];
178 pkt->data[1]=
ctx->audio_buffer[0];
179 pkt->data[2]=
ctx->audio_buffer[6];
180 pkt->data[3]=
ctx->audio_buffer[1];
181 pkt->data[4]=
ctx->audio_buffer[7];
182 pkt->data[5]=
ctx->audio_buffer[2];
183 pkt->data[6]=
ctx->audio_buffer[8];
184 pkt->data[7]=
ctx->audio_buffer[3];
185 pkt->data[8]=
ctx->audio_buffer[9];
186 pkt->data[9]=
ctx->audio_buffer[4];
204 .p.long_name =
"ACT Voice file format",
const FFInputFormat ff_act_demuxer
static int read_packet(AVFormatContext *s, AVPacket *pkt)
static int read_header(AVFormatContext *s)
static int probe(const AVProbeData *p)
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
unsigned int avio_rl16(AVIOContext *s)
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
unsigned int avio_rl32(AVIOContext *s)
int avio_r8(AVIOContext *s)
int ffio_read_size(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
#define i(width, name, range_min, range_max)
static int read_probe(const AVProbeData *p)
static int read_header(FFV1Context *f, RangeCoder *c)
static const uint8_t frame_size[4]
int av_new_packet(AVPacket *pkt, int size)
Allocate the payload of a packet and initialize its fields with default values.
AVStream * avformat_new_stream(AVFormatContext *s, const struct AVCodec *c)
Add a new stream to a media file.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest.
internal header for RIFF based (de)muxers do NOT include this in end user applications
int ff_get_wav_header(AVFormatContext *s, AVIOContext *pb, AVCodecParameters *par, int size, int big_endian)
char second_packet
1 - if temporary buffer contains valid (second) G.729 packet
uint8_t audio_buffer[22]
temporary buffer for ACT frame
int nb_channels
Number of channels in this layout.
int frame_size
Audio frame size, if known.
AVChannelLayout ch_layout
The channel layout and number of channels.
enum AVCodecID codec_id
Specific type of the encoded data (the codec used).
int sample_rate
The number of audio samples per second.
This structure stores compressed data.
This structure contains the data a format has to probe a file.
AVCodecParameters * codecpar
Codec parameters associated with this stream.
int64_t duration
Decoding: duration of the stream, in stream time base.
static AVFormatContext * ctx