105 #define OFFSET(x) offsetof(TrimContext, x) 
  106 #define COMMON_OPTS                                                                                                                                                         \ 
  107     { "start",       "Timestamp of the first frame that "                                                                                                        \ 
  108         "should be passed",                                              OFFSET(start_time),  AV_OPT_TYPE_DURATION, { .i64 = INT64_MAX },    INT64_MIN, INT64_MAX, FLAGS }, \ 
  109     { "starti",      "Timestamp of the first frame that "                                                                                                        \ 
  110         "should be passed",                                              OFFSET(start_time),  AV_OPT_TYPE_DURATION, { .i64 = INT64_MAX },    INT64_MIN, INT64_MAX, FLAGS }, \ 
  111     { "end",         "Timestamp of the first frame that "                                                                                                        \ 
  112         "should be dropped again",                                       OFFSET(end_time),    AV_OPT_TYPE_DURATION, { .i64 = INT64_MAX },    INT64_MIN, INT64_MAX, FLAGS }, \ 
  113     { "endi",        "Timestamp of the first frame that "                                                                                                        \ 
  114         "should be dropped again",                                       OFFSET(end_time),    AV_OPT_TYPE_DURATION, { .i64 = INT64_MAX },    INT64_MIN, INT64_MAX, FLAGS }, \ 
  115     { "start_pts",   "Timestamp of the first frame that should be "                                                                                                         \ 
  116        " passed",                                                        OFFSET(start_pts),   AV_OPT_TYPE_INT64,  { .i64 = AV_NOPTS_VALUE }, INT64_MIN, INT64_MAX, FLAGS }, \ 
  117     { "end_pts",     "Timestamp of the first frame that should be "                                                                                                         \ 
  118         "dropped again",                                                 OFFSET(end_pts),     AV_OPT_TYPE_INT64,  { .i64 = AV_NOPTS_VALUE }, INT64_MIN, INT64_MAX, FLAGS }, \ 
  119     { "duration",    "Maximum duration of the output",                   OFFSET(duration),    AV_OPT_TYPE_DURATION, { .i64 = 0 },                    0, INT64_MAX, FLAGS }, \ 
  120     { "durationi",   "Maximum duration of the output",                   OFFSET(duration),    AV_OPT_TYPE_DURATION, { .i64 = 0 },                    0, INT64_MAX, FLAGS }, 
  123 #if CONFIG_TRIM_FILTER 
  179 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM 
  180 static const AVOption trim_options[] = {
 
  182     { 
"start_frame", 
"Number of the first frame that should be passed " 
  184     { 
"end_frame",   
"Number of the first frame that should be dropped " 
  196         .filter_frame = trim_filter_frame,
 
  212     .description = 
NULL_IF_CONFIG_SMALL(
"Pick one continuous section from the input, drop the rest."),
 
  215     .priv_class  = &trim_class,
 
  219 #endif // CONFIG_TRIM_FILTER 
  221 #if CONFIG_ATRIM_FILTER 
  226     int64_t start_sample, end_sample;
 
  301     start_sample   = 
FFMAX(0, start_sample);
 
  333 #define FLAGS AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_FILTERING_PARAM 
  334 static const AVOption atrim_options[] = {
 
  336     { 
"start_sample", 
"Number of the first audio sample that should be " 
  338     { 
"end_sample",   
"Number of the first audio sample that should be " 
  350         .filter_frame = atrim_filter_frame,
 
  366     .description = 
NULL_IF_CONFIG_SMALL(
"Pick one continuous section from the input, drop the rest."),
 
  370     .priv_class  = &atrim_class,
 
  374 #endif // CONFIG_ATRIM_FILTER 
This structure describes decoded (raw) audio or video data. 
Main libavfilter public API header. 
static av_cold int init(AVFilterContext *ctx)
const char * name
Pad name. 
#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). 
#define AVERROR_EOF
End of file. 
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 
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(). 
audio channel layout utility functions 
void ff_avfilter_link_set_out_status(AVFilterLink *link, int status, int64_t pts)
Set the status field of a link from the destination filter. 
static const AVFilterPad outputs[]
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
static const AVFilterPad inputs[]
#define AV_TIME_BASE_Q
Internal time base represented as fractional value. 
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. 
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 
int channels
Number of channels. 
AVFilterContext * dst
dest filter 
#define AVFILTER_DEFINE_CLASS(fname)
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.