43 memset(afq, 0,
sizeof(*afq));
50 int nb_samples =
f->nb_samples;
58 if (sd && sd->
size >= 10) {
60 if (discard_padding > 0 && discard_padding < nb_samples)
61 nb_samples -= discard_padding;
65 new->duration = nb_samples;
91 int removed_samples = 0;
107 removed_samples += n;
121 av_log(afq->
avctx,
AV_LOG_DEBUG,
"Trying to remove %d more samples than there are in the queue\n", nb_samples);
124 int discard_padding =
frame_size - removed_samples;
136 AV_WL32(side_data + 4, discard_padding);
av_cold void ff_af_queue_close(AudioFrameQueue *afq)
Close AudioFrameQueue.
av_cold void ff_af_queue_init(AVCodecContext *avctx, AudioFrameQueue *afq)
Initialize AudioFrameQueue.
int ff_af_queue_remove(AudioFrameQueue *afq, int nb_samples, AVPacket *pkt)
Remove frame(s) from the queue.
int ff_af_queue_add(AudioFrameQueue *afq, const AVFrame *f)
Add a frame to the queue.
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
#define i(width, name, range_min, range_max)
static av_always_inline int64_t ff_samples_to_time_base(const AVCodecContext *avctx, int64_t samples)
Rescale from sample rate to AVCodecContext.time_base.
static const uint8_t frame_size[4]
@ AV_PKT_DATA_SKIP_SAMPLES
Recommends skipping the specified number of samples.
uint8_t * av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type, size_t size)
Allocate new information of a packet.
static const AVFrameSideData * av_frame_side_data_get(AVFrameSideData *const *sd, const int nb_sd, enum AVFrameSideDataType type)
Wrapper around av_frame_side_data_get_c() to workaround the limitation that for any type T the conver...
@ AV_FRAME_DATA_SKIP_SAMPLES
Recommends skipping the specified number of samples.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
#define AV_LOG_WARNING
Something somehow does not look correct.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
void * av_fast_realloc(void *ptr, unsigned int *size, size_t min_size)
Reallocate the given buffer if it is not large enough, otherwise do nothing.
#define AV_NOPTS_VALUE
Undefined timestamp value.
Macro definitions for various function/variable attributes.
Memory handling functions.
main external API structure.
int initial_padding
Audio only.
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented.
Structure to hold side data for an AVFrame.
This structure describes decoded (raw) audio or video data.
This structure stores compressed data.
Rational number (pair of numerator and denominator).