Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFmpeg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
libremedia
Tethys
FFmpeg
Commits
f5e66827
Commit
f5e66827
authored
12 years ago
by
Anton Khirnov
Browse files
Options
Downloads
Patches
Plain Diff
avconv: split option parsing into a separate file.
parent
8f2aa89a
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Makefile
+1
-0
1 addition, 0 deletions
Makefile
avconv.c
+48
-2179
48 additions, 2179 deletions
avconv.c
avconv.h
+360
-0
360 additions, 0 deletions
avconv.h
avconv_opt.c
+1915
-0
1915 additions, 0 deletions
avconv_opt.c
with
2324 additions
and
2179 deletions
Makefile
+
1
−
0
View file @
f5e66827
...
@@ -60,6 +60,7 @@ PROGS-$(CONFIG_AVSERVER) += avserver
...
@@ -60,6 +60,7 @@ PROGS-$(CONFIG_AVSERVER) += avserver
PROGS
:=
$(
PROGS-yes:%
=
%
$(
EXESUF
))
PROGS
:=
$(
PROGS-yes:%
=
%
$(
EXESUF
))
OBJS
=
cmdutils.o
OBJS
=
cmdutils.o
OBJS-avconv
=
avconv_opt.o
TESTTOOLS
=
audiogen videogen rotozoom tiny_psnr
base64
TESTTOOLS
=
audiogen videogen rotozoom tiny_psnr
base64
HOSTPROGS
:=
$(
TESTTOOLS:%
=
tests/%
)
doc/print_options
HOSTPROGS
:=
$(
TESTTOOLS:%
=
tests/%
)
doc/print_options
TOOLS
=
qt-faststart trasher
TOOLS
=
qt-faststart trasher
...
...
This diff is collapsed.
Click to expand it.
avconv.c
+
48
−
2179
View file @
f5e66827
This diff is collapsed.
Click to expand it.
avconv.h
0 → 100644
+
360
−
0
View file @
f5e66827
/*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef AVCONV_H
#define AVCONV_H
#include
"config.h"
#include
<stdint.h>
#include
<stdio.h>
#if HAVE_PTHREADS
#include
<pthread.h>
#endif
#include
"cmdutils.h"
#include
"libavformat/avformat.h"
#include
"libavformat/avio.h"
#include
"libavcodec/avcodec.h"
#include
"libavfilter/avfilter.h"
#include
"libavfilter/avfiltergraph.h"
#include
"libavutil/avutil.h"
#include
"libavutil/dict.h"
#include
"libavutil/fifo.h"
#include
"libavutil/pixfmt.h"
#include
"libavutil/rational.h"
#define VSYNC_AUTO -1
#define VSYNC_PASSTHROUGH 0
#define VSYNC_CFR 1
#define VSYNC_VFR 2
/* select an input stream for an output stream */
typedef
struct
StreamMap
{
int
disabled
;
/** 1 is this mapping is disabled by a negative map */
int
file_index
;
int
stream_index
;
int
sync_file_index
;
int
sync_stream_index
;
char
*
linklabel
;
/** name of an output link, for mapping lavfi outputs */
}
StreamMap
;
/**
* select an input file for an output file
*/
typedef
struct
MetadataMap
{
int
file
;
///< file index
char
type
;
///< type of metadata to copy -- (g)lobal, (s)tream, (c)hapter or (p)rogram
int
index
;
///< stream/chapter/program number
}
MetadataMap
;
typedef
struct
OptionsContext
{
/* input/output options */
int64_t
start_time
;
const
char
*
format
;
SpecifierOpt
*
codec_names
;
int
nb_codec_names
;
SpecifierOpt
*
audio_channels
;
int
nb_audio_channels
;
SpecifierOpt
*
audio_sample_rate
;
int
nb_audio_sample_rate
;
SpecifierOpt
*
frame_rates
;
int
nb_frame_rates
;
SpecifierOpt
*
frame_sizes
;
int
nb_frame_sizes
;
SpecifierOpt
*
frame_pix_fmts
;
int
nb_frame_pix_fmts
;
/* input options */
int64_t
input_ts_offset
;
int
rate_emu
;
SpecifierOpt
*
ts_scale
;
int
nb_ts_scale
;
SpecifierOpt
*
dump_attachment
;
int
nb_dump_attachment
;
/* output options */
StreamMap
*
stream_maps
;
int
nb_stream_maps
;
/* first item specifies output metadata, second is input */
MetadataMap
(
*
meta_data_maps
)[
2
];
int
nb_meta_data_maps
;
int
metadata_global_manual
;
int
metadata_streams_manual
;
int
metadata_chapters_manual
;
const
char
**
attachments
;
int
nb_attachments
;
int
chapters_input_file
;
int64_t
recording_time
;
uint64_t
limit_filesize
;
float
mux_preload
;
float
mux_max_delay
;
int
video_disable
;
int
audio_disable
;
int
subtitle_disable
;
int
data_disable
;
/* indexed by output file stream index */
int
*
streamid_map
;
int
nb_streamid_map
;
SpecifierOpt
*
metadata
;
int
nb_metadata
;
SpecifierOpt
*
max_frames
;
int
nb_max_frames
;
SpecifierOpt
*
bitstream_filters
;
int
nb_bitstream_filters
;
SpecifierOpt
*
codec_tags
;
int
nb_codec_tags
;
SpecifierOpt
*
sample_fmts
;
int
nb_sample_fmts
;
SpecifierOpt
*
qscale
;
int
nb_qscale
;
SpecifierOpt
*
forced_key_frames
;
int
nb_forced_key_frames
;
SpecifierOpt
*
force_fps
;
int
nb_force_fps
;
SpecifierOpt
*
frame_aspect_ratios
;
int
nb_frame_aspect_ratios
;
SpecifierOpt
*
rc_overrides
;
int
nb_rc_overrides
;
SpecifierOpt
*
intra_matrices
;
int
nb_intra_matrices
;
SpecifierOpt
*
inter_matrices
;
int
nb_inter_matrices
;
SpecifierOpt
*
top_field_first
;
int
nb_top_field_first
;
SpecifierOpt
*
metadata_map
;
int
nb_metadata_map
;
SpecifierOpt
*
presets
;
int
nb_presets
;
SpecifierOpt
*
copy_initial_nonkeyframes
;
int
nb_copy_initial_nonkeyframes
;
SpecifierOpt
*
filters
;
int
nb_filters
;
}
OptionsContext
;
typedef
struct
InputFilter
{
AVFilterContext
*
filter
;
struct
InputStream
*
ist
;
struct
FilterGraph
*
graph
;
uint8_t
*
name
;
}
InputFilter
;
typedef
struct
OutputFilter
{
AVFilterContext
*
filter
;
struct
OutputStream
*
ost
;
struct
FilterGraph
*
graph
;
uint8_t
*
name
;
/* temporary storage until stream maps are processed */
AVFilterInOut
*
out_tmp
;
}
OutputFilter
;
typedef
struct
FilterGraph
{
int
index
;
const
char
*
graph_desc
;
AVFilterGraph
*
graph
;
InputFilter
**
inputs
;
int
nb_inputs
;
OutputFilter
**
outputs
;
int
nb_outputs
;
}
FilterGraph
;
typedef
struct
InputStream
{
int
file_index
;
AVStream
*
st
;
int
discard
;
/* true if stream data should be discarded */
int
decoding_needed
;
/* true if the packets must be decoded in 'raw_fifo' */
AVCodec
*
dec
;
AVFrame
*
decoded_frame
;
int64_t
start
;
/* time when read started */
/* predicted dts of the next packet read for this stream or (when there are
* several frames in a packet) of the next frame in current packet */
int64_t
next_dts
;
/* dts of the last packet read for this stream */
int64_t
last_dts
;
PtsCorrectionContext
pts_ctx
;
double
ts_scale
;
int
is_start
;
/* is 1 at the start and after a discontinuity */
int
showed_multi_packet_warning
;
AVDictionary
*
opts
;
AVRational
framerate
;
/* framerate forced with -r */
int
resample_height
;
int
resample_width
;
int
resample_pix_fmt
;
int
resample_sample_fmt
;
int
resample_sample_rate
;
int
resample_channels
;
uint64_t
resample_channel_layout
;
/* a pool of free buffers for decoded data */
FrameBuffer
*
buffer_pool
;
/* decoded data from this stream goes into all those filters
* currently video and audio only */
InputFilter
**
filters
;
int
nb_filters
;
}
InputStream
;
typedef
struct
InputFile
{
AVFormatContext
*
ctx
;
int
eof_reached
;
/* true if eof reached */
int
ist_index
;
/* index of first stream in ist_table */
int
buffer_size
;
/* current total buffer size */
int64_t
ts_offset
;
int
nb_streams
;
/* number of stream that avconv is aware of; may be different
from ctx.nb_streams if new streams appear during av_read_frame() */
int
rate_emu
;
#if HAVE_PTHREADS
pthread_t
thread
;
/* thread reading from this file */
int
finished
;
/* the thread has exited */
int
joined
;
/* the thread has been joined */
pthread_mutex_t
fifo_lock
;
/* lock for access to fifo */
pthread_cond_t
fifo_cond
;
/* the main thread will signal on this cond after reading from fifo */
AVFifoBuffer
*
fifo
;
/* demuxed packets are stored here; freed by the main thread */
#endif
}
InputFile
;
typedef
struct
OutputStream
{
int
file_index
;
/* file index */
int
index
;
/* stream index in the output file */
int
source_index
;
/* InputStream index */
AVStream
*
st
;
/* stream in the output file */
int
encoding_needed
;
/* true if encoding needed for this stream */
int
frame_number
;
/* input pts and corresponding output pts
for A/V sync */
// double sync_ipts; /* dts from the AVPacket of the demuxer in second units */
struct
InputStream
*
sync_ist
;
/* input stream to sync against */
int64_t
sync_opts
;
/* output frame counter, could be changed to some true timestamp */
// FIXME look at frame_number
/* pts of the first frame encoded for this stream, used for limiting
* recording time */
int64_t
first_pts
;
AVBitStreamFilterContext
*
bitstream_filters
;
AVCodec
*
enc
;
int64_t
max_frames
;
AVFrame
*
filtered_frame
;
/* video only */
AVRational
frame_rate
;
int
force_fps
;
int
top_field_first
;
float
frame_aspect_ratio
;
float
last_quality
;
/* forced key frames */
int64_t
*
forced_kf_pts
;
int
forced_kf_count
;
int
forced_kf_index
;
char
*
forced_keyframes
;
FILE
*
logfile
;
OutputFilter
*
filter
;
char
*
avfilter
;
int64_t
sws_flags
;
AVDictionary
*
opts
;
int
is_past_recording_time
;
int
stream_copy
;
const
char
*
attachment_filename
;
int
copy_initial_nonkeyframes
;
enum
PixelFormat
pix_fmts
[
2
];
}
OutputStream
;
typedef
struct
OutputFile
{
AVFormatContext
*
ctx
;
AVDictionary
*
opts
;
int
ost_index
;
/* index of the first stream in output_streams */
int64_t
recording_time
;
/* desired length of the resulting file in microseconds */
int64_t
start_time
;
/* start time in microseconds */
uint64_t
limit_filesize
;
}
OutputFile
;
extern
InputStream
**
input_streams
;
extern
int
nb_input_streams
;
extern
InputFile
**
input_files
;
extern
int
nb_input_files
;
extern
OutputStream
**
output_streams
;
extern
int
nb_output_streams
;
extern
OutputFile
**
output_files
;
extern
int
nb_output_files
;
extern
FilterGraph
**
filtergraphs
;
extern
int
nb_filtergraphs
;
extern
char
*
pass_logfilename_prefix
;
extern
char
*
vstats_filename
;
extern
float
audio_drift_threshold
;
extern
float
dts_delta_threshold
;
extern
int
audio_volume
;
extern
int
audio_sync_method
;
extern
int
video_sync_method
;
extern
int
do_benchmark
;
extern
int
do_deinterlace
;
extern
int
do_hex_dump
;
extern
int
do_pkt_dump
;
extern
int
copy_ts
;
extern
int
copy_tb
;
extern
int
opt_shortest
;
extern
int
exit_on_error
;
extern
int
print_stats
;
extern
int
qp_hist
;
extern
int
same_quant
;
extern
const
AVIOInterruptCB
int_cb
;
extern
const
OptionDef
options
[];
void
reset_options
(
OptionsContext
*
o
);
void
show_usage
(
void
);
int
opt_cpuflags
(
const
char
*
opt
,
const
char
*
arg
);
void
opt_output_file
(
void
*
optctx
,
const
char
*
filename
);
void
assert_avoptions
(
AVDictionary
*
m
);
int
guess_input_channel_layout
(
InputStream
*
ist
);
int
configure_filtergraph
(
FilterGraph
*
fg
);
int
configure_output_filter
(
FilterGraph
*
fg
,
OutputFilter
*
ofilter
,
AVFilterInOut
*
out
);
#endif
/* AVCONV_H */
This diff is collapsed.
Click to expand it.
avconv_opt.c
0 → 100644
+
1915
−
0
View file @
f5e66827
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment