127 #define OFFSET(x) offsetof(TrimContext, x) 128 #define COMMON_OPTS \ 129 { "start", "Timestamp in seconds of the first frame that " \ 130 "should be passed", OFFSET(start_time), AV_OPT_TYPE_DOUBLE, { .dbl = DBL_MAX }, -DBL_MAX, DBL_MAX, FLAGS }, \ 131 { "end", "Timestamp in seconds of the first frame that " \ 132 "should be dropped again", OFFSET(end_time), AV_OPT_TYPE_DOUBLE, { .dbl = DBL_MAX }, -DBL_MAX, DBL_MAX, FLAGS }, \ 133 { "start_pts", "Timestamp of the first frame that should be " \ 134 " passed", OFFSET(start_pts), AV_OPT_TYPE_INT64, { .i64 = AV_NOPTS_VALUE }, INT64_MIN, INT64_MAX, FLAGS }, \ 135 { "end_pts", "Timestamp of the first frame that should be " \ 136 "dropped again", OFFSET(end_pts), AV_OPT_TYPE_INT64, { .i64 = AV_NOPTS_VALUE }, INT64_MIN, INT64_MAX, FLAGS }, \ 137 { "duration", "Maximum duration of the output in seconds", OFFSET(duration), AV_OPT_TYPE_DOUBLE, { .dbl = 0 }, 0, DBL_MAX, FLAGS }, 140 #if CONFIG_TRIM_FILTER 196 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM 197 static const AVOption trim_options[] = {
199 {
"start_frame",
"Number of the first frame that should be passed " 201 {
"end_frame",
"Number of the first frame that should be dropped " 207 static const AVClass trim_class = {
210 .option = trim_options,
218 .filter_frame = trim_filter_frame,
235 .description =
NULL_IF_CONFIG_SMALL(
"Pick one continuous section from the input, drop the rest."),
240 .priv_class = &trim_class,
245 #endif // CONFIG_TRIM_FILTER 247 #if CONFIG_ATRIM_FILTER 326 start_sample =
FFMAX(0, start_sample);
359 #define FLAGS AV_OPT_FLAG_AUDIO_PARAM 360 static const AVOption atrim_options[] = {
362 {
"start_sample",
"Number of the first audio sample that should be " 364 {
"end_sample",
"Number of the first audio sample that should be " 370 static const AVClass atrim_class = {
373 .option = atrim_options,
381 .filter_frame = atrim_filter_frame,
398 .description =
NULL_IF_CONFIG_SMALL(
"Pick one continuous section from the input, drop the rest."),
403 .priv_class = &atrim_class,
408 #endif // CONFIG_ATRIM_FILTER
This structure describes decoded (raw) audio or video data.
static const AVFilterPad outputs[]
Main libavfilter public API header.
const char * name
Pad name.
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
AVFilterLink ** inputs
array of pointers to input links
#define av_assert0(cond)
assert() equivalent, that is always enabled.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
static double av_q2d(AVRational a)
Convert rational to double.
#define AVERROR_EOF
End of file.
static int init(AVFilterContext *ctx)
static int config_input(AVFilterLink *inlink)
A filter pad used for either input or output.
int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)
Rescale a 64-bit integer by 2 rational numbers.
A link between two filters.
int sample_rate
samples per second
AVFrame * ff_get_audio_buffer(AVFilterLink *link, int nb_samples)
Request an audio samples buffer with a specific set of permissions.
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
int av_get_channel_layout_nb_channels(uint64_t channel_layout)
Return the number of channels in the channel layout.
AVRational time_base
Define the time base used by the PTS of the frames/samples which will pass through this link...
simple assert() macros that are a bit more flexible than ISO C assert().
uint64_t channel_layout
Channel layout of the audio data.
audio channel layout utility functions
static av_always_inline av_const long int lrintf(float x)
AVFilterContext * src
source filter
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int av_samples_copy(uint8_t **dst, uint8_t *const *src, int dst_offset, int src_offset, int nb_samples, int nb_channels, enum AVSampleFormat sample_fmt)
Copy samples from src to dst.
Describe the class of an AVClass context structure.
int sample_rate
Sample rate of the audio data.
static const AVFilterPad inputs[]
rational number numerator/denominator
const char * name
Filter name.
AVFilterLink ** outputs
array of pointers to output links
static int64_t pts
Global timestamp for the audio frames.
enum AVMediaType type
filter media type
common internal and external API header
AVFilterContext * dst
dest filter
int ff_request_frame(AVFilterLink *link)
Request an input frame from the filter at the other end of the link.
uint8_t ** extended_data
pointers to the data planes/channels.
int nb_samples
number of audio samples (per channel) described by this frame
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst.
#define AV_NOPTS_VALUE
Undefined timestamp value.
static int request_frame(AVFilterLink *outlink)