diff --git a/.github/workflows/linux-build-scripts.yml b/.github/workflows/linux-build-scripts.yml new file mode 100644 index 0000000..8bc14c1 --- /dev/null +++ b/.github/workflows/linux-build-scripts.yml @@ -0,0 +1,89 @@ +name: android build scripts + +on: + push: + branches: + - development + - main + paths: + - '.github/workflows/linux-build-scripts.yml' + - 'linux/**' + - 'scripts/**' + - 'tools/**' + - 'linux.sh' + pull_request: + branches: + - development + - main + paths: + - '.github/workflows/linux-build-scripts.yml' + - 'linux/**' + - 'scripts/**' + - 'tools/**' + - 'linux.sh' + +jobs: + build-main-on-ubuntu-2204: + name: main on ubuntu-22.04 + runs-on: ubuntu-22.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: run the build script + run: ./linux.sh -d + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-lts-on-ubuntu-2204: + name: lts on ubuntu 22.04 + runs-on: ubuntu-22.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: run the build script + run: ./linux.sh -d --lts + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-main-on-ubuntu-2004: + name: main on ubuntu-20.04 + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: run the build script + run: ./linux.sh -d + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' + build-lts-on-ubuntu-2004: + name: lts on ubuntu 20.04 + runs-on: ubuntu-20.04 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: run the build script + run: ./linux.sh -d --lts + - name: print build logs + if: ${{ always() }} + run: cat build.log + - name: print ffbuild logs + if: ${{ failure() }} + run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log' diff --git a/docs/linux/html/annotated.html b/docs/linux/html/annotated.html new file mode 100644 index 0000000..cf44173 --- /dev/null +++ b/docs/linux/html/annotated.html @@ -0,0 +1,134 @@ + + + + + + + +FFmpegKit Linux API: Data Structures + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nffmpegkit
 CAbstractSession
 CArchDetect
 CChapter
 CFFmpegKit
 CFFmpegKitConfig
 CFFmpegSession
 CFFprobeKit
 CFFprobeSession
 CLog
 CMediaInformation
 CMediaInformationJsonParser
 CMediaInformationSession
 CPackages
 CReturnCode
 CSession
 CStatistics
 CStreamInformation
 CAudioChannelMap
 CBenchmarkTimeStamps
 CCallbackData
 CCompactContext
 CDefaultContext
 CFilterGraph
 CFlatContext
 CHWAccel
 CHWDevice
 CINIContext
 CInputFile
 CInputFilter
 CInputStream
 Csub2video
 CJSONContext
 CLogBuffer
 COption
 COptionDef
 COptionGroup
 COptionGroupDef
 COptionGroupList
 COptionParseContext
 COptionsContext
 COutputFile
 COutputFilter
 COutputStream
 CReadInterval
 Csection
 CSpecifierOpt
 CStreamMap
 Cunit_value
 CWriter
 CWriterContext
 CXMLContext
+
+
+ + + + diff --git a/docs/linux/html/bc_s.png b/docs/linux/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/linux/html/bc_s.png differ diff --git a/docs/linux/html/bdwn.png b/docs/linux/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/linux/html/bdwn.png differ diff --git a/docs/linux/html/classes.html b/docs/linux/html/classes.html new file mode 100644 index 0000000..cb8b253 --- /dev/null +++ b/docs/linux/html/classes.html @@ -0,0 +1,187 @@ + + + + + + + +FFmpegKit Linux API: Data Structure Index + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
a | b | c | d | f | h | i | j | l | m | o | p | r | s | u | w | x
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  a  
+
FFmpegKitConfig (ffmpegkit)   
  l  
+
OptionsContext   StreamInformation (ffmpegkit)   
FFmpegSession (ffmpegkit)   OutputFile   StreamMap   
AbstractSession (ffmpegkit)   FFprobeKit (ffmpegkit)   Log (ffmpegkit)   OutputFilter   InputStream::sub2video   
ArchDetect (ffmpegkit)   FFprobeSession (ffmpegkit)   LogBuffer   OutputStream   
  u  
+
AudioChannelMap   FilterGraph   
  m  
+
  p  
+
  b  
+
FlatContext   unit_value   
  h  
+
MediaInformation (ffmpegkit)   Packages (ffmpegkit)   
  w  
+
BenchmarkTimeStamps   MediaInformationJsonParser (ffmpegkit)   
  r  
+
  c  
+
HWAccel   MediaInformationSession (ffmpegkit)   Writer   
HWDevice   
  o  
+
ReadInterval   WriterContext   
CallbackData   
  i  
+
ReturnCode (ffmpegkit)   
  x  
+
Chapter (ffmpegkit)   Option   
  s  
+
CompactContext   INIContext   OptionDef   XMLContext   
  d  
+
InputFile   OptionGroup   section   
InputFilter   OptionGroupDef   Session (ffmpegkit)   
DefaultContext   InputStream   OptionGroupList   SpecifierOpt   
  f  
+
  j  
+
OptionParseContext   Statistics (ffmpegkit)   
FFmpegKit (ffmpegkit)   JSONContext   
+
a | b | c | d | f | h | i | j | l | m | o | p | r | s | u | w | x
+
+ + + + diff --git a/docs/linux/html/closed.png b/docs/linux/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/linux/html/closed.png differ diff --git a/docs/linux/html/d0/d0f/struct_output_filter.html b/docs/linux/html/d0/d0f/struct_output_filter.html new file mode 100644 index 0000000..eac0fa9 --- /dev/null +++ b/docs/linux/html/d0/d0f/struct_output_filter.html @@ -0,0 +1,361 @@ + + + + + + + +FFmpegKit Linux API: OutputFilter Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OutputFilter Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

AVFilterContext * filter
 
struct OutputStreamost
 
struct FilterGraphgraph
 
uint8_t * name
 
AVFilterInOut * out_tmp
 
enum AVMediaType type
 
int width
 
int height
 
AVRational frame_rate
 
int format
 
int sample_rate
 
uint64_t channel_layout
 
intformats
 
uint64_t * channel_layouts
 
intsample_rates
 
+

Detailed Description

+
+

Definition at line 288 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ channel_layout

+ +
+
+ + + + +
uint64_t OutputFilter::channel_layout
+
+ +

Definition at line 303 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ channel_layouts

+ +
+
+ + + + +
uint64_t* OutputFilter::channel_layouts
+
+ +

Definition at line 307 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter

+ +
+
+ + + + +
AVFilterContext* OutputFilter::filter
+
+ +

Definition at line 289 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ format

+ +
+
+ + + + +
int OutputFilter::format
+
+ +

Definition at line 301 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ formats

+ +
+
+ + + + +
int* OutputFilter::formats
+
+ +

Definition at line 306 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_rate

+ +
+
+ + + + +
AVRational OutputFilter::frame_rate
+
+ +

Definition at line 300 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ graph

+ +
+
+ + + + +
struct FilterGraph* OutputFilter::graph
+
+ +

Definition at line 291 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ height

+ +
+
+ + + + +
int OutputFilter::height
+
+ +

Definition at line 299 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
uint8_t* OutputFilter::name
+
+ +

Definition at line 292 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ost

+ +
+
+ + + + +
struct OutputStream* OutputFilter::ost
+
+ +

Definition at line 290 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ out_tmp

+ +
+
+ + + + +
AVFilterInOut* OutputFilter::out_tmp
+
+ +

Definition at line 295 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sample_rate

+ +
+
+ + + + +
int OutputFilter::sample_rate
+
+ +

Definition at line 302 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sample_rates

+ +
+
+ + + + +
int* OutputFilter::sample_rates
+
+ +

Definition at line 308 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ type

+ +
+
+ + + + +
enum AVMediaType OutputFilter::type
+
+ +

Definition at line 296 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ width

+ +
+
+ + + + +
int OutputFilter::width
+
+ +

Definition at line 299 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d0/d19/_return_code_8h.html b/docs/linux/html/d0/d19/_return_code_8h.html new file mode 100644 index 0000000..44c3979 --- /dev/null +++ b/docs/linux/html/d0/d19/_return_code_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: ReturnCode.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
ReturnCode.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::ReturnCode
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d0/d19/_return_code_8h_source.html b/docs/linux/html/d0/d19/_return_code_8h_source.html new file mode 100644 index 0000000..b1eed67 --- /dev/null +++ b/docs/linux/html/d0/d19/_return_code_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +FFmpegKit Linux API: ReturnCode.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ReturnCode.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_RETURN_CODE_H
+
21 #define FFMPEG_KIT_RETURN_CODE_H
+
22 
+
23 #include <memory>
+
24 #include <iostream>
+
25 
+
26 namespace ffmpegkit {
+
27 
+
28  class ReturnCode {
+
29  public:
+
30  static constexpr int Success = 0;
+
31  static constexpr int Cancel = 255;
+
32 
+
33  static bool isSuccess(const std::shared_ptr<ffmpegkit::ReturnCode> value);
+
34  static bool isCancel(const std::shared_ptr<ffmpegkit::ReturnCode> value);
+
35 
+
36  ReturnCode(const int value);
+
37  int getValue() const;
+
38  bool isValueSuccess() const;
+
39  bool isValueError() const;
+
40  bool isValueCancel() const;
+
41  friend std::ostream& operator<<(std::ostream& out, const std::shared_ptr<ffmpegkit::ReturnCode>& o);
+
42 
+
43  private:
+
44  int _value;
+
45  };
+
46 
+
47 }
+
48 
+
49 #endif // FFMPEG_KIT_RETURN_CODE_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::ReturnCode::isSuccess
static bool isSuccess(const std::shared_ptr< ffmpegkit::ReturnCode > value)
Definition: ReturnCode.cpp:22
+
ffmpegkit::ReturnCode::getValue
int getValue() const
Definition: ReturnCode.cpp:33
+
ffmpegkit::ReturnCode::isValueError
bool isValueError() const
Definition: ReturnCode.cpp:41
+
ffmpegkit::ReturnCode::operator<<
friend std::ostream & operator<<(std::ostream &out, const std::shared_ptr< ffmpegkit::ReturnCode > &o)
Definition: ReturnCode.cpp:51
+
ffmpegkit::ReturnCode::ReturnCode
ReturnCode(const int value)
Definition: ReturnCode.cpp:30
+
ffmpegkit::ReturnCode::_value
int _value
Definition: ReturnCode.h:44
+
ffmpegkit::ReturnCode::isCancel
static bool isCancel(const std::shared_ptr< ffmpegkit::ReturnCode > value)
Definition: ReturnCode.cpp:26
+
ffmpegkit::ReturnCode::isValueCancel
bool isValueCancel() const
Definition: ReturnCode.cpp:45
+
ffmpegkit::ReturnCode::Cancel
static constexpr int Cancel
Definition: ReturnCode.h:31
+
ffmpegkit::ReturnCode
Definition: ReturnCode.h:28
+
ffmpegkit::ReturnCode::isValueSuccess
bool isValueSuccess() const
Definition: ReturnCode.cpp:37
+
ffmpegkit::ReturnCode::Success
static constexpr int Success
Definition: ReturnCode.h:30
+ + + + diff --git a/docs/linux/html/d0/d5a/_session_8h.html b/docs/linux/html/d0/d5a/_session_8h.html new file mode 100644 index 0000000..9021200 --- /dev/null +++ b/docs/linux/html/d0/d5a/_session_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: Session.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
Session.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::Session
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d0/d5a/_session_8h_source.html b/docs/linux/html/d0/d5a/_session_8h_source.html new file mode 100644 index 0000000..ea9d93c --- /dev/null +++ b/docs/linux/html/d0/d5a/_session_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +FFmpegKit Linux API: Session.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Session.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_SESSION_H
+
21 #define FFMPEG_KIT_SESSION_H
+
22 
+
23 #include "Log.h"
+
24 #include "LogCallback.h"
+
25 #include "LogRedirectionStrategy.h"
+
26 #include "ReturnCode.h"
+
27 #include "SessionState.h"
+
28 #include <string>
+
29 #include <chrono>
+
30 #include <list>
+
31 
+
32 namespace ffmpegkit {
+
33 
+
37  class Session {
+
38  public:
+
39 
+
45  virtual ffmpegkit::LogCallback getLogCallback() const = 0;
+
46 
+
52  virtual long getSessionId() const = 0;
+
53 
+
59  virtual std::chrono::time_point<std::chrono::system_clock> getCreateTime() const = 0;
+
60 
+
66  virtual std::chrono::time_point<std::chrono::system_clock> getStartTime() const = 0;
+
67 
+
73  virtual std::chrono::time_point<std::chrono::system_clock> getEndTime() const = 0;
+
74 
+
81  virtual long getDuration() const = 0;
+
82 
+
88  virtual std::shared_ptr<std::list<std::string>> getArguments() const = 0;
+
89 
+
95  virtual std::string getCommand() const = 0;
+
96 
+
104  virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getAllLogsWithTimeout(const int waitTimeout) const = 0;
+
105 
+
112  virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getAllLogs() const = 0;
+
113 
+
121  virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getLogs() const = 0;
+
122 
+
131  virtual std::string getAllLogsAsStringWithTimeout(const int waitTimeout) const = 0;
+
132 
+
139  virtual std::string getAllLogsAsString() const = 0;
+
140 
+
148  virtual std::string getLogsAsString() const = 0;
+
149 
+
155  virtual std::string getOutput() const = 0;
+
156 
+
162  virtual ffmpegkit::SessionState getState() const = 0;
+
163 
+
172  virtual std::shared_ptr<ffmpegkit::ReturnCode> getReturnCode() const = 0;
+
173 
+
183  virtual std::string getFailStackTrace() const = 0;
+
184 
+ +
191 
+
199  virtual bool thereAreAsynchronousMessagesInTransmit() const = 0;
+
200 
+
209  virtual void addLog(const std::shared_ptr<ffmpegkit::Log> log) = 0;
+
210 
+
214  virtual void startRunning() = 0;
+
215 
+
221  virtual void complete(const std::shared_ptr<ffmpegkit::ReturnCode> returnCode) = 0;
+
222 
+
228  virtual void fail(const char* error) = 0;
+
229 
+
235  virtual bool isFFmpeg() const = 0;
+
236 
+
242  virtual bool isFFprobe() const = 0;
+
243 
+
249  virtual bool isMediaInformation() const = 0;
+
250 
+
254  virtual void cancel() = 0;
+
255 
+
256  };
+
257 
+
258 }
+
259 
+
260 #endif // FFMPEG_KIT_SESSION_H
+
+
ffmpegkit::Session::getState
virtual ffmpegkit::SessionState getState() const =0
+
ffmpegkit::Session::getAllLogsAsString
virtual std::string getAllLogsAsString() const =0
+
ffmpegkit::Session::getReturnCode
virtual std::shared_ptr< ffmpegkit::ReturnCode > getReturnCode() const =0
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit::Session::thereAreAsynchronousMessagesInTransmit
virtual bool thereAreAsynchronousMessagesInTransmit() const =0
+
ffmpegkit::Session::getCommand
virtual std::string getCommand() const =0
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::Session::isFFprobe
virtual bool isFFprobe() const =0
+
ffmpegkit::Session::getStartTime
virtual std::chrono::time_point< std::chrono::system_clock > getStartTime() const =0
+
ffmpegkit::Session::getLogsAsString
virtual std::string getLogsAsString() const =0
+
ffmpegkit::Session::getAllLogsAsStringWithTimeout
virtual std::string getAllLogsAsStringWithTimeout(const int waitTimeout) const =0
+
ffmpegkit::Session::getCreateTime
virtual std::chrono::time_point< std::chrono::system_clock > getCreateTime() const =0
+
ffmpegkit::Session::addLog
virtual void addLog(const std::shared_ptr< ffmpegkit::Log > log)=0
+
ffmpegkit::Session::getLogCallback
virtual ffmpegkit::LogCallback getLogCallback() const =0
+
LogRedirectionStrategy.h
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::Session
Definition: Session.h:37
+
ffmpegkit::Session::getEndTime
virtual std::chrono::time_point< std::chrono::system_clock > getEndTime() const =0
+
ffmpegkit::Session::getArguments
virtual std::shared_ptr< std::list< std::string > > getArguments() const =0
+
ffmpegkit::Session::getSessionId
virtual long getSessionId() const =0
+
ffmpegkit::Session::getAllLogs
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs() const =0
+
ffmpegkit::Session::fail
virtual void fail(const char *error)=0
+
ffmpegkit::Session::cancel
virtual void cancel()=0
+
ffmpegkit::Session::isFFmpeg
virtual bool isFFmpeg() const =0
+
ffmpegkit::Session::getOutput
virtual std::string getOutput() const =0
+
ffmpegkit::Session::getAllLogsWithTimeout
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout(const int waitTimeout) const =0
+
SessionState.h
+
ffmpegkit::Session::isMediaInformation
virtual bool isMediaInformation() const =0
+
LogCallback.h
+
ffmpegkit::Session::complete
virtual void complete(const std::shared_ptr< ffmpegkit::ReturnCode > returnCode)=0
+
ffmpegkit::Session::startRunning
virtual void startRunning()=0
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
ffmpegkit::Session::getDuration
virtual long getDuration() const =0
+
ffmpegkit::Session::getLogs
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs() const =0
+
ffmpegkit::Session::getLogRedirectionStrategy
virtual LogRedirectionStrategy getLogRedirectionStrategy() const =0
+
ReturnCode.h
+
Log.h
+
ffmpegkit::Session::getFailStackTrace
virtual std::string getFailStackTrace() const =0
+ + + + diff --git a/docs/linux/html/d0/da7/_log_8cpp.html b/docs/linux/html/d0/da7/_log_8cpp.html new file mode 100644 index 0000000..b702be4 --- /dev/null +++ b/docs/linux/html/d0/da7/_log_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +FFmpegKit Linux API: Log.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Log.cpp File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/docs/linux/html/d0/da7/_log_8cpp_source.html b/docs/linux/html/d0/da7/_log_8cpp_source.html new file mode 100644 index 0000000..7f5b31e --- /dev/null +++ b/docs/linux/html/d0/da7/_log_8cpp_source.html @@ -0,0 +1,119 @@ + + + + + + + +FFmpegKit Linux API: Log.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Log.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "Log.h"
+
21 
+
22 ffmpegkit::Log::Log(const long sessionId, const ffmpegkit::Level level, const char* message) : _sessionId{sessionId}, _level{level}, _message{message} {
+
23 }
+
24 
+ +
26  return _sessionId;
+
27 }
+
28 
+ +
30  return _level;
+
31 }
+
32 
+
33 std::string ffmpegkit::Log::getMessage() const {
+
34  return _message;
+
35 }
+
+
ffmpegkit::Level
Level
Definition: Level.h:28
+
ffmpegkit::Log::getMessage
std::string getMessage() const
Definition: Log.cpp:33
+
ffmpegkit::Log::getLevel
ffmpegkit::Level getLevel() const
Definition: Log.cpp:29
+
ffmpegkit::Log::Log
Log(const long sessionId, const ffmpegkit::Level level, const char *message)
Definition: Log.cpp:22
+
Log.h
+
ffmpegkit::Log::getSessionId
long getSessionId() const
Definition: Log.cpp:25
+ + + + diff --git a/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp.html b/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp.html new file mode 100644 index 0000000..bbac166 --- /dev/null +++ b/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp.html @@ -0,0 +1,161 @@ + + + + + + + +FFmpegKit Linux API: FFprobeKit.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions | +Variables
+
+
FFprobeKit.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

void * ffmpegKitInitialize ()
 
static std::shared_ptr< std::list< std::string > > defaultGetMediaInformationCommandArguments (const std::string &path)
 
+ + + +

+Variables

const void * _ffprobeKitInitializer {ffmpegKitInitialize()}
 
+

Function Documentation

+ +

◆ defaultGetMediaInformationCommandArguments()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::shared_ptr<std::list<std::string> > defaultGetMediaInformationCommandArguments (const std::string & path)
+
+static
+
+ +

Definition at line 29 of file FFprobeKit.cpp.

+ +
+
+ +

◆ ffmpegKitInitialize()

+ +
+
+ + + + + + + +
void* ffmpegKitInitialize ()
+
+ +

Definition at line 762 of file FFmpegKitConfig.cpp.

+ +
+
+

Variable Documentation

+ +

◆ _ffprobeKitInitializer

+ +
+
+ + + + +
const void* _ffprobeKitInitializer {ffmpegKitInitialize()}
+
+ +

Definition at line 27 of file FFprobeKit.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp_source.html b/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp_source.html new file mode 100644 index 0000000..5337595 --- /dev/null +++ b/docs/linux/html/d0/dc3/_f_fprobe_kit_8cpp_source.html @@ -0,0 +1,228 @@ + + + + + + + +FFmpegKit Linux API: FFprobeKit.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFprobeKit.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "fftools_ffmpeg.h"
+
21 #include "FFmpegKit.h"
+
22 #include "FFmpegKitConfig.h"
+
23 #include "FFprobeKit.h"
+
24 
+
25 extern void* ffmpegKitInitialize();
+
26 
+ +
28 
+
29 static std::shared_ptr<std::list<std::string>> defaultGetMediaInformationCommandArguments(const std::string& path) {
+
30  std::shared_ptr<std::list<std::string>> arguments = std::make_shared<std::list<std::string>>();
+
31  arguments->push_back(std::string("-v"));
+
32  arguments->push_back(std::string("error"));
+
33  arguments->push_back(std::string("-hide_banner"));
+
34  arguments->push_back(std::string("-print_format"));
+
35  arguments->push_back(std::string("json"));
+
36  arguments->push_back(std::string("-show_format"));
+
37  arguments->push_back(std::string("-show_streams"));
+
38  arguments->push_back(std::string("-show_chapters"));
+
39  arguments->push_back(std::string("-i"));
+
40  arguments->push_back(path);
+
41  return arguments;
+
42 }
+
43 
+
44 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::executeWithArguments(const std::shared_ptr<std::list<std::string>> arguments) {
+
45  auto session = ffmpegkit::FFprobeSession::create(arguments);
+ +
47  return session;
+
48 }
+
49 
+
50 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFprobeSessionCompleteCallback completeCallback) {
+
51  auto session = ffmpegkit::FFprobeSession::create(arguments, completeCallback);
+ +
53  return session;
+
54 }
+
55 
+
56 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) {
+
57  auto session = ffmpegkit::FFprobeSession::create(arguments, completeCallback, logCallback);
+ +
59  return session;
+
60 }
+
61 
+
62 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::execute(const std::string command) {
+ + +
65  return session;
+
66 }
+
67 
+
68 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback) {
+
69  auto session = ffmpegkit::FFprobeSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback);
+ +
71  return session;
+
72 }
+
73 
+
74 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback){
+
75  auto session = ffmpegkit::FFprobeSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback);
+ +
77  return session;
+
78 }
+
79 
+
80 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::FFprobeKit::getMediaInformation(const std::string path) {
+
81  auto arguments = defaultGetMediaInformationCommandArguments(path);
+
82  auto session = ffmpegkit::MediaInformationSession::create(arguments);
+ +
84  return session;
+
85 }
+
86 
+
87 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::FFprobeKit::getMediaInformation(const std::string path, const int waitTimeout) {
+
88  auto arguments = defaultGetMediaInformationCommandArguments(path);
+
89  auto session = ffmpegkit::MediaInformationSession::create(arguments);
+ +
91  return session;
+
92 }
+
93 
+
94 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback) {
+
95  auto arguments = defaultGetMediaInformationCommandArguments(path);
+
96  auto session = ffmpegkit::MediaInformationSession::create(arguments, completeCallback);
+ +
98  return session;
+
99 }
+
100 
+
101 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout) {
+
102  auto arguments = defaultGetMediaInformationCommandArguments(path);
+
103  auto session = ffmpegkit::MediaInformationSession::create(arguments, completeCallback, logCallback);
+ +
105  return session;
+
106 }
+
107 
+
108 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::FFprobeKit::getMediaInformationFromCommand(const std::string command) {
+ + +
111  return session;
+
112 }
+
113 
+
114 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFprobeSession>>> ffmpegkit::FFprobeKit::listFFprobeSessions() {
+ +
116 }
+
117 
+
118 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::MediaInformationSession>>> ffmpegkit::FFprobeKit::listMediaInformationSessions() {
+ +
120 }
+
+
fftools_ffmpeg.h
+
ffmpegkit::MediaInformationSession::create
static std::shared_ptr< ffmpegkit::MediaInformationSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: MediaInformationSession.cpp:26
+
FFmpegKit.h
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
FFprobeKit.h
+
ffmpegkit::FFprobeSession::create
static std::shared_ptr< ffmpegkit::FFprobeSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFprobeSession.cpp:26
+
ffmpegkit::FFmpegKitConfig::getFFprobeSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > getFFprobeSessions()
Definition: FFmpegKitConfig.cpp:1273
+
ffmpegkit::FFprobeKit::listMediaInformationSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > listMediaInformationSessions()
Definition: FFprobeKit.cpp:118
+
ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute
static void asyncFFprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1072
+
ffmpegkit::FFmpegKitConfig::getMediaInformationExecute
static void getMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, const int waitTimeout)
Definition: FFmpegKitConfig.cpp:1027
+
ffmpegkit::FFprobeKit::execute
static std::shared_ptr< ffmpegkit::FFprobeSession > execute(const std::string command)
Definition: FFprobeKit.cpp:62
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::FFprobeKit::getMediaInformationAsync
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:94
+
ffmpegkit::FFmpegKitConfig::getMediaInformationSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > getMediaInformationSessions()
Definition: FFmpegKitConfig.cpp:1291
+
ffmpegkit::FFmpegKitConfig::parseArguments
static std::shared_ptr< std::list< std::string > > parseArguments(const std::string &command)
Definition: FFmpegKitConfig.cpp:1349
+
ffmpegkit::FFprobeKit::getMediaInformationFromCommand
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformationFromCommand(const std::string command)
Definition: FFprobeKit.cpp:108
+
ffmpegKitInitialize
void * ffmpegKitInitialize()
Definition: FFmpegKitConfig.cpp:762
+
ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit
Definition: AbstractSession.h:37
+
ffmpegkit::FFprobeKit::getMediaInformation
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformation(const std::string path)
Definition: FFprobeKit.cpp:80
+
defaultGetMediaInformationCommandArguments
static std::shared_ptr< std::list< std::string > > defaultGetMediaInformationCommandArguments(const std::string &path)
Definition: FFprobeKit.cpp:29
+
ffmpegkit::FFprobeKit::executeWithArgumentsAsync
static std::shared_ptr< ffmpegkit::FFprobeSession > executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:50
+
FFmpegKitConfig.h
+
ffmpegkit::FFprobeKit::executeWithArguments
static std::shared_ptr< ffmpegkit::FFprobeSession > executeWithArguments(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFprobeKit.cpp:44
+
ffmpegkit::FFprobeKit::executeAsync
static std::shared_ptr< ffmpegkit::FFprobeSession > executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:68
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
_ffprobeKitInitializer
const void * _ffprobeKitInitializer
Definition: FFprobeKit.cpp:27
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+
ffmpegkit::FFprobeKit::listFFprobeSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > listFFprobeSessions()
Definition: FFprobeKit.cpp:114
+
ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute
static void asyncGetMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, int waitTimeout)
Definition: FFmpegKitConfig.cpp:1100
+
ffmpegkit::FFmpegKitConfig::ffprobeExecute
static void ffprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1015
+ + + + diff --git a/docs/linux/html/d0/de7/classffmpegkit_1_1_statistics.html b/docs/linux/html/d0/de7/classffmpegkit_1_1_statistics.html new file mode 100644 index 0000000..2699880 --- /dev/null +++ b/docs/linux/html/d0/de7/classffmpegkit_1_1_statistics.html @@ -0,0 +1,547 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::Statistics Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Attributes
+
+
ffmpegkit::Statistics Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Statistics (const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)
 
long getSessionId ()
 
int getVideoFrameNumber ()
 
float getVideoFps ()
 
float getVideoQuality ()
 
int64_t getSize ()
 
int getTime ()
 
double getBitrate ()
 
double getSpeed ()
 
+ + + + + + + + + + + + + + + + + +

+Private Attributes

long _sessionId
 
int _videoFrameNumber
 
float _videoFps
 
float _videoQuality
 
int64_t _size
 
int _time
 
double _bitrate
 
double _speed
 
+

Detailed Description

+

Statistics entry for an FFmpeg execute session.

+ +

Definition at line 30 of file Statistics.h.

+

Constructor & Destructor Documentation

+ +

◆ Statistics()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::Statistics::Statistics (const long sessionId,
const int videoFrameNumber,
const float videoFps,
const float videoQuality,
const int64_t size,
const int time,
const double bitrate,
const double speed 
)
+
+ +

Definition at line 22 of file Statistics.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getBitrate()

+ +
+
+ + + + + + + +
double ffmpegkit::Statistics::getBitrate ()
+
+ +

Definition at line 50 of file Statistics.cpp.

+ +
+
+ +

◆ getSessionId()

+ +
+
+ + + + + + + +
long ffmpegkit::Statistics::getSessionId ()
+
+ +

Definition at line 26 of file Statistics.cpp.

+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
int64_t ffmpegkit::Statistics::getSize ()
+
+ +

Definition at line 42 of file Statistics.cpp.

+ +
+
+ +

◆ getSpeed()

+ +
+
+ + + + + + + +
double ffmpegkit::Statistics::getSpeed ()
+
+ +

Definition at line 54 of file Statistics.cpp.

+ +
+
+ +

◆ getTime()

+ +
+
+ + + + + + + +
int ffmpegkit::Statistics::getTime ()
+
+ +

Definition at line 46 of file Statistics.cpp.

+ +
+
+ +

◆ getVideoFps()

+ +
+
+ + + + + + + +
float ffmpegkit::Statistics::getVideoFps ()
+
+ +

Definition at line 34 of file Statistics.cpp.

+ +
+
+ +

◆ getVideoFrameNumber()

+ +
+
+ + + + + + + +
int ffmpegkit::Statistics::getVideoFrameNumber ()
+
+ +

Definition at line 30 of file Statistics.cpp.

+ +
+
+ +

◆ getVideoQuality()

+ +
+
+ + + + + + + +
float ffmpegkit::Statistics::getVideoQuality ()
+
+ +

Definition at line 38 of file Statistics.cpp.

+ +
+
+

Field Documentation

+ +

◆ _bitrate

+ +
+
+ + + + + +
+ + + + +
double ffmpegkit::Statistics::_bitrate
+
+private
+
+ +

Definition at line 50 of file Statistics.h.

+ +
+
+ +

◆ _sessionId

+ +
+
+ + + + + +
+ + + + +
long ffmpegkit::Statistics::_sessionId
+
+private
+
+ +

Definition at line 44 of file Statistics.h.

+ +
+
+ +

◆ _size

+ +
+
+ + + + + +
+ + + + +
int64_t ffmpegkit::Statistics::_size
+
+private
+
+ +

Definition at line 48 of file Statistics.h.

+ +
+
+ +

◆ _speed

+ +
+
+ + + + + +
+ + + + +
double ffmpegkit::Statistics::_speed
+
+private
+
+ +

Definition at line 51 of file Statistics.h.

+ +
+
+ +

◆ _time

+ +
+
+ + + + + +
+ + + + +
int ffmpegkit::Statistics::_time
+
+private
+
+ +

Definition at line 49 of file Statistics.h.

+ +
+
+ +

◆ _videoFps

+ +
+
+ + + + + +
+ + + + +
float ffmpegkit::Statistics::_videoFps
+
+private
+
+ +

Definition at line 46 of file Statistics.h.

+ +
+
+ +

◆ _videoFrameNumber

+ +
+
+ + + + + +
+ + + + +
int ffmpegkit::Statistics::_videoFrameNumber
+
+private
+
+ +

Definition at line 45 of file Statistics.h.

+ +
+
+ +

◆ _videoQuality

+ +
+
+ + + + + +
+ + + + +
float ffmpegkit::Statistics::_videoQuality
+
+private
+
+ +

Definition at line 47 of file Statistics.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d1/d8a/_chapter_8cpp.html b/docs/linux/html/d1/d8a/_chapter_8cpp.html new file mode 100644 index 0000000..18634d0 --- /dev/null +++ b/docs/linux/html/d1/d8a/_chapter_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +FFmpegKit Linux API: Chapter.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Chapter.cpp File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/docs/linux/html/d1/d8a/_chapter_8cpp_source.html b/docs/linux/html/d1/d8a/_chapter_8cpp_source.html new file mode 100644 index 0000000..078528a --- /dev/null +++ b/docs/linux/html/d1/d8a/_chapter_8cpp_source.html @@ -0,0 +1,178 @@ + + + + + + + +FFmpegKit Linux API: Chapter.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Chapter.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "Chapter.h"
+
21 
+
22 ffmpegkit::Chapter::Chapter(std::shared_ptr<rapidjson::Value> chapterValue) : _chapterValue{chapterValue} {
+
23 }
+
24 
+
25 std::shared_ptr<int64_t> ffmpegkit::Chapter::getId() {
+
26  return getNumberProperty(KeyId);
+
27 }
+
28 
+
29 std::shared_ptr<std::string> ffmpegkit::Chapter::getTimeBase() {
+
30  return getStringProperty(KeyTimeBase);
+
31 }
+
32 
+
33 std::shared_ptr<int64_t> ffmpegkit::Chapter::getStart() {
+
34  return getNumberProperty(KeyStart);
+
35 }
+
36 
+
37 std::shared_ptr<std::string> ffmpegkit::Chapter::getStartTime() {
+
38  return getStringProperty(KeyStartTime);
+
39 }
+
40 
+
41 std::shared_ptr<int64_t> ffmpegkit::Chapter::getEnd() {
+
42  return getNumberProperty(KeyEnd);
+
43 }
+
44 
+
45 std::shared_ptr<std::string> ffmpegkit::Chapter::getEndTime() {
+
46  return getStringProperty(KeyEndTime);
+
47 }
+
48 
+
49 std::shared_ptr<rapidjson::Value> ffmpegkit::Chapter::getTags() {
+
50  return getProperties(KeyTags);
+
51 }
+
52 
+
53 std::shared_ptr<std::string> ffmpegkit::Chapter::getStringProperty(const char* key) {
+
54  if (_chapterValue->HasMember(key)) {
+
55  return std::make_shared<std::string>((*_chapterValue)[key].GetString());
+
56  } else {
+
57  return nullptr;
+
58  }
+
59 }
+
60 
+
61 std::shared_ptr<int64_t> ffmpegkit::Chapter::getNumberProperty(const char* key) {
+
62  if (_chapterValue->HasMember(key)) {
+
63  return std::make_shared<int64_t>((*_chapterValue)[key].GetInt64());
+
64  } else {
+
65  return nullptr;
+
66  }
+
67 }
+
68 
+
69 std::shared_ptr<rapidjson::Value> ffmpegkit::Chapter::getProperties(const char* key) {
+
70  if (_chapterValue->HasMember(key)) {
+
71  auto value = std::make_shared<rapidjson::Value>();
+
72  *value = (*_chapterValue)[key];
+
73  return value;
+
74  } else {
+
75  return nullptr;
+
76  }
+
77 }
+
78 
+
79 std::shared_ptr<rapidjson::Value> ffmpegkit::Chapter::getAllProperties() {
+
80  if (_chapterValue != nullptr) {
+
81  auto all = std::make_shared<rapidjson::Value>();
+
82  *all = (*_chapterValue);
+
83  return all;
+
84  } else {
+
85  return nullptr;
+
86  }
+
87 }
+
+
ffmpegkit::Chapter::getStart
std::shared_ptr< int64_t > getStart()
Definition: Chapter.cpp:33
+
ffmpegkit::Chapter::getId
std::shared_ptr< int64_t > getId()
Definition: Chapter.cpp:25
+
ffmpegkit::Chapter::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: Chapter.cpp:53
+
ffmpegkit::Chapter::getEndTime
std::shared_ptr< std::string > getEndTime()
Definition: Chapter.cpp:45
+
Chapter.h
+
ffmpegkit::Chapter::getTimeBase
std::shared_ptr< std::string > getTimeBase()
Definition: Chapter.cpp:29
+
ffmpegkit::Chapter::getStartTime
std::shared_ptr< std::string > getStartTime()
Definition: Chapter.cpp:37
+
ffmpegkit::Chapter::getEnd
std::shared_ptr< int64_t > getEnd()
Definition: Chapter.cpp:41
+
ffmpegkit::Chapter::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: Chapter.cpp:49
+
ffmpegkit::Chapter::Chapter
Chapter(std::shared_ptr< rapidjson::Value > chapterValue)
Definition: Chapter.cpp:22
+
ffmpegkit::Chapter::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: Chapter.cpp:79
+
ffmpegkit::Chapter::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: Chapter.cpp:69
+
ffmpegkit::Chapter::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: Chapter.cpp:61
+ + + + diff --git a/docs/linux/html/d1/da2/struct_writer_context.html b/docs/linux/html/d1/da2/struct_writer_context.html new file mode 100644 index 0000000..6894090 --- /dev/null +++ b/docs/linux/html/d1/da2/struct_writer_context.html @@ -0,0 +1,412 @@ + + + + + + + +FFmpegKit Linux API: WriterContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
WriterContext Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

const AVClass * class
 class of the writer More...
 
const Writerwriter
 the Writer of which this is an instance More...
 
char * name
 name of this writer instance More...
 
void * priv
 private data for use by the filter More...
 
const struct sectionsections
 array containing all sections More...
 
int nb_sections
 number of sections More...
 
int level
 current level, starting from 0 More...
 
unsigned int nb_item [SECTION_MAX_NB_LEVELS]
 
const struct sectionsection [SECTION_MAX_NB_LEVELS]
 
AVBPrint section_pbuf [SECTION_MAX_NB_LEVELS]
 
unsigned int nb_section_packet
 number of the packet section in case we are in "packets_and_frames" section More...
 
unsigned int nb_section_frame
 number of the frame section in case we are in "packets_and_frames" section More...
 
unsigned int nb_section_packet_frame
 nb_section_packet or nb_section_frame according if is_packets_and_frames More...
 
int string_validation
 
char * string_validation_replacement
 
unsigned int string_validation_utf8_flags
 
+

Detailed Description

+
+

Definition at line 465 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* WriterContext::class
+
+ +

class of the writer

+ +

Definition at line 466 of file fftools_ffprobe.c.

+ +
+
+ +

◆ level

+ +
+
+ + + + +
int WriterContext::level
+
+ +

current level, starting from 0

+ +

Definition at line 474 of file fftools_ffprobe.c.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
char* WriterContext::name
+
+ +

name of this writer instance

+ +

Definition at line 468 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_item

+ +
+
+ + + + +
unsigned int WriterContext::nb_item[SECTION_MAX_NB_LEVELS]
+
+

number of the item printed in the given section, starting from 0

+ +

Definition at line 477 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_section_frame

+ +
+
+ + + + +
unsigned int WriterContext::nb_section_frame
+
+ +

number of the frame section in case we are in "packets_and_frames" section

+ +

Definition at line 485 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_section_packet

+ +
+
+ + + + +
unsigned int WriterContext::nb_section_packet
+
+ +

number of the packet section in case we are in "packets_and_frames" section

+ +

Definition at line 484 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_section_packet_frame

+ +
+
+ + + + +
unsigned int WriterContext::nb_section_packet_frame
+
+ +

nb_section_packet or nb_section_frame according if is_packets_and_frames

+ +

Definition at line 486 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_sections

+ +
+
+ + + + +
int WriterContext::nb_sections
+
+ +

number of sections

+ +

Definition at line 472 of file fftools_ffprobe.c.

+ +
+
+ +

◆ priv

+ +
+
+ + + + +
void* WriterContext::priv
+
+ +

private data for use by the filter

+ +

Definition at line 469 of file fftools_ffprobe.c.

+ +
+
+ +

◆ section

+ +
+
+ + + + +
const struct section* WriterContext::section[SECTION_MAX_NB_LEVELS]
+
+

section per each level

+ +

Definition at line 480 of file fftools_ffprobe.c.

+ +
+
+ +

◆ section_pbuf

+ +
+
+ + + + +
AVBPrint WriterContext::section_pbuf[SECTION_MAX_NB_LEVELS]
+
+

generic print buffer dedicated to each section, used by various writers

+ +

Definition at line 481 of file fftools_ffprobe.c.

+ +
+
+ +

◆ sections

+ +
+
+ + + + +
const struct section* WriterContext::sections
+
+ +

array containing all sections

+ +

Definition at line 471 of file fftools_ffprobe.c.

+ +
+
+ +

◆ string_validation

+ +
+
+ + + + +
int WriterContext::string_validation
+
+ +

Definition at line 488 of file fftools_ffprobe.c.

+ +
+
+ +

◆ string_validation_replacement

+ +
+
+ + + + +
char* WriterContext::string_validation_replacement
+
+ +

Definition at line 489 of file fftools_ffprobe.c.

+ +
+
+ +

◆ string_validation_utf8_flags

+ +
+
+ + + + +
unsigned int WriterContext::string_validation_utf8_flags
+
+ +

Definition at line 490 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer

+ +
+
+ + + + +
const Writer* WriterContext::writer
+
+ +

the Writer of which this is an instance

+ +

Definition at line 467 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c.html b/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c.html new file mode 100644 index 0000000..9fdbb88 --- /dev/null +++ b/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c.html @@ -0,0 +1,498 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_hw.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions | +Variables
+
+
fftools_ffmpeg_hw.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static HWDevicehw_device_get_by_type (enum AVHWDeviceType type)
 
HWDevicehw_device_get_by_name (const char *name)
 
static HWDevicehw_device_add (void)
 
static char * hw_device_default_name (enum AVHWDeviceType type)
 
int hw_device_init_from_string (const char *arg, HWDevice **dev_out)
 
static int hw_device_init_from_type (enum AVHWDeviceType type, const char *device, HWDevice **dev_out)
 
void hw_device_free_all (void)
 
static HWDevicehw_device_match_by_codec (const AVCodec *codec)
 
int hw_device_setup_for_decode (InputStream *ist)
 
int hw_device_setup_for_encode (OutputStream *ost)
 
static int hwaccel_retrieve_data (AVCodecContext *avctx, AVFrame *input)
 
int hwaccel_decode_init (AVCodecContext *avctx)
 
int hw_device_setup_for_filter (FilterGraph *fg)
 
+ + + + + +

+Variables

__thread int nb_hw_devices
 
__thread HWDevice ** hw_devices
 
+

Function Documentation

+ +

◆ hw_device_add()

+ +
+
+ + + + + +
+ + + + + + + + +
static HWDevice* hw_device_add (void )
+
+static
+
+ +

Definition at line 63 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_default_name()

+ +
+
+ + + + + +
+ + + + + + + + +
static char* hw_device_default_name (enum AVHWDeviceType type)
+
+static
+
+ +

Definition at line 78 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_free_all()

+ +
+
+ + + + + + + + +
void hw_device_free_all (void )
+
+ +

Definition at line 283 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_get_by_name()

+ +
+
+ + + + + + + + +
HWDevice* hw_device_get_by_name (const char * name)
+
+ +

Definition at line 53 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_get_by_type()

+ +
+
+ + + + + +
+ + + + + + + + +
static HWDevice* hw_device_get_by_type (enum AVHWDeviceType type)
+
+static
+
+ +

Definition at line 39 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_init_from_string()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int hw_device_init_from_string (const char * arg,
HWDevice ** dev_out 
)
+
+ +

Definition at line 103 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_init_from_type()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int hw_device_init_from_type (enum AVHWDeviceType type,
const char * device,
HWDevice ** dev_out 
)
+
+static
+
+ +

Definition at line 240 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_match_by_codec()

+ +
+
+ + + + + +
+ + + + + + + + +
static HWDevice* hw_device_match_by_codec (const AVCodec * codec)
+
+static
+
+ +

Definition at line 295 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_decode()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_decode (InputStreamist)
+
+ +

Definition at line 312 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_encode()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_encode (OutputStreamost)
+
+ +

Definition at line 440 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_filter()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_filter (FilterGraphfg)
+
+ +

Definition at line 546 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hwaccel_decode_init()

+ +
+
+ + + + + + + + +
int hwaccel_decode_init (AVCodecContext * avctx)
+
+ +

Definition at line 537 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hwaccel_retrieve_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int hwaccel_retrieve_data (AVCodecContext * avctx,
AVFrame * input 
)
+
+static
+
+ +

Definition at line 495 of file fftools_ffmpeg_hw.c.

+ +
+
+

Variable Documentation

+ +

◆ hw_devices

+ +
+
+ + + + +
__thread HWDevice** hw_devices
+
+ +

Definition at line 37 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ nb_hw_devices

+ +
+
+ + + + +
__thread int nb_hw_devices
+
+ +

Definition at line 36 of file fftools_ffmpeg_hw.c.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c_source.html b/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c_source.html new file mode 100644 index 0000000..33cec5b --- /dev/null +++ b/docs/linux/html/d1/dba/fftools__ffmpeg__hw_8c_source.html @@ -0,0 +1,685 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_hw.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffmpeg_hw.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * This file is part of FFmpeg.
+
3  *
+
4  * FFmpeg is free software; you can redistribute it and/or
+
5  * modify it under the terms of the GNU Lesser General Public
+
6  * License as published by the Free Software Foundation; either
+
7  * version 2.1 of the License, or (at your option) any later version.
+
8  *
+
9  * FFmpeg is distributed in the hope that it will be useful,
+
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
12  * Lesser General Public License for more details.
+
13  *
+
14  * You should have received a copy of the GNU Lesser General Public
+
15  * License along with FFmpeg; if not, write to the Free Software
+
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
17  */
+
18 
+
19 /*
+
20  * CHANGES 12.2019
+
21  * - Concurrent execution support
+
22  *
+
23  * CHANGES 08.2018
+
24  * --------------------------------------------------------
+
25  * - fftools_ prefix added to file name and parent header
+
26  */
+
27 
+
28 #include <string.h>
+
29 
+
30 #include "libavutil/avstring.h"
+
31 #include "libavutil/pixdesc.h"
+
32 #include "libavfilter/buffersink.h"
+
33 
+
34 #include "fftools_ffmpeg.h"
+
35 
+
36 __thread int nb_hw_devices;
+
37 __thread HWDevice **hw_devices;
+
38 
+
39 static HWDevice *hw_device_get_by_type(enum AVHWDeviceType type)
+
40 {
+
41  HWDevice *found = NULL;
+
42  int i;
+
43  for (i = 0; i < nb_hw_devices; i++) {
+
44  if (hw_devices[i]->type == type) {
+
45  if (found)
+
46  return NULL;
+
47  found = hw_devices[i];
+
48  }
+
49  }
+
50  return found;
+
51 }
+
52 
+
53 HWDevice *hw_device_get_by_name(const char *name)
+
54 {
+
55  int i;
+
56  for (i = 0; i < nb_hw_devices; i++) {
+
57  if (!strcmp(hw_devices[i]->name, name))
+
58  return hw_devices[i];
+
59  }
+
60  return NULL;
+
61 }
+
62 
+
63 static HWDevice *hw_device_add(void)
+
64 {
+
65  int err;
+
66  err = av_reallocp_array(&hw_devices, nb_hw_devices + 1,
+
67  sizeof(*hw_devices));
+
68  if (err) {
+
69  nb_hw_devices = 0;
+
70  return NULL;
+
71  }
+
72  hw_devices[nb_hw_devices] = av_mallocz(sizeof(HWDevice));
+ +
74  return NULL;
+
75  return hw_devices[nb_hw_devices++];
+
76 }
+
77 
+
78 static char *hw_device_default_name(enum AVHWDeviceType type)
+
79 {
+
80  // Make an automatic name of the form "type%d". We arbitrarily
+
81  // limit at 1000 anonymous devices of the same type - there is
+
82  // probably something else very wrong if you get to this limit.
+
83  const char *type_name = av_hwdevice_get_type_name(type);
+
84  char *name;
+
85  size_t index_pos;
+
86  int index, index_limit = 1000;
+
87  index_pos = strlen(type_name);
+
88  name = av_malloc(index_pos + 4);
+
89  if (!name)
+
90  return NULL;
+
91  for (index = 0; index < index_limit; index++) {
+
92  snprintf(name, index_pos + 4, "%s%d", type_name, index);
+
93  if (!hw_device_get_by_name(name))
+
94  break;
+
95  }
+
96  if (index >= index_limit) {
+
97  av_freep(&name);
+
98  return NULL;
+
99  }
+
100  return name;
+
101 }
+
102 
+
103 int hw_device_init_from_string(const char *arg, HWDevice **dev_out)
+
104 {
+
105  // "type=name:device,key=value,key2=value2"
+
106  // "type:device,key=value,key2=value2"
+
107  // -> av_hwdevice_ctx_create()
+
108  // "type=name@name"
+
109  // "type@name"
+
110  // -> av_hwdevice_ctx_create_derived()
+
111 
+
112  AVDictionary *options = NULL;
+
113  const char *type_name = NULL, *name = NULL, *device = NULL;
+
114  enum AVHWDeviceType type;
+
115  HWDevice *dev, *src;
+
116  AVBufferRef *device_ref = NULL;
+
117  int err;
+
118  const char *errmsg, *p, *q;
+
119  size_t k;
+
120 
+
121  k = strcspn(arg, ":=@");
+
122  p = arg + k;
+
123 
+
124  type_name = av_strndup(arg, k);
+
125  if (!type_name) {
+
126  err = AVERROR(ENOMEM);
+
127  goto fail;
+
128  }
+
129  type = av_hwdevice_find_type_by_name(type_name);
+
130  if (type == AV_HWDEVICE_TYPE_NONE) {
+
131  errmsg = "unknown device type";
+
132  goto invalid;
+
133  }
+
134 
+
135  if (*p == '=') {
+
136  k = strcspn(p + 1, ":@");
+
137 
+
138  name = av_strndup(p + 1, k);
+
139  if (!name) {
+
140  err = AVERROR(ENOMEM);
+
141  goto fail;
+
142  }
+
143  if (hw_device_get_by_name(name)) {
+
144  errmsg = "named device already exists";
+
145  goto invalid;
+
146  }
+
147 
+
148  p += 1 + k;
+
149  } else {
+
150  name = hw_device_default_name(type);
+
151  if (!name) {
+
152  err = AVERROR(ENOMEM);
+
153  goto fail;
+
154  }
+
155  }
+
156 
+
157  if (!*p) {
+
158  // New device with no parameters.
+
159  err = av_hwdevice_ctx_create(&device_ref, type,
+
160  NULL, NULL, 0);
+
161  if (err < 0)
+
162  goto fail;
+
163 
+
164  } else if (*p == ':') {
+
165  // New device with some parameters.
+
166  ++p;
+
167  q = strchr(p, ',');
+
168  if (q) {
+
169  if (q - p > 0) {
+
170  device = av_strndup(p, q - p);
+
171  if (!device) {
+
172  err = AVERROR(ENOMEM);
+
173  goto fail;
+
174  }
+
175  }
+
176  err = av_dict_parse_string(&options, q + 1, "=", ",", 0);
+
177  if (err < 0) {
+
178  errmsg = "failed to parse options";
+
179  goto invalid;
+
180  }
+
181  }
+
182 
+
183  err = av_hwdevice_ctx_create(&device_ref, type,
+
184  q ? device : p[0] ? p : NULL,
+
185  options, 0);
+
186  if (err < 0)
+
187  goto fail;
+
188 
+
189  } else if (*p == '@') {
+
190  // Derive from existing device.
+
191 
+
192  src = hw_device_get_by_name(p + 1);
+
193  if (!src) {
+
194  errmsg = "invalid source device name";
+
195  goto invalid;
+
196  }
+
197 
+
198  err = av_hwdevice_ctx_create_derived(&device_ref, type,
+
199  src->device_ref, 0);
+
200  if (err < 0)
+
201  goto fail;
+
202  } else {
+
203  errmsg = "parse error";
+
204  goto invalid;
+
205  }
+
206 
+
207  dev = hw_device_add();
+
208  if (!dev) {
+
209  err = AVERROR(ENOMEM);
+
210  goto fail;
+
211  }
+
212 
+
213  dev->name = name;
+
214  dev->type = type;
+
215  dev->device_ref = device_ref;
+
216 
+
217  if (dev_out)
+
218  *dev_out = dev;
+
219 
+
220  name = NULL;
+
221  err = 0;
+
222 done:
+
223  av_freep(&type_name);
+
224  av_freep(&name);
+
225  av_freep(&device);
+
226  av_dict_free(&options);
+
227  return err;
+
228 invalid:
+
229  av_log(NULL, AV_LOG_ERROR,
+
230  "Invalid device specification \"%s\": %s\n", arg, errmsg);
+
231  err = AVERROR(EINVAL);
+
232  goto done;
+
233 fail:
+
234  av_log(NULL, AV_LOG_ERROR,
+
235  "Device creation failed: %d.\n", err);
+
236  av_buffer_unref(&device_ref);
+
237  goto done;
+
238 }
+
239 
+
240 static int hw_device_init_from_type(enum AVHWDeviceType type,
+
241  const char *device,
+
242  HWDevice **dev_out)
+
243 {
+
244  AVBufferRef *device_ref = NULL;
+
245  HWDevice *dev;
+
246  char *name;
+
247  int err;
+
248 
+
249  name = hw_device_default_name(type);
+
250  if (!name) {
+
251  err = AVERROR(ENOMEM);
+
252  goto fail;
+
253  }
+
254 
+
255  err = av_hwdevice_ctx_create(&device_ref, type, device, NULL, 0);
+
256  if (err < 0) {
+
257  av_log(NULL, AV_LOG_ERROR,
+
258  "Device creation failed: %d.\n", err);
+
259  goto fail;
+
260  }
+
261 
+
262  dev = hw_device_add();
+
263  if (!dev) {
+
264  err = AVERROR(ENOMEM);
+
265  goto fail;
+
266  }
+
267 
+
268  dev->name = name;
+
269  dev->type = type;
+
270  dev->device_ref = device_ref;
+
271 
+
272  if (dev_out)
+
273  *dev_out = dev;
+
274 
+
275  return 0;
+
276 
+
277 fail:
+
278  av_freep(&name);
+
279  av_buffer_unref(&device_ref);
+
280  return err;
+
281 }
+
282 
+ +
284 {
+
285  int i;
+
286  for (i = 0; i < nb_hw_devices; i++) {
+
287  av_freep(&hw_devices[i]->name);
+
288  av_buffer_unref(&hw_devices[i]->device_ref);
+
289  av_freep(&hw_devices[i]);
+
290  }
+
291  av_freep(&hw_devices);
+
292  nb_hw_devices = 0;
+
293 }
+
294 
+
295 static HWDevice *hw_device_match_by_codec(const AVCodec *codec)
+
296 {
+
297  const AVCodecHWConfig *config;
+
298  HWDevice *dev;
+
299  int i;
+
300  for (i = 0;; i++) {
+
301  config = avcodec_get_hw_config(codec, i);
+
302  if (!config)
+
303  return NULL;
+
304  if (!(config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX))
+
305  continue;
+
306  dev = hw_device_get_by_type(config->device_type);
+
307  if (dev)
+
308  return dev;
+
309  }
+
310 }
+
311 
+ +
313 {
+
314  const AVCodecHWConfig *config;
+
315  enum AVHWDeviceType type;
+
316  HWDevice *dev = NULL;
+
317  int err, auto_device = 0;
+
318 
+
319  if (ist->hwaccel_device) {
+
320  dev = hw_device_get_by_name(ist->hwaccel_device);
+
321  if (!dev) {
+
322  if (ist->hwaccel_id == HWACCEL_AUTO) {
+
323  auto_device = 1;
+
324  } else if (ist->hwaccel_id == HWACCEL_GENERIC) {
+
325  type = ist->hwaccel_device_type;
+
326  err = hw_device_init_from_type(type, ist->hwaccel_device,
+
327  &dev);
+
328  } else {
+
329  // This will be dealt with by API-specific initialisation
+
330  // (using hwaccel_device), so nothing further needed here.
+
331  return 0;
+
332  }
+
333  } else {
+
334  if (ist->hwaccel_id == HWACCEL_AUTO) {
+
335  ist->hwaccel_device_type = dev->type;
+
336  } else if (ist->hwaccel_device_type != dev->type) {
+
337  av_log(ist->dec_ctx, AV_LOG_ERROR, "Invalid hwaccel device "
+
338  "specified for decoder: device %s of type %s is not "
+
339  "usable with hwaccel %s.\n", dev->name,
+
340  av_hwdevice_get_type_name(dev->type),
+
341  av_hwdevice_get_type_name(ist->hwaccel_device_type));
+
342  return AVERROR(EINVAL);
+
343  }
+
344  }
+
345  } else {
+
346  if (ist->hwaccel_id == HWACCEL_AUTO) {
+
347  auto_device = 1;
+
348  } else if (ist->hwaccel_id == HWACCEL_GENERIC) {
+
349  type = ist->hwaccel_device_type;
+
350  dev = hw_device_get_by_type(type);
+
351 
+
352  // When "-qsv_device device" is used, an internal QSV device named
+
353  // as "__qsv_device" is created. Another QSV device is created too
+
354  // if "-init_hw_device qsv=name:device" is used. There are 2 QSV devices
+
355  // if both "-qsv_device device" and "-init_hw_device qsv=name:device"
+
356  // are used, hw_device_get_by_type(AV_HWDEVICE_TYPE_QSV) returns NULL.
+
357  // To keep back-compatibility with the removed ad-hoc libmfx setup code,
+
358  // call hw_device_get_by_name("__qsv_device") to select the internal QSV
+
359  // device.
+
360  if (!dev && type == AV_HWDEVICE_TYPE_QSV)
+
361  dev = hw_device_get_by_name("__qsv_device");
+
362 
+
363  if (!dev)
+
364  err = hw_device_init_from_type(type, NULL, &dev);
+
365  } else {
+
366  dev = hw_device_match_by_codec(ist->dec);
+
367  if (!dev) {
+
368  // No device for this codec, but not using generic hwaccel
+
369  // and therefore may well not need one - ignore.
+
370  return 0;
+
371  }
+
372  }
+
373  }
+
374 
+
375  if (auto_device) {
+
376  int i;
+
377  if (!avcodec_get_hw_config(ist->dec, 0)) {
+
378  // Decoder does not support any hardware devices.
+
379  return 0;
+
380  }
+
381  for (i = 0; !dev; i++) {
+
382  config = avcodec_get_hw_config(ist->dec, i);
+
383  if (!config)
+
384  break;
+
385  type = config->device_type;
+
386  dev = hw_device_get_by_type(type);
+
387  if (dev) {
+
388  av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
+
389  "hwaccel type %s with existing device %s.\n",
+
390  av_hwdevice_get_type_name(type), dev->name);
+
391  }
+
392  }
+
393  for (i = 0; !dev; i++) {
+
394  config = avcodec_get_hw_config(ist->dec, i);
+
395  if (!config)
+
396  break;
+
397  type = config->device_type;
+
398  // Try to make a new device of this type.
+
399  err = hw_device_init_from_type(type, ist->hwaccel_device,
+
400  &dev);
+
401  if (err < 0) {
+
402  // Can't make a device of this type.
+
403  continue;
+
404  }
+
405  if (ist->hwaccel_device) {
+
406  av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
+
407  "hwaccel type %s with new device created "
+
408  "from %s.\n", av_hwdevice_get_type_name(type),
+
409  ist->hwaccel_device);
+
410  } else {
+
411  av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
+
412  "hwaccel type %s with new default device.\n",
+
413  av_hwdevice_get_type_name(type));
+
414  }
+
415  }
+
416  if (dev) {
+
417  ist->hwaccel_device_type = type;
+
418  } else {
+
419  av_log(ist->dec_ctx, AV_LOG_INFO, "Auto hwaccel "
+
420  "disabled: no device found.\n");
+
421  ist->hwaccel_id = HWACCEL_NONE;
+
422  return 0;
+
423  }
+
424  }
+
425 
+
426  if (!dev) {
+
427  av_log(ist->dec_ctx, AV_LOG_ERROR, "No device available "
+
428  "for decoder: device type %s needed for codec %s.\n",
+
429  av_hwdevice_get_type_name(type), ist->dec->name);
+
430  return err;
+
431  }
+
432 
+
433  ist->dec_ctx->hw_device_ctx = av_buffer_ref(dev->device_ref);
+
434  if (!ist->dec_ctx->hw_device_ctx)
+
435  return AVERROR(ENOMEM);
+
436 
+
437  return 0;
+
438 }
+
439 
+ +
441 {
+
442  const AVCodecHWConfig *config;
+
443  HWDevice *dev = NULL;
+
444  AVBufferRef *frames_ref = NULL;
+
445  int i;
+
446 
+
447  if (ost->filter) {
+
448  frames_ref = av_buffersink_get_hw_frames_ctx(ost->filter->filter);
+
449  if (frames_ref &&
+
450  ((AVHWFramesContext*)frames_ref->data)->format ==
+
451  ost->enc_ctx->pix_fmt) {
+
452  // Matching format, will try to use hw_frames_ctx.
+
453  } else {
+
454  frames_ref = NULL;
+
455  }
+
456  }
+
457 
+
458  for (i = 0;; i++) {
+
459  config = avcodec_get_hw_config(ost->enc, i);
+
460  if (!config)
+
461  break;
+
462 
+
463  if (frames_ref &&
+
464  config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX &&
+
465  (config->pix_fmt == AV_PIX_FMT_NONE ||
+
466  config->pix_fmt == ost->enc_ctx->pix_fmt)) {
+
467  av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using input "
+
468  "frames context (format %s) with %s encoder.\n",
+
469  av_get_pix_fmt_name(ost->enc_ctx->pix_fmt),
+
470  ost->enc->name);
+
471  ost->enc_ctx->hw_frames_ctx = av_buffer_ref(frames_ref);
+
472  if (!ost->enc_ctx->hw_frames_ctx)
+
473  return AVERROR(ENOMEM);
+
474  return 0;
+
475  }
+
476 
+
477  if (!dev &&
+
478  config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX)
+
479  dev = hw_device_get_by_type(config->device_type);
+
480  }
+
481 
+
482  if (dev) {
+
483  av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using device %s "
+
484  "(type %s) with %s encoder.\n", dev->name,
+
485  av_hwdevice_get_type_name(dev->type), ost->enc->name);
+
486  ost->enc_ctx->hw_device_ctx = av_buffer_ref(dev->device_ref);
+
487  if (!ost->enc_ctx->hw_device_ctx)
+
488  return AVERROR(ENOMEM);
+
489  } else {
+
490  // No device required, or no device available.
+
491  }
+
492  return 0;
+
493 }
+
494 
+
495 static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input)
+
496 {
+
497  InputStream *ist = avctx->opaque;
+
498  AVFrame *output = NULL;
+
499  enum AVPixelFormat output_format = ist->hwaccel_output_format;
+
500  int err;
+
501 
+
502  if (input->format == output_format) {
+
503  // Nothing to do.
+
504  return 0;
+
505  }
+
506 
+
507  output = av_frame_alloc();
+
508  if (!output)
+
509  return AVERROR(ENOMEM);
+
510 
+
511  output->format = output_format;
+
512 
+
513  err = av_hwframe_transfer_data(output, input, 0);
+
514  if (err < 0) {
+
515  av_log(avctx, AV_LOG_ERROR, "Failed to transfer data to "
+
516  "output frame: %d.\n", err);
+
517  goto fail;
+
518  }
+
519 
+
520  err = av_frame_copy_props(output, input);
+
521  if (err < 0) {
+
522  av_frame_unref(output);
+
523  goto fail;
+
524  }
+
525 
+
526  av_frame_unref(input);
+
527  av_frame_move_ref(input, output);
+
528  av_frame_free(&output);
+
529 
+
530  return 0;
+
531 
+
532 fail:
+
533  av_frame_free(&output);
+
534  return err;
+
535 }
+
536 
+
537 int hwaccel_decode_init(AVCodecContext *avctx)
+
538 {
+
539  InputStream *ist = avctx->opaque;
+
540 
+
541  ist->hwaccel_retrieve_data = &hwaccel_retrieve_data;
+
542 
+
543  return 0;
+
544 }
+
545 
+ +
547 {
+
548  HWDevice *dev;
+
549  int i;
+
550 
+
551  // If the user has supplied exactly one hardware device then just
+
552  // give it straight to every filter for convenience. If more than
+
553  // one device is available then the user needs to pick one explcitly
+
554  // with the filter_hw_device option.
+
555  if (filter_hw_device)
+
556  dev = filter_hw_device;
+
557  else if (nb_hw_devices == 1)
+
558  dev = hw_devices[0];
+
559  else
+
560  dev = NULL;
+
561 
+
562  if (dev) {
+
563  for (i = 0; i < fg->graph->nb_filters; i++) {
+
564  fg->graph->filters[i]->hw_device_ctx =
+
565  av_buffer_ref(dev->device_ref);
+
566  if (!fg->graph->filters[i]->hw_device_ctx)
+
567  return AVERROR(ENOMEM);
+
568  }
+
569  }
+
570 
+
571  return 0;
+
572 }
+
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+
hw_device_get_by_name
HWDevice * hw_device_get_by_name(const char *name)
Definition: fftools_ffmpeg_hw.c:53
+
filter_hw_device
__thread HWDevice * filter_hw_device
Definition: fftools_ffmpeg_opt.c:158
+
fftools_ffmpeg.h
+
InputStream
Definition: fftools_ffmpeg.h:324
+
hw_device_get_by_type
static HWDevice * hw_device_get_by_type(enum AVHWDeviceType type)
Definition: fftools_ffmpeg_hw.c:39
+
HWACCEL_NONE
@ HWACCEL_NONE
Definition: fftools_ffmpeg.h:83
+
hw_device_default_name
static char * hw_device_default_name(enum AVHWDeviceType type)
Definition: fftools_ffmpeg_hw.c:78
+
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: fftools_ffmpeg.h:84
+
HWDevice::type
enum AVHWDeviceType type
Definition: fftools_ffmpeg.h:98
+
HWDevice::name
const char * name
Definition: fftools_ffmpeg.h:97
+
hwaccel_retrieve_data
static int hwaccel_retrieve_data(AVCodecContext *avctx, AVFrame *input)
Definition: fftools_ffmpeg_hw.c:495
+
hw_device_init_from_type
static int hw_device_init_from_type(enum AVHWDeviceType type, const char *device, HWDevice **dev_out)
Definition: fftools_ffmpeg_hw.c:240
+
hw_device_match_by_codec
static HWDevice * hw_device_match_by_codec(const AVCodec *codec)
Definition: fftools_ffmpeg_hw.c:295
+
hw_devices
__thread HWDevice ** hw_devices
Definition: fftools_ffmpeg_hw.c:37
+
hw_device_add
static HWDevice * hw_device_add(void)
Definition: fftools_ffmpeg_hw.c:63
+
OutputStream::filter
OutputFilter * filter
Definition: fftools_ffmpeg.h:541
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
hw_device_init_from_string
int hw_device_init_from_string(const char *arg, HWDevice **dev_out)
Definition: fftools_ffmpeg_hw.c:103
+
FilterGraph::graph
AVFilterGraph * graph
Definition: fftools_ffmpeg.h:315
+
hw_device_setup_for_encode
int hw_device_setup_for_encode(OutputStream *ost)
Definition: fftools_ffmpeg_hw.c:440
+
hw_device_setup_for_filter
int hw_device_setup_for_filter(FilterGraph *fg)
Definition: fftools_ffmpeg_hw.c:546
+
hwaccel_decode_init
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: fftools_ffmpeg_hw.c:537
+
nb_hw_devices
__thread int nb_hw_devices
Definition: fftools_ffmpeg_hw.c:36
+
OutputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:289
+
HWDevice
Definition: fftools_ffmpeg.h:96
+
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: fftools_ffmpeg.h:500
+
HWDevice::device_ref
AVBufferRef * device_ref
Definition: fftools_ffmpeg.h:99
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+
OutputStream
Definition: fftools_ffmpeg.h:478
+
hw_device_setup_for_decode
int hw_device_setup_for_decode(InputStream *ist)
Definition: fftools_ffmpeg_hw.c:312
+
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: fftools_ffmpeg.h:85
+
ost
OutputStream * ost
Definition: fftools_ffmpeg_filter.c:172
+
hw_device_free_all
void hw_device_free_all(void)
Definition: fftools_ffmpeg_hw.c:283
+
OutputStream::enc
const AVCodec * enc
Definition: fftools_ffmpeg.h:502
+ + + + diff --git a/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp.html b/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp.html new file mode 100644 index 0000000..028282c --- /dev/null +++ b/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp.html @@ -0,0 +1,166 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationJsonParser.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Macros | +Variables
+
+
MediaInformationJsonParser.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define RAPIDJSON_ASSERT(x)
 
+ + + + + +

+Variables

static const char * MediaInformationJsonParserKeyStreams = "streams"
 
static const char * MediaInformationJsonParserKeyChapters = "chapters"
 
+

Macro Definition Documentation

+ +

◆ RAPIDJSON_ASSERT

+ +
+
+ + + + + + + + +
#define RAPIDJSON_ASSERT( x)
+
+ +

Definition at line 22 of file MediaInformationJsonParser.cpp.

+ +
+
+

Variable Documentation

+ +

◆ MediaInformationJsonParserKeyChapters

+ +
+
+ + + + + +
+ + + + +
const char* MediaInformationJsonParserKeyChapters = "chapters"
+
+static
+
+ +

Definition at line 29 of file MediaInformationJsonParser.cpp.

+ +
+
+ +

◆ MediaInformationJsonParserKeyStreams

+ +
+
+ + + + + +
+ + + + +
const char* MediaInformationJsonParserKeyStreams = "streams"
+
+static
+
+ +

Definition at line 28 of file MediaInformationJsonParser.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp_source.html b/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp_source.html new file mode 100644 index 0000000..93965b8 --- /dev/null +++ b/docs/linux/html/d1/dbf/_media_information_json_parser_8cpp_source.html @@ -0,0 +1,161 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationJsonParser.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformationJsonParser.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+ +
21 // OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION
+
22 #define RAPIDJSON_ASSERT(x)
+
23 #include "rapidjson/reader.h"
+
24 #include "rapidjson/document.h"
+
25 #include "rapidjson/error/en.h"
+
26 #include <memory>
+
27 
+
28 static const char* MediaInformationJsonParserKeyStreams = "streams";
+
29 static const char* MediaInformationJsonParserKeyChapters = "chapters";
+
30 
+
31 std::shared_ptr<ffmpegkit::MediaInformation> ffmpegkit::MediaInformationJsonParser::from(const std::string& ffprobeJsonOutput) {
+
32  std::string error;
+
33 
+
34  std::shared_ptr<ffmpegkit::MediaInformation> mediaInformation = fromWithError(ffprobeJsonOutput, error);
+
35  if (mediaInformation == nullptr) {
+
36  std::cout << "MediaInformation parsing failed: " << error << std::endl;
+
37  }
+
38 
+
39  return mediaInformation;
+
40 }
+
41 
+
42 std::shared_ptr<ffmpegkit::MediaInformation> ffmpegkit::MediaInformationJsonParser::fromWithError(const std::string& ffprobeJsonOutput, std::string& error) {
+
43  std::shared_ptr<rapidjson::Document> document = std::make_shared<rapidjson::Document>();
+
44 
+
45  document->Parse(ffprobeJsonOutput.c_str());
+
46 
+
47  if (document->HasParseError()) {
+
48  error = GetParseError_En(document->GetParseError());
+
49  return nullptr;
+
50  } else {
+
51  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> streams = std::make_shared<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>>();
+
52  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> chapters = std::make_shared<std::vector<std::shared_ptr<ffmpegkit::Chapter>>>();
+
53 
+
54  if (document->HasMember(MediaInformationJsonParserKeyStreams)) {
+
55  rapidjson::Value& streamArray = (*document.get())[MediaInformationJsonParserKeyStreams];
+
56  if (streamArray.IsArray()) {
+
57  for (rapidjson::SizeType i = 0; i < streamArray.Size(); i++) {
+
58  auto stream = std::make_shared<rapidjson::Value>();
+
59  *stream = streamArray[i];
+
60  streams->push_back(std::make_shared<ffmpegkit::StreamInformation>(stream));
+
61  }
+
62  }
+
63  }
+
64 
+
65  if (document->HasMember(MediaInformationJsonParserKeyChapters)) {
+
66  rapidjson::Value& chapterArray = (*document.get())[MediaInformationJsonParserKeyChapters];
+
67  if (chapterArray.IsArray()) {
+
68  for (rapidjson::SizeType i = 0; i < chapterArray.Size(); i++) {
+
69  auto chapter = std::make_shared<rapidjson::Value>();
+
70  *chapter = chapterArray[i];
+
71  chapters->push_back(std::make_shared<ffmpegkit::Chapter>(chapter));
+
72  }
+
73  }
+
74  }
+
75 
+
76  return std::make_shared<ffmpegkit::MediaInformation>(std::static_pointer_cast<rapidjson::Value>(document), streams, chapters);
+
77  }
+
78 }
+
+
ffmpegkit::MediaInformationJsonParser::from
static std::shared_ptr< ffmpegkit::MediaInformation > from(const std::string &ffprobeJsonOutput)
Definition: MediaInformationJsonParser.cpp:31
+
MediaInformationJsonParserKeyStreams
static const char * MediaInformationJsonParserKeyStreams
Definition: MediaInformationJsonParser.cpp:28
+
MediaInformationJsonParser.h
+
MediaInformationJsonParserKeyChapters
static const char * MediaInformationJsonParserKeyChapters
Definition: MediaInformationJsonParser.cpp:29
+
ffmpegkit::MediaInformationJsonParser::fromWithError
static std::shared_ptr< ffmpegkit::MediaInformation > fromWithError(const std::string &ffprobeJsonOutput, std::string &error)
Definition: MediaInformationJsonParser.cpp:42
+ + + + diff --git a/docs/linux/html/d1/dc9/_media_information_8cpp.html b/docs/linux/html/d1/dc9/_media_information_8cpp.html new file mode 100644 index 0000000..0232f4f --- /dev/null +++ b/docs/linux/html/d1/dc9/_media_information_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +FFmpegKit Linux API: MediaInformation.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
MediaInformation.cpp File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/docs/linux/html/d1/dc9/_media_information_8cpp_source.html b/docs/linux/html/d1/dc9/_media_information_8cpp_source.html new file mode 100644 index 0000000..4fa02f3 --- /dev/null +++ b/docs/linux/html/d1/dc9/_media_information_8cpp_source.html @@ -0,0 +1,214 @@ + + + + + + + +FFmpegKit Linux API: MediaInformation.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformation.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "MediaInformation.h"
+
21 
+
22 ffmpegkit::MediaInformation::MediaInformation(std::shared_ptr<rapidjson::Value> mediaInformationValue, std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> streams, std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> chapters) :
+
23  _mediaInformationValue{mediaInformationValue}, _streams{streams}, _chapters{chapters} {
+
24 }
+
25 
+
26 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getFilename() {
+
27  return getStringProperty(KeyFilename);
+
28 }
+
29 
+
30 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getFormat() {
+
31  return getStringProperty(KeyFormat);
+
32 }
+
33 
+
34 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getLongFormat() {
+
35  return getStringProperty(KeyFormatLong);
+
36 }
+
37 
+
38 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getStartTime() {
+
39  return getStringProperty(KeyStartTime);
+
40 }
+
41 
+
42 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getDuration() {
+
43  return getStringProperty(KeyDuration);
+
44 }
+
45 
+
46 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getSize() {
+
47  return getStringProperty(KeySize);
+
48 }
+
49 
+
50 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getBitrate() {
+
51  return getStringProperty(KeyBitRate);
+
52 }
+
53 
+
54 std::shared_ptr<rapidjson::Value> ffmpegkit::MediaInformation::getTags() {
+
55  auto mediaProperties = getMediaProperties();
+
56  if (mediaProperties->HasMember(KeyTags)) {
+
57  auto tags = std::make_shared<rapidjson::Value>();
+
58  *tags = (*mediaProperties)[KeyTags];
+
59  return tags;
+
60  } else {
+
61  return nullptr;
+
62  }
+
63 }
+
64 
+
65 std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> ffmpegkit::MediaInformation::getStreams() {
+
66  return _streams;
+
67 }
+
68 
+
69 std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> ffmpegkit::MediaInformation::getChapters() {
+
70  return _chapters;
+
71 }
+
72 
+
73 std::shared_ptr<std::string> ffmpegkit::MediaInformation::getStringProperty(const char* key) {
+
74  auto mediaProperties = getMediaProperties();
+
75  if (mediaProperties->HasMember(key)) {
+
76  return std::make_shared<std::string>((*mediaProperties)[key].GetString());
+
77  } else {
+
78  return nullptr;
+
79  }
+
80 }
+
81 
+
82 std::shared_ptr<int64_t> ffmpegkit::MediaInformation::getNumberProperty(const char* key) {
+
83  auto mediaProperties = getMediaProperties();
+
84  if (mediaProperties->HasMember(key)) {
+
85  return std::make_shared<int64_t>((*mediaProperties)[key].GetInt64());
+
86  } else {
+
87  return nullptr;
+
88  }
+
89 }
+
90 
+
91 std::shared_ptr<rapidjson::Value> ffmpegkit::MediaInformation::getProperties(const char* key) {
+
92  if (_mediaInformationValue->HasMember(key)) {
+
93  auto value = std::make_shared<rapidjson::Value>();
+
94  *value = (*_mediaInformationValue)[key];
+
95  return value;
+
96  } else {
+
97  return nullptr;
+
98  }
+
99 }
+
100 
+
101 std::shared_ptr<rapidjson::Value> ffmpegkit::MediaInformation::getMediaProperties() {
+
102  if (_mediaInformationValue->HasMember(KeyMediaProperties)) {
+
103  auto mediaProperties = std::make_shared<rapidjson::Value>();
+
104  *mediaProperties = (*_mediaInformationValue)[KeyMediaProperties];
+
105  return mediaProperties;
+
106  } else {
+
107  return nullptr;
+
108  }
+
109 }
+
110 
+
111 std::shared_ptr<rapidjson::Value> ffmpegkit::MediaInformation::getAllProperties() {
+
112  if (_mediaInformationValue != null) {
+
113  auto all = std::make_shared<rapidjson::Value>();
+
114  *all = (*_mediaInformationValue);
+
115  return all;
+
116  } else {
+
117  return nullptr;
+
118  }
+
119 }
+
+
ffmpegkit::MediaInformation::getChapters
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > getChapters()
Definition: MediaInformation.cpp:69
+
ffmpegkit::MediaInformation::getStartTime
std::shared_ptr< std::string > getStartTime()
Definition: MediaInformation.cpp:38
+
ffmpegkit::MediaInformation::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: MediaInformation.cpp:111
+
ffmpegkit::MediaInformation::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: MediaInformation.cpp:73
+
ffmpegkit::MediaInformation::getDuration
std::shared_ptr< std::string > getDuration()
Definition: MediaInformation.cpp:42
+
MediaInformation.h
+
ffmpegkit::MediaInformation::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: MediaInformation.cpp:91
+
ffmpegkit::MediaInformation::getFilename
std::shared_ptr< std::string > getFilename()
Definition: MediaInformation.cpp:26
+
ffmpegkit::MediaInformation::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: MediaInformation.cpp:54
+
ffmpegkit::MediaInformation::MediaInformation
MediaInformation(std::shared_ptr< rapidjson::Value > mediaInformationValue, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation >>> streams, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter >>> chapters)
Definition: MediaInformation.cpp:22
+
ffmpegkit::MediaInformation::getMediaProperties
std::shared_ptr< rapidjson::Value > getMediaProperties()
Definition: MediaInformation.cpp:101
+
ffmpegkit::MediaInformation::getStreams
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > getStreams()
Definition: MediaInformation.cpp:65
+
ffmpegkit::MediaInformation::getLongFormat
std::shared_ptr< std::string > getLongFormat()
Definition: MediaInformation.cpp:34
+
ffmpegkit::MediaInformation::getBitrate
std::shared_ptr< std::string > getBitrate()
Definition: MediaInformation.cpp:50
+
ffmpegkit::MediaInformation::getSize
std::shared_ptr< std::string > getSize()
Definition: MediaInformation.cpp:46
+
ffmpegkit::MediaInformation::getFormat
std::shared_ptr< std::string > getFormat()
Definition: MediaInformation.cpp:30
+
ffmpegkit::MediaInformation::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: MediaInformation.cpp:82
+ + + + diff --git a/docs/linux/html/d1/df7/classffmpegkit_1_1_arch_detect.html b/docs/linux/html/d1/df7/classffmpegkit_1_1_arch_detect.html new file mode 100644 index 0000000..1955db2 --- /dev/null +++ b/docs/linux/html/d1/df7/classffmpegkit_1_1_arch_detect.html @@ -0,0 +1,128 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::ArchDetect Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions
+
+
ffmpegkit::ArchDetect Class Reference
+
+
+ + + + +

+Static Public Member Functions

static std::string getArch ()
 
+

Detailed Description

+

Detects the running architecture.

+ +

Definition at line 30 of file ArchDetect.h.

+

Member Function Documentation

+ +

◆ getArch()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::ArchDetect::getArch ()
+
+static
+
+

Returns architecture name loaded.

+
Returns
architecture name loaded
+ +

Definition at line 26 of file ArchDetect.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d2/d25/namespaceffmpegkit.html b/docs/linux/html/d2/d25/namespaceffmpegkit.html new file mode 100644 index 0000000..c26db0d --- /dev/null +++ b/docs/linux/html/d2/d25/namespaceffmpegkit.html @@ -0,0 +1,472 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit Namespace Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Typedefs | +Enumerations | +Functions
+
+
ffmpegkit Namespace Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

class  AbstractSession
 
class  ArchDetect
 
class  Chapter
 
class  FFmpegKit
 
class  FFmpegKitConfig
 
class  FFmpegSession
 
class  FFprobeKit
 
class  FFprobeSession
 
class  Log
 
class  MediaInformation
 
class  MediaInformationJsonParser
 
class  MediaInformationSession
 
class  Packages
 
class  ReturnCode
 
class  Session
 
class  Statistics
 
class  StreamInformation
 
+ + + + + + + + + + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
 
typedef std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
 
typedef std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
 
typedef std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
 
typedef std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
 
+ + + + + + + + + +

+Enumerations

enum  Level {
+  LevelAVLogStdErr = -16, +LevelAVLogQuiet = -8, +LevelAVLogPanic = 0, +LevelAVLogFatal = 8, +
+  LevelAVLogError = 16, +LevelAVLogWarning = 24, +LevelAVLogInfo = 32, +LevelAVLogVerbose = 40, +
+  LevelAVLogDebug = 48, +LevelAVLogTrace = 56 +
+ }
 
enum  LogRedirectionStrategy {
+  LogRedirectionStrategyAlwaysPrintLogs = 0, +LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined = 1, +LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined = 2, +LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined = 3, +
+  LogRedirectionStrategyNeverPrintLogs = 4 +
+ }
 
enum  SessionState { SessionStateCreated = 0, +SessionStateRunning = 1, +SessionStateFailed = 2, +SessionStateCompleted = 3 + }
 
enum  Signal {
+  SignalInt = 2, +SignalQuit = 3, +SignalPipe = 13, +SignalTerm = 15, +
+  SignalXcpu = 24 +
+ }
 
+ + + +

+Functions

std::ostream & operator<< (std::ostream &out, const std::shared_ptr< ffmpegkit::ReturnCode > &o)
 
+

Typedef Documentation

+ +

◆ FFmpegSessionCompleteCallback

+ +
+
+ + + + +
typedef std::function<void(const std::shared_ptr<ffmpegkit::FFmpegSession> session)> ffmpegkit::FFmpegSessionCompleteCallback
+
+

Callback function that is invoked when an asynchronous FFmpeg session has ended.

+

Session has either SessionStateCompleted or SessionStateFailed state when the callback is invoked.

+

If it has SessionStateCompleted state, ReturnCode should be checked to see the execution result.

+

If getState returns SessionStateFailed then getFailStackTrace should be used to get the failure reason.

+ switch (session->getState()) {
+     case SessionStateCompleted:
+         auto returnCode = session->getReturnCode();
+         break;
+     case SessionStateFailed:
+         auto failStackTrace = session->getFailStackTrace();
+         break;
+ }
+
Parameters
+ + +
sessionsession of the completed execution
+
+
+ +

Definition at line 29 of file FFmpegSessionCompleteCallback.h.

+ +
+
+ +

◆ FFprobeSessionCompleteCallback

+ +
+
+ + + + +
typedef std::function<void(const std::shared_ptr<ffmpegkit::FFprobeSession> session)> ffmpegkit::FFprobeSessionCompleteCallback
+
+

Callback function that is invoked when an asynchronous FFprobe session has ended.

+

Session has either SessionStateCompleted or SessionStateFailed state when the callback is invoked.

+

If it has SessionStateCompleted state, ReturnCode should be checked to see the execution result.

+

If getState returns SessionStateFailed then getFailStackTrace should be used to get the failure reason.

+ switch (session->getState()) {
+     case SessionStateCompleted:
+         auto returnCode = session->getReturnCode();
+         break;
+     case SessionStateFailed:
+         auto failStackTrace = session->getFailStackTrace();
+         break;
+ }
+
Parameters
+ + +
sessionsession of the completed execution
+
+
+ +

Definition at line 29 of file FFprobeSessionCompleteCallback.h.

+ +
+
+ +

◆ LogCallback

+ +
+
+ + + + +
typedef std::function<void(const std::shared_ptr<ffmpegkit::Log> log)> ffmpegkit::LogCallback
+
+

Callback that receives logs generated for FFmpegKit sessions.

+
Parameters
+ + +
loglog entry
+
+
+ +

Definition at line 35 of file LogCallback.h.

+ +
+
+ +

◆ MediaInformationSessionCompleteCallback

+ +
+
+ + + + +
typedef std::function<void(const std::shared_ptr<ffmpegkit::MediaInformationSession> session)> ffmpegkit::MediaInformationSessionCompleteCallback
+
+

Callback function that is invoked when an asynchronous MediaInformation session has ended.

+

Session has either SessionStateCompleted or SessionStateFailed state when the callback is invoked.

+

If it has SessionStateCompleted state, ReturnCode should be checked to see the execution result.

+

If getState returns SessionStateFailed then getFailStackTrace should be used to get the failure reason.

+ switch (session->getState()) {
+     case SessionStateCompleted:
+         auto returnCode = session->getReturnCode();
+         break;
+     case SessionStateFailed:
+         auto failStackTrace = session->getFailStackTrace();
+         break;
+ }
+
Parameters
+ + +
sessionsession of the completed execution
+
+
+ +

Definition at line 29 of file MediaInformationSessionCompleteCallback.h.

+ +
+
+ +

◆ StatisticsCallback

+ +
+
+ + + + +
typedef std::function<void(const std::shared_ptr<ffmpegkit::Statistics> statistics)> ffmpegkit::StatisticsCallback
+
+

Callback that receives statistics generated for FFmpegKit sessions.

+
Parameters
+ + +
statisticsstatistics entry
+
+
+ +

Definition at line 35 of file StatisticsCallback.h.

+ +
+
+

Enumeration Type Documentation

+ +

◆ Level

+ +
+
+ + + + +
enum ffmpegkit::Level
+
+

Enumeration type for log levels.

+ + + + + + + + + + + +
Enumerator
LevelAVLogStdErr 

This log level is defined by FFmpegKit. It is used to specify logs printed to stderr by FFmpeg. Logs that has this level are not filtered and always redirected.

+
LevelAVLogQuiet 

Print no output.

+
LevelAVLogPanic 

Something went really wrong and we will crash now.

+
LevelAVLogFatal 

Something went wrong and recovery is not possible. For example, no header was found for a format which depends on headers or an illegal combination of parameters is used.

+
LevelAVLogError 

Something went wrong and cannot losslessly be recovered. However, not all future data is affected.

+
LevelAVLogWarning 

Something somehow does not look correct. This may or may not lead to problems. An example would be the use of '-vstrict -2'.

+
LevelAVLogInfo 

Standard information.

+
LevelAVLogVerbose 

Detailed information.

+
LevelAVLogDebug 

Stuff which is only useful for libav* developers.

+
LevelAVLogTrace 

Extremely verbose debugging, useful for libav* development.

+
+ +

Definition at line 28 of file Level.h.

+ +
+
+ +

◆ LogRedirectionStrategy

+ +
+
+ + + + + + +
Enumerator
LogRedirectionStrategyAlwaysPrintLogs 
LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined 
LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined 
LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined 
LogRedirectionStrategyNeverPrintLogs 
+ +

Definition at line 25 of file LogRedirectionStrategy.h.

+ +
+
+ +

◆ SessionState

+ +
+
+ + + + +
enum ffmpegkit::SessionState
+
+ + + + + +
Enumerator
SessionStateCreated 
SessionStateRunning 
SessionStateFailed 
SessionStateCompleted 
+ +

Definition at line 25 of file SessionState.h.

+ +
+
+ +

◆ Signal

+ +
+
+ + + + +
enum ffmpegkit::Signal
+
+ + + + + + +
Enumerator
SignalInt 
SignalQuit 
SignalPipe 
SignalTerm 
SignalXcpu 
+ +

Definition at line 25 of file Signal.h.

+ +
+
+

Function Documentation

+ +

◆ operator<<()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::ostream& ffmpegkit::operator<< (std::ostream & out,
const std::shared_ptr< ffmpegkit::ReturnCode > & o 
)
+
+ +

Definition at line 51 of file ReturnCode.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c.html b/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c.html new file mode 100644 index 0000000..45561e8 --- /dev/null +++ b/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c.html @@ -0,0 +1,1597 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_filter.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Macros | +Functions | +Variables
+
+
fftools_ffmpeg_filter.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Macros

#define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, printf_format, get_name)
 
#define AUTO_INSERT_FILTER(opt_name, filter_name, arg)
 
#define AUTO_INSERT_FILTER_INPUT(opt_name, filter_name, arg)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static enum AVPixelFormat * get_compliance_normal_pix_fmts (const AVCodec *codec, const enum AVPixelFormat default_formats[])
 
enum AVPixelFormat choose_pixel_fmt (AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target)
 
static char * choose_pix_fmts (OutputFilter *ofilter)
 
 DEF_CHOOSE_FORMAT (sample_fmts, enum AVSampleFormat, format, formats, AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name) DEF_CHOOSE_FORMAT(sample_rates
 
 DEF_CHOOSE_FORMAT (channel_layouts, uint64_t, channel_layout, channel_layouts, 0, "0x%"PRIx64,) int init_simple_filtergraph(InputStream *ist
 
 if (!fg) exit_program(1)
 
 GROW_ARRAY (fg->outputs, fg->nb_outputs)
 
 if (!(fg->outputs[0]=av_mallocz(sizeof(*fg->outputs[0])))) exit_program(1)
 
 if (!(fg->inputs[0]=av_mallocz(sizeof(*fg->inputs[0])))) exit_program(1)
 
 if (!fg->inputs[0]->frame_queue) exit_program(1)
 
 GROW_ARRAY (ist->filters, ist->nb_filters)
 
 GROW_ARRAY (filtergraphs, nb_filtergraphs)
 
static char * describe_filter_link (FilterGraph *fg, AVFilterInOut *inout, int in)
 
static void init_input_filter (FilterGraph *fg, AVFilterInOut *in)
 
int init_complex_filtergraph (FilterGraph *fg)
 
static int insert_trim (int64_t start_time, int64_t duration, AVFilterContext **last_filter, int *pad_idx, const char *filter_name)
 
static int insert_filter (AVFilterContext **last_filter, int *pad_idx, const char *filter_name, const char *args)
 
static int configure_output_video_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
 
static int configure_output_audio_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
 
int configure_output_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
 
void check_filter_outputs (void)
 
static int sub2video_prepare (InputStream *ist, InputFilter *ifilter)
 
static int configure_input_video_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
 
static int configure_input_audio_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
 
static int configure_input_filter (FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
 
static void cleanup_filtergraph (FilterGraph *fg)
 
int configure_filtergraph (FilterGraph *fg)
 
int ifilter_parameters_from_frame (InputFilter *ifilter, const AVFrame *frame)
 
int filtergraph_is_simple (FilterGraph *fg)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

 int
 
 sample_rate
 
 sample_rates
 
 d
 
OutputStreamost
 
fg index = nb_filtergraphs
 
fg outputs[0] graph = fg
 
fg outputs[0] format = -1
 
ost filter = fg->outputs[0]
 
fg inputs[0] ist = ist
 
fg inputs[0] frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*))
 
ist filters [ist->nb_filters - 1] = fg->inputs[0]
 
 filtergraphs [nb_filtergraphs - 1] = fg
 
 return
 
+

Macro Definition Documentation

+ +

◆ AUTO_INSERT_FILTER

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define AUTO_INSERT_FILTER( opt_name,
 filter_name,
 arg 
)
+
+Value:
do { \
+
AVFilterContext *filt_ctx; \
+
\
+
av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \
+
"similarly to -af " filter_name "=%s.\n", arg); \
+
\
+
ret = avfilter_graph_create_filter(&filt_ctx, \
+
avfilter_get_by_name(filter_name), \
+
filter_name, arg, NULL, fg->graph); \
+
if (ret < 0) \
+
goto fail; \
+
\
+
ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \
+
if (ret < 0) \
+
goto fail; \
+
\
+
last_filter = filt_ctx; \
+
pad_idx = 0; \
+
} while (0)
+
+
+
+ +

◆ AUTO_INSERT_FILTER_INPUT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define AUTO_INSERT_FILTER_INPUT( opt_name,
 filter_name,
 arg 
)
+
+Value:
do { \
+
AVFilterContext *filt_ctx; \
+
\
+
av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \
+
"similarly to -af " filter_name "=%s.\n", arg); \
+
\
+
snprintf(name, sizeof(name), "graph_%d_%s_in_%d_%d", \
+
fg->index, filter_name, ist->file_index, ist->st->index); \
+
ret = avfilter_graph_create_filter(&filt_ctx, \
+
avfilter_get_by_name(filter_name), \
+
name, arg, NULL, fg->graph); \
+
if (ret < 0) \
+
return ret; \
+
\
+
ret = avfilter_link(last_filter, 0, filt_ctx, 0); \
+
if (ret < 0) \
+
return ret; \
+
\
+
last_filter = filt_ctx; \
+
} while (0)
+
+
+
+ +

◆ DEF_CHOOSE_FORMAT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define DEF_CHOOSE_FORMAT( name,
 type,
 var,
 supported_list,
 none,
 printf_format,
 get_name 
)
+
+Value:
static void choose_ ## name (OutputFilter *ofilter, AVBPrint *bprint) \
+
{ \
+
if (ofilter->var == none && !ofilter->supported_list) \
+
return; \
+
av_bprintf(bprint, #name "="); \
+
if (ofilter->var != none) { \
+
av_bprintf(bprint, printf_format, get_name(ofilter->var)); \
+
} else { \
+
const type *p; \
+
\
+
for (p = ofilter->supported_list; *p != none; p++) { \
+
av_bprintf(bprint, printf_format "|", get_name(*p)); \
+
} \
+
if (bprint->len > 0) \
+
bprint->str[--bprint->len] = '\0'; \
+
} \
+
av_bprint_chars(bprint, ':', 1); \
+
}
+
+

Definition at line 139 of file fftools_ffmpeg_filter.c.

+ +
+
+

Function Documentation

+ +

◆ check_filter_outputs()

+ +
+
+ + + + + + + + +
void check_filter_outputs (void )
+
+ +

Definition at line 643 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ choose_pix_fmts()

+ +
+
+ + + + + +
+ + + + + + + + +
static char* choose_pix_fmts (OutputFilterofilter)
+
+static
+
+ +

Definition at line 95 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ choose_pixel_fmt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
enum AVPixelFormat choose_pixel_fmt (AVStream * st,
AVCodecContext * enc_ctx,
const AVCodec * codec,
enum AVPixelFormat target 
)
+
+ +

Definition at line 65 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ cleanup_filtergraph()

+ +
+
+ + + + + +
+ + + + + + + + +
static void cleanup_filtergraph (FilterGraphfg)
+
+static
+
+ +

Definition at line 953 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_filtergraph()

+ +
+
+ + + + + + + + +
int configure_filtergraph (FilterGraphfg)
+
+ +

Definition at line 963 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_input_audio_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int configure_input_audio_filter (FilterGraphfg,
InputFilterifilter,
AVFilterInOut * in 
)
+
+static
+
+ +

Definition at line 827 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_input_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int configure_input_filter (FilterGraphfg,
InputFilterifilter,
AVFilterInOut * in 
)
+
+static
+
+ +

Definition at line 937 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_input_video_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int configure_input_video_filter (FilterGraphfg,
InputFilterifilter,
AVFilterInOut * in 
)
+
+static
+
+ +

Definition at line 705 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_output_audio_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int configure_output_audio_filter (FilterGraphfg,
OutputFilterofilter,
AVFilterInOut * out 
)
+
+static
+
+ +

Definition at line 521 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_output_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int configure_output_filter (FilterGraphfg,
OutputFilterofilter,
AVFilterInOut * out 
)
+
+ +

Definition at line 629 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_output_video_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int configure_output_video_filter (FilterGraphfg,
OutputFilterofilter,
AVFilterInOut * out 
)
+
+static
+
+ +

Definition at line 428 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ DEF_CHOOSE_FORMAT() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DEF_CHOOSE_FORMAT (channel_layouts ,
uint64_t ,
channel_layout ,
channel_layouts ,
,
"0x%" PRIx64 
)
+
+ +
+
+ +

◆ DEF_CHOOSE_FORMAT() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DEF_CHOOSE_FORMAT (sample_fmts ,
enum AVSampleFormat,
format ,
formats ,
AV_SAMPLE_FMT_NONE ,
"%s" ,
av_get_sample_fmt_name  
)
+
+ +
+
+ +

◆ describe_filter_link()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static char* describe_filter_link (FilterGraphfg,
AVFilterInOut * inout,
int in 
)
+
+static
+
+ +

Definition at line 208 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ filtergraph_is_simple()

+ +
+
+ + + + + + + + +
int filtergraph_is_simple (FilterGraphfg)
+
+ +

Definition at line 1164 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ get_compliance_normal_pix_fmts()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static enum AVPixelFormat* get_compliance_normal_pix_fmts (const AVCodec * codec,
const enum AVPixelFormat default_formats[] 
)
+
+static
+
+ +

Definition at line 52 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ GROW_ARRAY() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GROW_ARRAY (fg-> outputs,
fg-> nb_outputs 
)
+
+ +
+
+ +

◆ GROW_ARRAY() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GROW_ARRAY (filtergraphs ,
nb_filtergraphs  
)
+
+ +
+
+ +

◆ GROW_ARRAY() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GROW_ARRAY (ist-> filters,
ist-> nb_filters 
)
+
+ +
+
+ +

◆ if() [1/4]

+ +
+
+ + + + + + + + +
if (fg->inputs[0]=av_mallocz(sizeof(*fg->inputs[0])))
+
+ +
+
+ +

◆ if() [2/4]

+ +
+
+ + + + + + + + +
if (fg->outputs[0]=av_mallocz(sizeof(*fg->outputs[0])))
+
+ +
+
+ +

◆ if() [3/4]

+ +
+
+ + + + + + + + +
if (fg)
+
+ +
+
+ +

◆ if() [4/4]

+ +
+
+ + + + + + + + +
if (!fg->inputs-> frame_queue[0])
+
+ +
+
+ +

◆ ifilter_parameters_from_frame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ifilter_parameters_from_frame (InputFilterifilter,
const AVFrame * frame 
)
+
+ +

Definition at line 1141 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ init_complex_filtergraph()

+ +
+
+ + + + + + + + +
int init_complex_filtergraph (FilterGraphfg)
+
+ +

Definition at line 314 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ init_input_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void init_input_filter (FilterGraphfg,
AVFilterInOut * in 
)
+
+static
+
+ +

Definition at line 227 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ insert_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int insert_filter (AVFilterContext ** last_filter,
intpad_idx,
const char * filter_name,
const char * args 
)
+
+static
+
+ +

Definition at line 406 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ insert_trim()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int insert_trim (int64_t start_time,
int64_t duration,
AVFilterContext ** last_filter,
intpad_idx,
const char * filter_name 
)
+
+static
+
+ +

Definition at line 355 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ sub2video_prepare()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int sub2video_prepare (InputStreamist,
InputFilterifilter 
)
+
+static
+
+ +

Definition at line 658 of file fftools_ffmpeg_filter.c.

+ +
+
+

Variable Documentation

+ +

◆ d

+ +
+
+ + + + +
d
+
+ +

Definition at line 165 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ filter

+ +
+
+ + + + +
ost filter = fg->outputs[0]
+
+ +

Definition at line 186 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ filtergraphs

+ +
+
+ + + + +
filtergraphs[nb_filtergraphs - 1] = fg
+
+ +

Definition at line 203 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ filters

+ +
+
+ + + + +
ist filters[ist->nb_filters - 1] = fg->inputs[0]
+
+ +

Definition at line 200 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ format

+ +
+
+ + + + +
fg inputs [0] format = -1
+
+ +

Definition at line 184 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ frame_queue

+ +
+
+ + + + +
fg inputs [0] frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*))
+
+ +

Definition at line 195 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ graph

+ +
+
+ + + + +
fg inputs [0] graph = fg
+
+ +

Definition at line 183 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ index

+ +
+
+ + + + +
fg index = nb_filtergraphs
+
+ +

Definition at line 177 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ int

+ +
+
+ + + + +
int
+
+ +

Definition at line 165 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ ist

+ +
+
+ + + + +
fg inputs [0] ist = ist
+
+ +

Definition at line 191 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ ost

+ +
+
+ + + + +
fg outputs [0] ost
+
+Initial value:
{
+
FilterGraph *fg = av_mallocz(sizeof(*fg))
+
+

Definition at line 172 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ return

+ +
+
+ + + + +
return
+
+ +

Definition at line 205 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ sample_rate

+ +
+
+ + + + +
sample_rate
+
+ +

Definition at line 165 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ sample_rates

+ +
+
+ + + + +
sample_rates
+
+ +

Definition at line 165 of file fftools_ffmpeg_filter.c.

+ +
+
+
+
OutputFilter
Definition: fftools_ffmpeg.h:288
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+ + + + diff --git a/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c_source.html b/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c_source.html new file mode 100644 index 0000000..e53d5b1 --- /dev/null +++ b/docs/linux/html/d2/d36/fftools__ffmpeg__filter_8c_source.html @@ -0,0 +1,1371 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_filter.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffmpeg_filter.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * ffmpeg filter configuration
+
3  *
+
4  * This file is part of FFmpeg.
+
5  *
+
6  * FFmpeg is free software; you can redistribute it and/or
+
7  * modify it under the terms of the GNU Lesser General Public
+
8  * License as published by the Free Software Foundation; either
+
9  * version 2.1 of the License, or (at your option) any later version.
+
10  *
+
11  * FFmpeg is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
14  * Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public
+
17  * License along with FFmpeg; if not, write to the Free Software
+
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
19  */
+
20 
+
21 /*
+
22  * CHANGES 08.2018
+
23  * --------------------------------------------------------
+
24  * - fftools_ prefix added to file name and parent header
+
25  *
+
26  * CHANGES 07.2018
+
27  * --------------------------------------------------------
+
28  * - Unused headers removed
+
29  */
+
30 
+
31 #include <stdint.h>
+
32 
+
33 #include "fftools_ffmpeg.h"
+
34 
+
35 #include "libavfilter/avfilter.h"
+
36 #include "libavfilter/buffersink.h"
+
37 #include "libavfilter/buffersrc.h"
+
38 
+
39 #include "libavutil/avassert.h"
+
40 #include "libavutil/avstring.h"
+
41 #include "libavutil/bprint.h"
+
42 #include "libavutil/channel_layout.h"
+
43 #include "libavutil/display.h"
+
44 #include "libavutil/opt.h"
+
45 #include "libavutil/pixdesc.h"
+
46 #include "libavutil/pixfmt.h"
+
47 #include "libavutil/imgutils.h"
+
48 #include "libavutil/samplefmt.h"
+
49 
+
50 // FIXME: YUV420P etc. are actually supported with full color range,
+
51 // yet the latter information isn't available here.
+
52 static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *codec, const enum AVPixelFormat default_formats[])
+
53 {
+
54  static const enum AVPixelFormat mjpeg_formats[] =
+
55  { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P,
+
56  AV_PIX_FMT_NONE};
+
57 
+
58  if (!strcmp(codec->name, "mjpeg")) {
+
59  return mjpeg_formats;
+
60  } else {
+
61  return default_formats;
+
62  }
+
63 }
+
64 
+
65 enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target)
+
66 {
+
67  if (codec && codec->pix_fmts) {
+
68  const enum AVPixelFormat *p = codec->pix_fmts;
+
69  const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(target);
+
70  //FIXME: This should check for AV_PIX_FMT_FLAG_ALPHA after PAL8 pixel format without alpha is implemented
+
71  int has_alpha = desc ? desc->nb_components % 2 == 0 : 0;
+
72  enum AVPixelFormat best= AV_PIX_FMT_NONE;
+
73 
+
74  if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
+
75  p = get_compliance_normal_pix_fmts(codec, p);
+
76  }
+
77  for (; *p != AV_PIX_FMT_NONE; p++) {
+
78  best = av_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL);
+
79  if (*p == target)
+
80  break;
+
81  }
+
82  if (*p == AV_PIX_FMT_NONE) {
+
83  if (target != AV_PIX_FMT_NONE)
+
84  av_log(NULL, AV_LOG_WARNING,
+
85  "Incompatible pixel format '%s' for codec '%s', auto-selecting format '%s'\n",
+
86  av_get_pix_fmt_name(target),
+
87  codec->name,
+
88  av_get_pix_fmt_name(best));
+
89  return best;
+
90  }
+
91  }
+
92  return target;
+
93 }
+
94 
+
95 static char *choose_pix_fmts(OutputFilter *ofilter)
+
96 {
+
97  OutputStream *ost = ofilter->ost;
+
98  AVDictionaryEntry *strict_dict = av_dict_get(ost->encoder_opts, "strict", NULL, 0);
+
99  if (strict_dict)
+
100  // used by choose_pixel_fmt() and below
+
101  av_opt_set(ost->enc_ctx, "strict", strict_dict->value, 0);
+
102 
+
103  if (ost->keep_pix_fmt) {
+
104  avfilter_graph_set_auto_convert(ofilter->graph->graph,
+
105  AVFILTER_AUTO_CONVERT_NONE);
+
106  if (ost->enc_ctx->pix_fmt == AV_PIX_FMT_NONE)
+
107  return NULL;
+
108  return av_strdup(av_get_pix_fmt_name(ost->enc_ctx->pix_fmt));
+
109  }
+
110  if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
+
111  return av_strdup(av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc_ctx, ost->enc, ost->enc_ctx->pix_fmt)));
+
112  } else if (ost->enc && ost->enc->pix_fmts) {
+
113  const enum AVPixelFormat *p;
+
114  AVIOContext *s = NULL;
+
115  uint8_t *ret;
+
116  int len;
+
117 
+
118  if (avio_open_dyn_buf(&s) < 0)
+
119  exit_program(1);
+
120 
+
121  p = ost->enc->pix_fmts;
+
122  if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
+ +
124  }
+
125 
+
126  for (; *p != AV_PIX_FMT_NONE; p++) {
+
127  const char *name = av_get_pix_fmt_name(*p);
+
128  avio_printf(s, "%s|", name);
+
129  }
+
130  len = avio_close_dyn_buf(s, &ret);
+
131  ret[len - 1] = 0;
+
132  return ret;
+
133  } else
+
134  return NULL;
+
135 }
+
136 
+
137 /* Define a function for appending a list of allowed formats
+
138  * to an AVBPrint. If nonempty, the list will have a header. */
+
139 #define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, printf_format, get_name) \
+
140 static void choose_ ## name (OutputFilter *ofilter, AVBPrint *bprint) \
+
141 { \
+
142  if (ofilter->var == none && !ofilter->supported_list) \
+
143  return; \
+
144  av_bprintf(bprint, #name "="); \
+
145  if (ofilter->var != none) { \
+
146  av_bprintf(bprint, printf_format, get_name(ofilter->var)); \
+
147  } else { \
+
148  const type *p; \
+
149  \
+
150  for (p = ofilter->supported_list; *p != none; p++) { \
+
151  av_bprintf(bprint, printf_format "|", get_name(*p)); \
+
152  } \
+
153  if (bprint->len > 0) \
+
154  bprint->str[--bprint->len] = '\0'; \
+
155  } \
+
156  av_bprint_chars(bprint, ':', 1); \
+
157 }
+
158 
+
159 //DEF_CHOOSE_FORMAT(pix_fmts, enum AVPixelFormat, format, formats, AV_PIX_FMT_NONE,
+
160 // GET_PIX_FMT_NAME)
+
161 
+
162 DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats,
+
163  AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name)
+
164 
+ +
166  "%d", )
+
167 
+
168 DEF_CHOOSE_FORMAT(channel_layouts, uint64_t, channel_layout, channel_layouts, 0,
+
169  "0x%"PRIx64, )
+
170 
+ +
172 {
+
173  FilterGraph *fg = av_mallocz(sizeof(*fg));
+
174 
+
175  if (!fg)
+
176  exit_program(1);
+ +
178 
+
179  GROW_ARRAY(fg->outputs, fg->nb_outputs);
+
180  if (!(fg->outputs[0] = av_mallocz(sizeof(*fg->outputs[0]))))
+
181  exit_program(1);
+
182  fg->outputs[0]->ost = ost;
+
183  fg->outputs[0]->graph = fg;
+
184  fg->outputs[0]->format = -1;
+
185 
+
186  ost->filter = fg->outputs[0];
+
187 
+
188  GROW_ARRAY(fg->inputs, fg->nb_inputs);
+
189  if (!(fg->inputs[0] = av_mallocz(sizeof(*fg->inputs[0]))))
+
190  exit_program(1);
+
191  fg->inputs[0]->ist = ist;
+
192  fg->inputs[0]->graph = fg;
+
193  fg->inputs[0]->format = -1;
+
194 
+
195  fg->inputs[0]->frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*));
+
196  if (!fg->inputs[0]->frame_queue)
+
197  exit_program(1);
+
198 
+
199  GROW_ARRAY(ist->filters, ist->nb_filters);
+
200  ist->filters[ist->nb_filters - 1] = fg->inputs[0];
+
201 
+ + +
204 
+
205  return 0;
+
206 }
+
207 
+
208 static char *describe_filter_link(FilterGraph *fg, AVFilterInOut *inout, int in)
+
209 {
+
210  AVFilterContext *ctx = inout->filter_ctx;
+
211  AVFilterPad *pads = in ? ctx->input_pads : ctx->output_pads;
+
212  int nb_pads = in ? ctx->nb_inputs : ctx->nb_outputs;
+
213  AVIOContext *pb;
+
214  uint8_t *res = NULL;
+
215 
+
216  if (avio_open_dyn_buf(&pb) < 0)
+
217  exit_program(1);
+
218 
+
219  avio_printf(pb, "%s", ctx->filter->name);
+
220  if (nb_pads > 1)
+
221  avio_printf(pb, ":%s", avfilter_pad_get_name(pads, inout->pad_idx));
+
222  avio_w8(pb, 0);
+
223  avio_close_dyn_buf(pb, &res);
+
224  return res;
+
225 }
+
226 
+
227 static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
+
228 {
+
229  InputStream *ist = NULL;
+
230  enum AVMediaType type = avfilter_pad_get_type(in->filter_ctx->input_pads, in->pad_idx);
+
231  int i;
+
232 
+
233  // TODO: support other filter types
+
234  if (type != AVMEDIA_TYPE_VIDEO && type != AVMEDIA_TYPE_AUDIO) {
+
235  av_log(NULL, AV_LOG_FATAL, "Only video and audio filters supported "
+
236  "currently.\n");
+
237  exit_program(1);
+
238  }
+
239 
+
240  if (in->name) {
+
241  AVFormatContext *s;
+
242  AVStream *st = NULL;
+
243  char *p;
+
244  int file_idx = strtol(in->name, &p, 0);
+
245 
+
246  if (file_idx < 0 || file_idx >= nb_input_files) {
+
247  av_log(NULL, AV_LOG_FATAL, "Invalid file index %d in filtergraph description %s.\n",
+
248  file_idx, fg->graph_desc);
+
249  exit_program(1);
+
250  }
+
251  s = input_files[file_idx]->ctx;
+
252 
+
253  for (i = 0; i < s->nb_streams; i++) {
+
254  enum AVMediaType stream_type = s->streams[i]->codecpar->codec_type;
+
255  if (stream_type != type &&
+
256  !(stream_type == AVMEDIA_TYPE_SUBTITLE &&
+
257  type == AVMEDIA_TYPE_VIDEO /* sub2video hack */))
+
258  continue;
+
259  if (check_stream_specifier(s, s->streams[i], *p == ':' ? p + 1 : p) == 1) {
+
260  st = s->streams[i];
+
261  break;
+
262  }
+
263  }
+
264  if (!st) {
+
265  av_log(NULL, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
+
266  "matches no streams.\n", p, fg->graph_desc);
+
267  exit_program(1);
+
268  }
+
269  ist = input_streams[input_files[file_idx]->ist_index + st->index];
+
270  if (ist->user_set_discard == AVDISCARD_ALL) {
+
271  av_log(NULL, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
+
272  "matches a disabled input stream.\n", p, fg->graph_desc);
+
273  exit_program(1);
+
274  }
+
275  } else {
+
276  /* find the first unused stream of corresponding type */
+
277  for (i = 0; i < nb_input_streams; i++) {
+
278  ist = input_streams[i];
+
279  if (ist->user_set_discard == AVDISCARD_ALL)
+
280  continue;
+
281  if (ist->dec_ctx->codec_type == type && ist->discard)
+
282  break;
+
283  }
+
284  if (i == nb_input_streams) {
+
285  av_log(NULL, AV_LOG_FATAL, "Cannot find a matching stream for "
+
286  "unlabeled input pad %d on filter %s\n", in->pad_idx,
+
287  in->filter_ctx->name);
+
288  exit_program(1);
+
289  }
+
290  }
+
291  av_assert0(ist);
+
292 
+
293  ist->discard = 0;
+
294  ist->decoding_needed |= DECODING_FOR_FILTER;
+
295  ist->st->discard = AVDISCARD_NONE;
+
296 
+
297  GROW_ARRAY(fg->inputs, fg->nb_inputs);
+
298  if (!(fg->inputs[fg->nb_inputs - 1] = av_mallocz(sizeof(*fg->inputs[0]))))
+
299  exit_program(1);
+
300  fg->inputs[fg->nb_inputs - 1]->ist = ist;
+
301  fg->inputs[fg->nb_inputs - 1]->graph = fg;
+
302  fg->inputs[fg->nb_inputs - 1]->format = -1;
+
303  fg->inputs[fg->nb_inputs - 1]->type = ist->st->codecpar->codec_type;
+
304  fg->inputs[fg->nb_inputs - 1]->name = describe_filter_link(fg, in, 1);
+
305 
+
306  fg->inputs[fg->nb_inputs - 1]->frame_queue = av_fifo_alloc(8 * sizeof(AVFrame*));
+
307  if (!fg->inputs[fg->nb_inputs - 1]->frame_queue)
+
308  exit_program(1);
+
309 
+
310  GROW_ARRAY(ist->filters, ist->nb_filters);
+
311  ist->filters[ist->nb_filters - 1] = fg->inputs[fg->nb_inputs - 1];
+
312 }
+
313 
+ +
315 {
+
316  AVFilterInOut *inputs, *outputs, *cur;
+
317  AVFilterGraph *graph;
+
318  int ret = 0;
+
319 
+
320  /* this graph is only used for determining the kinds of inputs
+
321  * and outputs we have, and is discarded on exit from this function */
+
322  graph = avfilter_graph_alloc();
+
323  if (!graph)
+
324  return AVERROR(ENOMEM);
+
325  graph->nb_threads = 1;
+
326 
+
327  ret = avfilter_graph_parse2(graph, fg->graph_desc, &inputs, &outputs);
+
328  if (ret < 0)
+
329  goto fail;
+
330 
+
331  for (cur = inputs; cur; cur = cur->next)
+
332  init_input_filter(fg, cur);
+
333 
+
334  for (cur = outputs; cur;) {
+
335  GROW_ARRAY(fg->outputs, fg->nb_outputs);
+
336  fg->outputs[fg->nb_outputs - 1] = av_mallocz(sizeof(*fg->outputs[0]));
+
337  if (!fg->outputs[fg->nb_outputs - 1])
+
338  exit_program(1);
+
339 
+
340  fg->outputs[fg->nb_outputs - 1]->graph = fg;
+
341  fg->outputs[fg->nb_outputs - 1]->out_tmp = cur;
+
342  fg->outputs[fg->nb_outputs - 1]->type = avfilter_pad_get_type(cur->filter_ctx->output_pads,
+
343  cur->pad_idx);
+
344  fg->outputs[fg->nb_outputs - 1]->name = describe_filter_link(fg, cur, 0);
+
345  cur = cur->next;
+
346  fg->outputs[fg->nb_outputs - 1]->out_tmp->next = NULL;
+
347  }
+
348 
+
349 fail:
+
350  avfilter_inout_free(&inputs);
+
351  avfilter_graph_free(&graph);
+
352  return ret;
+
353 }
+
354 
+
355 static int insert_trim(int64_t start_time, int64_t duration,
+
356  AVFilterContext **last_filter, int *pad_idx,
+
357  const char *filter_name)
+
358 {
+
359  AVFilterGraph *graph = (*last_filter)->graph;
+
360  AVFilterContext *ctx;
+
361  const AVFilter *trim;
+
362  enum AVMediaType type = avfilter_pad_get_type((*last_filter)->output_pads, *pad_idx);
+
363  const char *name = (type == AVMEDIA_TYPE_VIDEO) ? "trim" : "atrim";
+
364  int ret = 0;
+
365 
+
366  if (duration == INT64_MAX && start_time == AV_NOPTS_VALUE)
+
367  return 0;
+
368 
+
369  trim = avfilter_get_by_name(name);
+
370  if (!trim) {
+
371  av_log(NULL, AV_LOG_ERROR, "%s filter not present, cannot limit "
+
372  "recording time.\n", name);
+
373  return AVERROR_FILTER_NOT_FOUND;
+
374  }
+
375 
+
376  ctx = avfilter_graph_alloc_filter(graph, trim, filter_name);
+
377  if (!ctx)
+
378  return AVERROR(ENOMEM);
+
379 
+
380  if (duration != INT64_MAX) {
+
381  ret = av_opt_set_int(ctx, "durationi", duration,
+
382  AV_OPT_SEARCH_CHILDREN);
+
383  }
+
384  if (ret >= 0 && start_time != AV_NOPTS_VALUE) {
+
385  ret = av_opt_set_int(ctx, "starti", start_time,
+
386  AV_OPT_SEARCH_CHILDREN);
+
387  }
+
388  if (ret < 0) {
+
389  av_log(ctx, AV_LOG_ERROR, "Error configuring the %s filter", name);
+
390  return ret;
+
391  }
+
392 
+
393  ret = avfilter_init_str(ctx, NULL);
+
394  if (ret < 0)
+
395  return ret;
+
396 
+
397  ret = avfilter_link(*last_filter, *pad_idx, ctx, 0);
+
398  if (ret < 0)
+
399  return ret;
+
400 
+
401  *last_filter = ctx;
+
402  *pad_idx = 0;
+
403  return 0;
+
404 }
+
405 
+
406 static int insert_filter(AVFilterContext **last_filter, int *pad_idx,
+
407  const char *filter_name, const char *args)
+
408 {
+
409  AVFilterGraph *graph = (*last_filter)->graph;
+
410  AVFilterContext *ctx;
+
411  int ret;
+
412 
+
413  ret = avfilter_graph_create_filter(&ctx,
+
414  avfilter_get_by_name(filter_name),
+
415  filter_name, args, NULL, graph);
+
416  if (ret < 0)
+
417  return ret;
+
418 
+
419  ret = avfilter_link(*last_filter, *pad_idx, ctx, 0);
+
420  if (ret < 0)
+
421  return ret;
+
422 
+
423  *last_filter = ctx;
+
424  *pad_idx = 0;
+
425  return 0;
+
426 }
+
427 
+
428 static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
+
429 {
+
430  char *pix_fmts;
+
431  OutputStream *ost = ofilter->ost;
+ +
433  AVFilterContext *last_filter = out->filter_ctx;
+
434  int pad_idx = out->pad_idx;
+
435  int ret;
+
436  char name[255];
+
437 
+
438  snprintf(name, sizeof(name), "out_%d_%d", ost->file_index, ost->index);
+
439  ret = avfilter_graph_create_filter(&ofilter->filter,
+
440  avfilter_get_by_name("buffersink"),
+
441  name, NULL, NULL, fg->graph);
+
442 
+
443  if (ret < 0)
+
444  return ret;
+
445 
+
446  if ((ofilter->width || ofilter->height) && ofilter->ost->autoscale) {
+
447  char args[255];
+
448  AVFilterContext *filter;
+
449  AVDictionaryEntry *e = NULL;
+
450 
+
451  snprintf(args, sizeof(args), "%d:%d",
+
452  ofilter->width, ofilter->height);
+
453 
+
454  while ((e = av_dict_get(ost->sws_dict, "", e,
+
455  AV_DICT_IGNORE_SUFFIX))) {
+
456  av_strlcatf(args, sizeof(args), ":%s=%s", e->key, e->value);
+
457  }
+
458 
+
459  snprintf(name, sizeof(name), "scaler_out_%d_%d",
+
460  ost->file_index, ost->index);
+
461  if ((ret = avfilter_graph_create_filter(&filter, avfilter_get_by_name("scale"),
+
462  name, args, NULL, fg->graph)) < 0)
+
463  return ret;
+
464  if ((ret = avfilter_link(last_filter, pad_idx, filter, 0)) < 0)
+
465  return ret;
+
466 
+
467  last_filter = filter;
+
468  pad_idx = 0;
+
469  }
+
470 
+
471  if ((pix_fmts = choose_pix_fmts(ofilter))) {
+
472  AVFilterContext *filter;
+
473 
+
474  ret = avfilter_graph_create_filter(&filter,
+
475  avfilter_get_by_name("format"),
+
476  "format", pix_fmts, NULL, fg->graph);
+
477  av_freep(&pix_fmts);
+
478  if (ret < 0)
+
479  return ret;
+
480  if ((ret = avfilter_link(last_filter, pad_idx, filter, 0)) < 0)
+
481  return ret;
+
482 
+
483  last_filter = filter;
+
484  pad_idx = 0;
+
485  }
+
486 
+
487  if (ost->frame_rate.num && 0) {
+
488  AVFilterContext *fps;
+
489  char args[255];
+
490 
+
491  snprintf(args, sizeof(args), "fps=%d/%d", ost->frame_rate.num,
+
492  ost->frame_rate.den);
+
493  snprintf(name, sizeof(name), "fps_out_%d_%d",
+
494  ost->file_index, ost->index);
+
495  ret = avfilter_graph_create_filter(&fps, avfilter_get_by_name("fps"),
+
496  name, args, NULL, fg->graph);
+
497  if (ret < 0)
+
498  return ret;
+
499 
+
500  ret = avfilter_link(last_filter, pad_idx, fps, 0);
+
501  if (ret < 0)
+
502  return ret;
+
503  last_filter = fps;
+
504  pad_idx = 0;
+
505  }
+
506 
+
507  snprintf(name, sizeof(name), "trim_out_%d_%d",
+
508  ost->file_index, ost->index);
+
509  ret = insert_trim(of->start_time, of->recording_time,
+
510  &last_filter, &pad_idx, name);
+
511  if (ret < 0)
+
512  return ret;
+
513 
+
514 
+
515  if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0)
+
516  return ret;
+
517 
+
518  return 0;
+
519 }
+
520 
+
521 static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
+
522 {
+
523  OutputStream *ost = ofilter->ost;
+ +
525  AVCodecContext *codec = ost->enc_ctx;
+
526  AVFilterContext *last_filter = out->filter_ctx;
+
527  int pad_idx = out->pad_idx;
+
528  AVBPrint args;
+
529  char name[255];
+
530  int ret;
+
531 
+
532  snprintf(name, sizeof(name), "out_%d_%d", ost->file_index, ost->index);
+
533  ret = avfilter_graph_create_filter(&ofilter->filter,
+
534  avfilter_get_by_name("abuffersink"),
+
535  name, NULL, NULL, fg->graph);
+
536  if (ret < 0)
+
537  return ret;
+
538  if ((ret = av_opt_set_int(ofilter->filter, "all_channel_counts", 1, AV_OPT_SEARCH_CHILDREN)) < 0)
+
539  return ret;
+
540 
+
541 #define AUTO_INSERT_FILTER(opt_name, filter_name, arg) do { \
+
542  AVFilterContext *filt_ctx; \
+
543  \
+
544  av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \
+
545  "similarly to -af " filter_name "=%s.\n", arg); \
+
546  \
+
547  ret = avfilter_graph_create_filter(&filt_ctx, \
+
548  avfilter_get_by_name(filter_name), \
+
549  filter_name, arg, NULL, fg->graph); \
+
550  if (ret < 0) \
+
551  goto fail; \
+
552  \
+
553  ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \
+
554  if (ret < 0) \
+
555  goto fail; \
+
556  \
+
557  last_filter = filt_ctx; \
+
558  pad_idx = 0; \
+
559 } while (0)
+
560  av_bprint_init(&args, 0, AV_BPRINT_SIZE_UNLIMITED);
+
561  if (ost->audio_channels_mapped) {
+
562  int i;
+
563  av_bprintf(&args, "0x%"PRIx64,
+
564  av_get_default_channel_layout(ost->audio_channels_mapped));
+
565  for (i = 0; i < ost->audio_channels_mapped; i++)
+
566  if (ost->audio_channels_map[i] != -1)
+
567  av_bprintf(&args, "|c%d=c%d", i, ost->audio_channels_map[i]);
+
568 
+
569  AUTO_INSERT_FILTER("-map_channel", "pan", args.str);
+
570  av_bprint_clear(&args);
+
571  }
+
572 
+
573  if (codec->channels && !codec->channel_layout)
+
574  codec->channel_layout = av_get_default_channel_layout(codec->channels);
+
575 
+
576  choose_sample_fmts(ofilter, &args);
+
577  choose_sample_rates(ofilter, &args);
+
578  choose_channel_layouts(ofilter, &args);
+
579  if (!av_bprint_is_complete(&args)) {
+
580  ret = AVERROR(ENOMEM);
+
581  goto fail;
+
582  }
+
583  if (args.len) {
+
584  AVFilterContext *format;
+
585 
+
586  snprintf(name, sizeof(name), "format_out_%d_%d",
+
587  ost->file_index, ost->index);
+
588  ret = avfilter_graph_create_filter(&format,
+
589  avfilter_get_by_name("aformat"),
+
590  name, args.str, NULL, fg->graph);
+
591  if (ret < 0)
+
592  goto fail;
+
593 
+
594  ret = avfilter_link(last_filter, pad_idx, format, 0);
+
595  if (ret < 0)
+
596  goto fail;
+
597 
+
598  last_filter = format;
+
599  pad_idx = 0;
+
600  }
+
601 
+
602  if (ost->apad && of->shortest) {
+
603  int i;
+
604 
+
605  for (i=0; i<of->ctx->nb_streams; i++)
+
606  if (of->ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
+
607  break;
+
608 
+
609  if (i<of->ctx->nb_streams) {
+
610  AUTO_INSERT_FILTER("-apad", "apad", ost->apad);
+
611  }
+
612  }
+
613 
+
614  snprintf(name, sizeof(name), "trim for output stream %d:%d",
+
615  ost->file_index, ost->index);
+
616  ret = insert_trim(of->start_time, of->recording_time,
+
617  &last_filter, &pad_idx, name);
+
618  if (ret < 0)
+
619  goto fail;
+
620 
+
621  if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0)
+
622  goto fail;
+
623 fail:
+
624  av_bprint_finalize(&args, NULL);
+
625 
+
626  return ret;
+
627 }
+
628 
+
629 int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
+
630 {
+
631  if (!ofilter->ost) {
+
632  av_log(NULL, AV_LOG_FATAL, "Filter %s has an unconnected output\n", ofilter->name);
+
633  exit_program(1);
+
634  }
+
635 
+
636  switch (avfilter_pad_get_type(out->filter_ctx->output_pads, out->pad_idx)) {
+
637  case AVMEDIA_TYPE_VIDEO: return configure_output_video_filter(fg, ofilter, out);
+
638  case AVMEDIA_TYPE_AUDIO: return configure_output_audio_filter(fg, ofilter, out);
+
639  default: av_assert0(0); return 0;
+
640  }
+
641 }
+
642 
+ +
644 {
+
645  int i;
+
646  for (i = 0; i < nb_filtergraphs; i++) {
+
647  int n;
+
648  for (n = 0; n < filtergraphs[i]->nb_outputs; n++) {
+
649  OutputFilter *output = filtergraphs[i]->outputs[n];
+
650  if (!output->ost) {
+
651  av_log(NULL, AV_LOG_FATAL, "Filter %s has an unconnected output\n", output->name);
+
652  exit_program(1);
+
653  }
+
654  }
+
655  }
+
656 }
+
657 
+ +
659 {
+
660  AVFormatContext *avf = input_files[ist->file_index]->ctx;
+
661  int i, w, h;
+
662 
+
663  /* Compute the size of the canvas for the subtitles stream.
+
664  If the subtitles codecpar has set a size, use it. Otherwise use the
+
665  maximum dimensions of the video streams in the same file. */
+
666  w = ifilter->width;
+
667  h = ifilter->height;
+
668  if (!(w && h)) {
+
669  for (i = 0; i < avf->nb_streams; i++) {
+
670  if (avf->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+
671  w = FFMAX(w, avf->streams[i]->codecpar->width);
+
672  h = FFMAX(h, avf->streams[i]->codecpar->height);
+
673  }
+
674  }
+
675  if (!(w && h)) {
+
676  w = FFMAX(w, 720);
+
677  h = FFMAX(h, 576);
+
678  }
+
679  av_log(avf, AV_LOG_INFO, "sub2video: using %dx%d canvas\n", w, h);
+
680  }
+
681  ist->sub2video.w = ifilter->width = w;
+
682  ist->sub2video.h = ifilter->height = h;
+
683 
+
684  ifilter->width = ist->dec_ctx->width ? ist->dec_ctx->width : ist->sub2video.w;
+
685  ifilter->height = ist->dec_ctx->height ? ist->dec_ctx->height : ist->sub2video.h;
+
686 
+
687  /* rectangles are AV_PIX_FMT_PAL8, but we have no guarantee that the
+
688  palettes for all rectangles are identical or compatible */
+
689  ifilter->format = AV_PIX_FMT_RGB32;
+
690 
+
691  ist->sub2video.frame = av_frame_alloc();
+
692  if (!ist->sub2video.frame)
+
693  return AVERROR(ENOMEM);
+
694  ist->sub2video.last_pts = INT64_MIN;
+
695  ist->sub2video.end_pts = INT64_MIN;
+
696 
+
697  /* sub2video structure has been (re-)initialized.
+
698  Mark it as such so that the system will be
+
699  initialized with the first received heartbeat. */
+
700  ist->sub2video.initialize = 1;
+
701 
+
702  return 0;
+
703 }
+
704 
+ +
706  AVFilterInOut *in)
+
707 {
+
708  AVFilterContext *last_filter;
+
709  const AVFilter *buffer_filt = avfilter_get_by_name("buffer");
+
710  InputStream *ist = ifilter->ist;
+
711  InputFile *f = input_files[ist->file_index];
+
712  AVRational tb = ist->framerate.num ? av_inv_q(ist->framerate) :
+
713  ist->st->time_base;
+
714  AVRational fr = ist->framerate;
+
715  AVRational sar;
+
716  AVBPrint args;
+
717  char name[255];
+
718  int ret, pad_idx = 0;
+
719  int64_t tsoffset = 0;
+
720  AVBufferSrcParameters *par = av_buffersrc_parameters_alloc();
+
721 
+
722  if (!par)
+
723  return AVERROR(ENOMEM);
+
724  memset(par, 0, sizeof(*par));
+
725  par->format = AV_PIX_FMT_NONE;
+
726 
+
727  if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) {
+
728  av_log(NULL, AV_LOG_ERROR, "Cannot connect video filter to audio input\n");
+
729  ret = AVERROR(EINVAL);
+
730  goto fail;
+
731  }
+
732 
+
733  if (!fr.num)
+
734  fr = av_guess_frame_rate(input_files[ist->file_index]->ctx, ist->st, NULL);
+
735 
+
736  if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_SUBTITLE) {
+
737  ret = sub2video_prepare(ist, ifilter);
+
738  if (ret < 0)
+
739  goto fail;
+
740  }
+
741 
+
742  sar = ifilter->sample_aspect_ratio;
+
743  if(!sar.den)
+
744  sar = (AVRational){0,1};
+
745  av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
746  av_bprintf(&args,
+
747  "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:"
+
748  "pixel_aspect=%d/%d",
+
749  ifilter->width, ifilter->height, ifilter->format,
+
750  tb.num, tb.den, sar.num, sar.den);
+
751  if (fr.num && fr.den)
+
752  av_bprintf(&args, ":frame_rate=%d/%d", fr.num, fr.den);
+
753  snprintf(name, sizeof(name), "graph %d input from stream %d:%d", fg->index,
+
754  ist->file_index, ist->st->index);
+
755 
+
756 
+
757  if ((ret = avfilter_graph_create_filter(&ifilter->filter, buffer_filt, name,
+
758  args.str, NULL, fg->graph)) < 0)
+
759  goto fail;
+
760  par->hw_frames_ctx = ifilter->hw_frames_ctx;
+
761  ret = av_buffersrc_parameters_set(ifilter->filter, par);
+
762  if (ret < 0)
+
763  goto fail;
+
764  av_freep(&par);
+
765  last_filter = ifilter->filter;
+
766 
+
767  if (ist->autorotate) {
+
768  double theta = get_rotation(ist->st);
+
769 
+
770  if (fabs(theta - 90) < 1.0) {
+
771  ret = insert_filter(&last_filter, &pad_idx, "transpose", "clock");
+
772  } else if (fabs(theta - 180) < 1.0) {
+
773  ret = insert_filter(&last_filter, &pad_idx, "hflip", NULL);
+
774  if (ret < 0)
+
775  return ret;
+
776  ret = insert_filter(&last_filter, &pad_idx, "vflip", NULL);
+
777  } else if (fabs(theta - 270) < 1.0) {
+
778  ret = insert_filter(&last_filter, &pad_idx, "transpose", "cclock");
+
779  } else if (fabs(theta) > 1.0) {
+
780  char rotate_buf[64];
+
781  snprintf(rotate_buf, sizeof(rotate_buf), "%f*PI/180", theta);
+
782  ret = insert_filter(&last_filter, &pad_idx, "rotate", rotate_buf);
+
783  }
+
784  if (ret < 0)
+
785  return ret;
+
786  }
+
787 
+
788  if (do_deinterlace) {
+
789  AVFilterContext *yadif;
+
790 
+
791  snprintf(name, sizeof(name), "deinterlace_in_%d_%d",
+
792  ist->file_index, ist->st->index);
+
793  if ((ret = avfilter_graph_create_filter(&yadif,
+
794  avfilter_get_by_name("yadif"),
+
795  name, "", NULL,
+
796  fg->graph)) < 0)
+
797  return ret;
+
798 
+
799  if ((ret = avfilter_link(last_filter, 0, yadif, 0)) < 0)
+
800  return ret;
+
801 
+
802  last_filter = yadif;
+
803  }
+
804 
+
805  snprintf(name, sizeof(name), "trim_in_%d_%d",
+
806  ist->file_index, ist->st->index);
+
807  if (copy_ts) {
+
808  tsoffset = f->start_time == AV_NOPTS_VALUE ? 0 : f->start_time;
+
809  if (!start_at_zero && f->ctx->start_time != AV_NOPTS_VALUE)
+
810  tsoffset += f->ctx->start_time;
+
811  }
+
812  ret = insert_trim(((f->start_time == AV_NOPTS_VALUE) || !f->accurate_seek) ?
+
813  AV_NOPTS_VALUE : tsoffset, f->recording_time,
+
814  &last_filter, &pad_idx, name);
+
815  if (ret < 0)
+
816  return ret;
+
817 
+
818  if ((ret = avfilter_link(last_filter, 0, in->filter_ctx, in->pad_idx)) < 0)
+
819  return ret;
+
820  return 0;
+
821 fail:
+
822  av_freep(&par);
+
823 
+
824  return ret;
+
825 }
+
826 
+ +
828  AVFilterInOut *in)
+
829 {
+
830  AVFilterContext *last_filter;
+
831  const AVFilter *abuffer_filt = avfilter_get_by_name("abuffer");
+
832  InputStream *ist = ifilter->ist;
+
833  InputFile *f = input_files[ist->file_index];
+
834  AVBPrint args;
+
835  char name[255];
+
836  int ret, pad_idx = 0;
+
837  int64_t tsoffset = 0;
+
838 
+
839  if (ist->dec_ctx->codec_type != AVMEDIA_TYPE_AUDIO) {
+
840  av_log(NULL, AV_LOG_ERROR, "Cannot connect audio filter to non audio input\n");
+
841  return AVERROR(EINVAL);
+
842  }
+
843 
+
844  av_bprint_init(&args, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
845  av_bprintf(&args, "time_base=%d/%d:sample_rate=%d:sample_fmt=%s",
+
846  1, ifilter->sample_rate,
+
847  ifilter->sample_rate,
+
848  av_get_sample_fmt_name(ifilter->format));
+
849  if (ifilter->channel_layout)
+
850  av_bprintf(&args, ":channel_layout=0x%"PRIx64,
+
851  ifilter->channel_layout);
+
852  else
+
853  av_bprintf(&args, ":channels=%d", ifilter->channels);
+
854  snprintf(name, sizeof(name), "graph_%d_in_%d_%d", fg->index,
+
855  ist->file_index, ist->st->index);
+
856 
+
857  if ((ret = avfilter_graph_create_filter(&ifilter->filter, abuffer_filt,
+
858  name, args.str, NULL,
+
859  fg->graph)) < 0)
+
860  return ret;
+
861  last_filter = ifilter->filter;
+
862 
+
863 #define AUTO_INSERT_FILTER_INPUT(opt_name, filter_name, arg) do { \
+
864  AVFilterContext *filt_ctx; \
+
865  \
+
866  av_log(NULL, AV_LOG_INFO, opt_name " is forwarded to lavfi " \
+
867  "similarly to -af " filter_name "=%s.\n", arg); \
+
868  \
+
869  snprintf(name, sizeof(name), "graph_%d_%s_in_%d_%d", \
+
870  fg->index, filter_name, ist->file_index, ist->st->index); \
+
871  ret = avfilter_graph_create_filter(&filt_ctx, \
+
872  avfilter_get_by_name(filter_name), \
+
873  name, arg, NULL, fg->graph); \
+
874  if (ret < 0) \
+
875  return ret; \
+
876  \
+
877  ret = avfilter_link(last_filter, 0, filt_ctx, 0); \
+
878  if (ret < 0) \
+
879  return ret; \
+
880  \
+
881  last_filter = filt_ctx; \
+
882 } while (0)
+
883 
+
884  if (audio_sync_method > 0) {
+
885  char args[256] = {0};
+
886 
+
887  av_strlcatf(args, sizeof(args), "async=%d", audio_sync_method);
+
888  if (audio_drift_threshold != 0.1)
+
889  av_strlcatf(args, sizeof(args), ":min_hard_comp=%f", audio_drift_threshold);
+
890  if (!fg->reconfiguration)
+
891  av_strlcatf(args, sizeof(args), ":first_pts=0");
+
892  AUTO_INSERT_FILTER_INPUT("-async", "aresample", args);
+
893  }
+
894 
+
895 // if (ost->audio_channels_mapped) {
+
896 // int i;
+
897 // AVBPrint pan_buf;
+
898 // av_bprint_init(&pan_buf, 256, 8192);
+
899 // av_bprintf(&pan_buf, "0x%"PRIx64,
+
900 // av_get_default_channel_layout(ost->audio_channels_mapped));
+
901 // for (i = 0; i < ost->audio_channels_mapped; i++)
+
902 // if (ost->audio_channels_map[i] != -1)
+
903 // av_bprintf(&pan_buf, ":c%d=c%d", i, ost->audio_channels_map[i]);
+
904 // AUTO_INSERT_FILTER_INPUT("-map_channel", "pan", pan_buf.str);
+
905 // av_bprint_finalize(&pan_buf, NULL);
+
906 // }
+
907 
+
908  if (audio_volume != 256) {
+
909  char args[256];
+
910 
+
911  av_log(NULL, AV_LOG_WARNING, "-vol has been deprecated. Use the volume "
+
912  "audio filter instead.\n");
+
913 
+
914  snprintf(args, sizeof(args), "%f", audio_volume / 256.);
+
915  AUTO_INSERT_FILTER_INPUT("-vol", "volume", args);
+
916  }
+
917 
+
918  snprintf(name, sizeof(name), "trim for input stream %d:%d",
+
919  ist->file_index, ist->st->index);
+
920  if (copy_ts) {
+
921  tsoffset = f->start_time == AV_NOPTS_VALUE ? 0 : f->start_time;
+
922  if (!start_at_zero && f->ctx->start_time != AV_NOPTS_VALUE)
+
923  tsoffset += f->ctx->start_time;
+
924  }
+
925  ret = insert_trim(((f->start_time == AV_NOPTS_VALUE) || !f->accurate_seek) ?
+
926  AV_NOPTS_VALUE : tsoffset, f->recording_time,
+
927  &last_filter, &pad_idx, name);
+
928  if (ret < 0)
+
929  return ret;
+
930 
+
931  if ((ret = avfilter_link(last_filter, 0, in->filter_ctx, in->pad_idx)) < 0)
+
932  return ret;
+
933 
+
934  return 0;
+
935 }
+
936 
+ +
938  AVFilterInOut *in)
+
939 {
+
940  if (!ifilter->ist->dec) {
+
941  av_log(NULL, AV_LOG_ERROR,
+
942  "No decoder for stream #%d:%d, filtering impossible\n",
+
943  ifilter->ist->file_index, ifilter->ist->st->index);
+
944  return AVERROR_DECODER_NOT_FOUND;
+
945  }
+
946  switch (avfilter_pad_get_type(in->filter_ctx->input_pads, in->pad_idx)) {
+
947  case AVMEDIA_TYPE_VIDEO: return configure_input_video_filter(fg, ifilter, in);
+
948  case AVMEDIA_TYPE_AUDIO: return configure_input_audio_filter(fg, ifilter, in);
+
949  default: av_assert0(0); return 0;
+
950  }
+
951 }
+
952 
+ +
954 {
+
955  int i;
+
956  for (i = 0; i < fg->nb_outputs; i++)
+
957  fg->outputs[i]->filter = (AVFilterContext *)NULL;
+
958  for (i = 0; i < fg->nb_inputs; i++)
+
959  fg->inputs[i]->filter = (AVFilterContext *)NULL;
+
960  avfilter_graph_free(&fg->graph);
+
961 }
+
962 
+ +
964 {
+
965  AVFilterInOut *inputs, *outputs, *cur;
+
966  int ret, i, simple = filtergraph_is_simple(fg);
+
967  const char *graph_desc = simple ? fg->outputs[0]->ost->avfilter :
+
968  fg->graph_desc;
+
969 
+ +
971  if (!(fg->graph = avfilter_graph_alloc()))
+
972  return AVERROR(ENOMEM);
+
973 
+
974  if (simple) {
+
975  OutputStream *ost = fg->outputs[0]->ost;
+
976  char args[512];
+
977  AVDictionaryEntry *e = NULL;
+
978 
+
979  fg->graph->nb_threads = filter_nbthreads;
+
980 
+
981  args[0] = 0;
+
982  while ((e = av_dict_get(ost->sws_dict, "", e,
+
983  AV_DICT_IGNORE_SUFFIX))) {
+
984  av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
+
985  }
+
986  if (strlen(args))
+
987  args[strlen(args)-1] = 0;
+
988 
+
989  if (!strncmp(args, "sws_flags=", 10)) {
+
990  // keep the 'flags=' part
+
991  fg->graph->scale_sws_opts = av_strdup(args+4);
+
992  }
+
993 
+
994  args[0] = 0;
+
995  while ((e = av_dict_get(ost->swr_opts, "", e,
+
996  AV_DICT_IGNORE_SUFFIX))) {
+
997  av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
+
998  }
+
999  if (strlen(args))
+
1000  args[strlen(args)-1] = 0;
+
1001  av_opt_set(fg->graph, "aresample_swr_opts", args, 0);
+
1002 
+
1003  args[0] = '\0';
+
1004  while ((e = av_dict_get(fg->outputs[0]->ost->resample_opts, "", e,
+
1005  AV_DICT_IGNORE_SUFFIX))) {
+
1006  av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
+
1007  }
+
1008  if (strlen(args))
+
1009  args[strlen(args) - 1] = '\0';
+
1010 
+
1011  e = av_dict_get(ost->encoder_opts, "threads", NULL, 0);
+
1012  if (e)
+
1013  av_opt_set(fg->graph, "threads", e->value, 0);
+
1014  } else {
+
1015  fg->graph->nb_threads = filter_complex_nbthreads;
+
1016  }
+
1017 
+
1018  if ((ret = avfilter_graph_parse2(fg->graph, graph_desc, &inputs, &outputs)) < 0)
+
1019  goto fail;
+
1020 
+
1021  ret = hw_device_setup_for_filter(fg);
+
1022  if (ret < 0)
+
1023  goto fail;
+
1024 
+
1025  if (simple && (!inputs || inputs->next || !outputs || outputs->next)) {
+
1026  const char *num_inputs;
+
1027  const char *num_outputs;
+
1028  if (!outputs) {
+
1029  num_outputs = "0";
+
1030  } else if (outputs->next) {
+
1031  num_outputs = ">1";
+
1032  } else {
+
1033  num_outputs = "1";
+
1034  }
+
1035  if (!inputs) {
+
1036  num_inputs = "0";
+
1037  } else if (inputs->next) {
+
1038  num_inputs = ">1";
+
1039  } else {
+
1040  num_inputs = "1";
+
1041  }
+
1042  av_log(NULL, AV_LOG_ERROR, "Simple filtergraph '%s' was expected "
+
1043  "to have exactly 1 input and 1 output."
+
1044  " However, it had %s input(s) and %s output(s)."
+
1045  " Please adjust, or use a complex filtergraph (-filter_complex) instead.\n",
+
1046  graph_desc, num_inputs, num_outputs);
+
1047  ret = AVERROR(EINVAL);
+
1048  goto fail;
+
1049  }
+
1050 
+
1051  for (cur = inputs, i = 0; cur; cur = cur->next, i++)
+
1052  if ((ret = configure_input_filter(fg, fg->inputs[i], cur)) < 0) {
+
1053  avfilter_inout_free(&inputs);
+
1054  avfilter_inout_free(&outputs);
+
1055  goto fail;
+
1056  }
+
1057  avfilter_inout_free(&inputs);
+
1058 
+
1059  for (cur = outputs, i = 0; cur; cur = cur->next, i++)
+
1060  configure_output_filter(fg, fg->outputs[i], cur);
+
1061  avfilter_inout_free(&outputs);
+
1062 
+ +
1064  avfilter_graph_set_auto_convert(fg->graph, AVFILTER_AUTO_CONVERT_NONE);
+
1065  if ((ret = avfilter_graph_config(fg->graph, NULL)) < 0)
+
1066  goto fail;
+
1067 
+
1068  /* limit the lists of allowed formats to the ones selected, to
+
1069  * make sure they stay the same if the filtergraph is reconfigured later */
+
1070  for (i = 0; i < fg->nb_outputs; i++) {
+
1071  OutputFilter *ofilter = fg->outputs[i];
+
1072  AVFilterContext *sink = ofilter->filter;
+
1073 
+
1074  ofilter->format = av_buffersink_get_format(sink);
+
1075 
+
1076  ofilter->width = av_buffersink_get_w(sink);
+
1077  ofilter->height = av_buffersink_get_h(sink);
+
1078 
+
1079  ofilter->sample_rate = av_buffersink_get_sample_rate(sink);
+
1080  ofilter->channel_layout = av_buffersink_get_channel_layout(sink);
+
1081  }
+
1082 
+
1083  fg->reconfiguration = 1;
+
1084 
+
1085  for (i = 0; i < fg->nb_outputs; i++) {
+
1086  OutputStream *ost = fg->outputs[i]->ost;
+
1087  if (!ost->enc) {
+
1088  /* identical to the same check in ffmpeg.c, needed because
+
1089  complex filter graphs are initialized earlier */
+
1090  av_log(NULL, AV_LOG_ERROR, "Encoder (codec %s) not found for output stream #%d:%d\n",
+
1091  avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
+
1092  ret = AVERROR(EINVAL);
+
1093  goto fail;
+
1094  }
+
1095  if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
+
1096  !(ost->enc->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
+
1097  av_buffersink_set_frame_size(ost->filter->filter,
+
1098  ost->enc_ctx->frame_size);
+
1099  }
+
1100 
+
1101  for (i = 0; i < fg->nb_inputs; i++) {
+
1102  while (av_fifo_size(fg->inputs[i]->frame_queue)) {
+
1103  AVFrame *tmp;
+
1104  av_fifo_generic_read(fg->inputs[i]->frame_queue, &tmp, sizeof(tmp), NULL);
+
1105  ret = av_buffersrc_add_frame(fg->inputs[i]->filter, tmp);
+
1106  av_frame_free(&tmp);
+
1107  if (ret < 0)
+
1108  goto fail;
+
1109  }
+
1110  }
+
1111 
+
1112  /* send the EOFs for the finished inputs */
+
1113  for (i = 0; i < fg->nb_inputs; i++) {
+
1114  if (fg->inputs[i]->eof) {
+
1115  ret = av_buffersrc_add_frame(fg->inputs[i]->filter, NULL);
+
1116  if (ret < 0)
+
1117  goto fail;
+
1118  }
+
1119  }
+
1120 
+
1121  /* process queued up subtitle packets */
+
1122  for (i = 0; i < fg->nb_inputs; i++) {
+
1123  InputStream *ist = fg->inputs[i]->ist;
+
1124  if (ist->sub2video.sub_queue && ist->sub2video.frame) {
+
1125  while (av_fifo_size(ist->sub2video.sub_queue)) {
+
1126  AVSubtitle tmp;
+
1127  av_fifo_generic_read(ist->sub2video.sub_queue, &tmp, sizeof(tmp), NULL);
+
1128  sub2video_update(ist, INT64_MIN, &tmp);
+
1129  avsubtitle_free(&tmp);
+
1130  }
+
1131  }
+
1132  }
+
1133 
+
1134  return 0;
+
1135 
+
1136 fail:
+
1137  cleanup_filtergraph(fg);
+
1138  return ret;
+
1139 }
+
1140 
+
1141 int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
+
1142 {
+
1143  av_buffer_unref(&ifilter->hw_frames_ctx);
+
1144 
+
1145  ifilter->format = frame->format;
+
1146 
+
1147  ifilter->width = frame->width;
+
1148  ifilter->height = frame->height;
+
1149  ifilter->sample_aspect_ratio = frame->sample_aspect_ratio;
+
1150 
+
1151  ifilter->sample_rate = frame->sample_rate;
+
1152  ifilter->channels = frame->channels;
+
1153  ifilter->channel_layout = frame->channel_layout;
+
1154 
+
1155  if (frame->hw_frames_ctx) {
+
1156  ifilter->hw_frames_ctx = av_buffer_ref(frame->hw_frames_ctx);
+
1157  if (!ifilter->hw_frames_ctx)
+
1158  return AVERROR(ENOMEM);
+
1159  }
+
1160 
+
1161  return 0;
+
1162 }
+
1163 
+ +
1165 {
+
1166  return !fg->graph_desc;
+
1167 }
+
+
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Definition: fftools_cmdutils.c:2148
+
AUTO_INSERT_FILTER
#define AUTO_INSERT_FILTER(opt_name, filter_name, arg)
+
GROW_ARRAY
GROW_ARRAY(fg->outputs, fg->nb_outputs)
+
OutputStream::avfilter
char * avfilter
Definition: fftools_ffmpeg.h:542
+
init_input_filter
static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
Definition: fftools_ffmpeg_filter.c:227
+
ifilter_parameters_from_frame
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
Definition: fftools_ffmpeg_filter.c:1141
+
InputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:268
+
OutputStream::autoscale
int autoscale
Definition: fftools_ffmpeg.h:519
+
AUTO_INSERT_FILTER_INPUT
#define AUTO_INSERT_FILTER_INPUT(opt_name, filter_name, arg)
+
OutputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:603
+
configure_output_filter
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
Definition: fftools_ffmpeg_filter.c:629
+
fftools_ffmpeg.h
+
FilterGraph::index
int index
Definition: fftools_ffmpeg.h:312
+
exit_program
void exit_program(int ret)
Definition: fftools_cmdutils.c:160
+
output_files
__thread OutputFile ** output_files
Definition: fftools_ffmpeg.c:183
+
nb_input_streams
__thread int nb_input_streams
Definition: fftools_ffmpeg.c:177
+
InputStream
Definition: fftools_ffmpeg.h:324
+
audio_drift_threshold
__thread float audio_drift_threshold
Definition: fftools_ffmpeg_opt.c:163
+
OutputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:303
+
filtergraph_is_simple
int filtergraph_is_simple(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:1164
+
graph
fg outputs[0] graph
Definition: fftools_ffmpeg_filter.c:183
+
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: fftools_ffmpeg.h:536
+
OutputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:479
+
InputFilter
Definition: fftools_ffmpeg.h:264
+
do_deinterlace
__thread int do_deinterlace
Definition: fftools_ffmpeg_opt.c:171
+
choose_pixel_fmt
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target)
Definition: fftools_ffmpeg_filter.c:65
+
OutputFilter
Definition: fftools_ffmpeg.h:288
+
InputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:281
+
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: fftools_ffmpeg.h:547
+
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
+
OutputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:291
+
FilterGraph::nb_inputs
int nb_inputs
Definition: fftools_ffmpeg.h:319
+
filtergraphs
filtergraphs[nb_filtergraphs - 1]
Definition: fftools_ffmpeg_filter.c:203
+
auto_conversion_filters
__thread int auto_conversion_filters
Definition: fftools_ffmpeg_opt.c:190
+
InputFilter::ist
struct InputStream * ist
Definition: fftools_ffmpeg.h:266
+
InputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:269
+
InputFilter::frame_queue
AVFifoBuffer * frame_queue
Definition: fftools_ffmpeg.h:271
+
InputFile
Definition: fftools_ffmpeg.h:425
+
OutputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:292
+
init_complex_filtergraph
int init_complex_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:314
+
InputFile::accurate_seek
int accurate_seek
Definition: fftools_ffmpeg.h:446
+
FilterGraph::graph_desc
const char * graph_desc
Definition: fftools_ffmpeg.h:313
+
insert_filter
static int insert_filter(AVFilterContext **last_filter, int *pad_idx, const char *filter_name, const char *args)
Definition: fftools_ffmpeg_filter.c:406
+
OutputFile::shortest
int shortest
Definition: fftools_ffmpeg.h:610
+
nb_input_files
__thread int nb_input_files
Definition: fftools_ffmpeg.c:179
+
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:606
+
filter_nbthreads
__thread int filter_nbthreads
Definition: fftools_ffmpeg_opt.c:187
+
hw_device_setup_for_filter
int hw_device_setup_for_filter(FilterGraph *fg)
Definition: fftools_ffmpeg_hw.c:546
+
InputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:426
+
audio_sync_method
__thread int audio_sync_method
Definition: fftools_ffmpeg_opt.c:168
+
FilterGraph::nb_outputs
int nb_outputs
Definition: fftools_ffmpeg.h:321
+
sub2video_update
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
Definition: fftools_ffmpeg.c:334
+
InputFilter::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: fftools_ffmpeg.h:277
+
InputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:267
+
configure_output_audio_filter
static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
Definition: fftools_ffmpeg_filter.c:521
+
OutputStream::resample_opts
AVDictionary * resample_opts
Definition: fftools_ffmpeg.h:549
+
InputFilter::height
int height
Definition: fftools_ffmpeg.h:276
+
OutputStream::filter
OutputFilter * filter
Definition: fftools_ffmpeg.h:541
+
filter
ost filter
Definition: fftools_ffmpeg_filter.c:186
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
sample_rate
sample_rate
Definition: fftools_ffmpeg_filter.c:165
+
FilterGraph::graph
AVFilterGraph * graph
Definition: fftools_ffmpeg.h:315
+
describe_filter_link
static char * describe_filter_link(FilterGraph *fg, AVFilterInOut *inout, int in)
Definition: fftools_ffmpeg_filter.c:208
+
InputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:265
+
FilterGraph::outputs
OutputFilter ** outputs
Definition: fftools_ffmpeg.h:320
+
FilterGraph::inputs
InputFilter ** inputs
Definition: fftools_ffmpeg.h:318
+
OutputFilter::format
int format
Definition: fftools_ffmpeg.h:301
+
OutputStream::index
int index
Definition: fftools_ffmpeg.h:480
+
InputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:326
+
InputFilter::eof
int eof
Definition: fftools_ffmpeg.h:285
+
OutputStream::keep_pix_fmt
int keep_pix_fmt
Definition: fftools_ffmpeg.h:567
+
configure_filtergraph
int configure_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:963
+
d
d
Definition: fftools_ffmpeg_filter.c:165
+
configure_input_video_filter
static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
Definition: fftools_ffmpeg_filter.c:705
+
format
fg outputs[0] format
Definition: fftools_ffmpeg_filter.c:184
+
InputFile::ist_index
int ist_index
Definition: fftools_ffmpeg.h:429
+
sub2video_prepare
static int sub2video_prepare(InputStream *ist, InputFilter *ifilter)
Definition: fftools_ffmpeg_filter.c:658
+
InputFilter::format
int format
Definition: fftools_ffmpeg.h:274
+
OutputStream::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:513
+
OutputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:302
+
OutputFilter::width
int width
Definition: fftools_ffmpeg.h:299
+
input_files
__thread InputFile ** input_files
Definition: fftools_ffmpeg.c:178
+
insert_trim
static int insert_trim(int64_t start_time, int64_t duration, AVFilterContext **last_filter, int *pad_idx, const char *filter_name)
Definition: fftools_ffmpeg_filter.c:355
+
configure_output_video_filter
static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
Definition: fftools_ffmpeg_filter.c:428
+
choose_pix_fmts
static char * choose_pix_fmts(OutputFilter *ofilter)
Definition: fftools_ffmpeg_filter.c:95
+
InputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:279
+
configure_input_audio_filter
static int configure_input_audio_filter(FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
Definition: fftools_ffmpeg_filter.c:827
+
sample_rates
sample_rates
Definition: fftools_ffmpeg_filter.c:165
+
DECODING_FOR_FILTER
#define DECODING_FOR_FILTER
Definition: fftools_ffmpeg.h:331
+
InputFile::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:438
+
DEF_CHOOSE_FORMAT
#define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, printf_format, get_name)
Definition: fftools_ffmpeg_filter.c:139
+
OutputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:289
+
OutputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:482
+
check_filter_outputs
void check_filter_outputs(void)
Definition: fftools_ffmpeg_filter.c:643
+
OutputFile
Definition: fftools_ffmpeg.h:602
+
nb_filtergraphs
__thread int nb_filtergraphs
Definition: fftools_ffmpeg.c:187
+
FilterGraph::reconfiguration
int reconfiguration
Definition: fftools_ffmpeg.h:316
+
OutputStream::apad
char * apad
Definition: fftools_ffmpeg.h:550
+
configure_input_filter
static int configure_input_filter(FilterGraph *fg, InputFilter *ifilter, AVFilterInOut *in)
Definition: fftools_ffmpeg_filter.c:937
+
get_rotation
double get_rotation(AVStream *st)
Definition: fftools_cmdutils.c:2253
+
InputFilter::channels
int channels
Definition: fftools_ffmpeg.h:280
+
OutputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:296
+
input_streams
__thread InputStream ** input_streams
Definition: fftools_ffmpeg.c:176
+
get_compliance_normal_pix_fmts
static enum AVPixelFormat * get_compliance_normal_pix_fmts(const AVCodec *codec, const enum AVPixelFormat default_formats[])
Definition: fftools_ffmpeg_filter.c:52
+
OutputFilter::out_tmp
AVFilterInOut * out_tmp
Definition: fftools_ffmpeg.h:295
+
audio_volume
__thread int audio_volume
Definition: fftools_ffmpeg_opt.c:167
+
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: fftools_ffmpeg.h:500
+
start_at_zero
__thread int start_at_zero
Definition: fftools_ffmpeg_opt.c:177
+
InputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:325
+
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:607
+
OutputStream::audio_channels_map
int * audio_channels_map
Definition: fftools_ffmpeg.h:535
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+
InputStream::dec
const AVCodec * dec
Definition: fftools_ffmpeg.h:334
+
OutputStream
Definition: fftools_ffmpeg.h:478
+
InputFilter::width
int width
Definition: fftools_ffmpeg.h:276
+
OutputFilter::height
int height
Definition: fftools_ffmpeg.h:299
+
InputFilter::hw_frames_ctx
AVBufferRef * hw_frames_ctx
Definition: fftools_ffmpeg.h:283
+
ost
OutputStream * ost
Definition: fftools_ffmpeg_filter.c:172
+
cleanup_filtergraph
static void cleanup_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:953
+
filter_complex_nbthreads
__thread int filter_complex_nbthreads
Definition: fftools_ffmpeg_opt.c:188
+
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: fftools_ffmpeg.h:546
+
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: fftools_ffmpeg.h:548
+
OutputFilter::ost
struct OutputStream * ost
Definition: fftools_ffmpeg.h:290
+
InputFile::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:440
+
copy_ts
__thread int copy_ts
Definition: fftools_ffmpeg_opt.c:176
+
OutputStream::enc
const AVCodec * enc
Definition: fftools_ffmpeg.h:502
+ + + + diff --git a/docs/linux/html/d2/d41/classffmpegkit_1_1_abstract_session.html b/docs/linux/html/d2/d41/classffmpegkit_1_1_abstract_session.html new file mode 100644 index 0000000..1572e99 --- /dev/null +++ b/docs/linux/html/d2/d41/classffmpegkit_1_1_abstract_session.html @@ -0,0 +1,1458 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::AbstractSession Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Attributes | +Private Attributes
+
+
ffmpegkit::AbstractSession Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
virtual bool isFFmpeg () const override
 
virtual bool isFFprobe () const override
 
virtual bool isMediaInformation () const override
 
void cancel () override
 
+ + + +

+Static Public Attributes

static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

const long _sessionId
 
ffmpegkit::LogCallback _logCallback
 
std::chrono::time_point< std::chrono::system_clock > _createTime
 
std::chrono::time_point< std::chrono::system_clock > _startTime
 
std::chrono::time_point< std::chrono::system_clock > _endTime
 
std::shared_ptr< std::list< std::string > > _arguments
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > _logs
 
SessionState _state
 
std::shared_ptr< ffmpegkit::ReturnCode_returnCode
 
std::string _failStackTrace
 
LogRedirectionStrategy _logRedirectionStrategy
 
+

Detailed Description

+

Abstract session implementation which includes common features shared by FFmpeg, FFprobe and MediaInformation sessions.

+ +

Definition at line 31 of file AbstractSession.h.

+

Constructor & Destructor Documentation

+ +

◆ AbstractSession()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::AbstractSession::AbstractSession (const std::shared_ptr< std::list< std::string >> arguments,
const ffmpegkit::LogCallback logCallback,
const LogRedirectionStrategy logRedirectionStrategy 
)
+
+

Creates a new abstract session.

+
Parameters
+ + + + +
argumentscommand arguments
logCallbacksession specific log callback
logRedirectionStrategysession specific log redirection strategy
+
+
+ +

Definition at line 36 of file AbstractSession.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ addLog()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::AbstractSession::addLog (const std::shared_ptr< ffmpegkit::Loglog)
+
+overridevirtual
+
+

Adds a new log entry for this session.

+

It is invoked internally by FFmpegKit library methods. Must not be used by user applications.

+
Parameters
+ + +
loglog entry
+
+
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 162 of file AbstractSession.cpp.

+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::AbstractSession::cancel ()
+
+overridevirtual
+
+

Cancels running the session.

+ +

Implements ffmpegkit::Session.

+ +

Definition at line 198 of file AbstractSession.cpp.

+ +
+
+ +

◆ complete()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::AbstractSession::complete (const std::shared_ptr< ffmpegkit::ReturnCodereturnCode)
+
+overridevirtual
+
+

Completes running the session with the provided return code.

+
Parameters
+ + +
returnCodereturn code of the execution
+
+
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 171 of file AbstractSession.cpp.

+ +
+
+ +

◆ fail()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::AbstractSession::fail (const char * error)
+
+overridevirtual
+
+

Ends running the session with a failure.

+
Parameters
+ + +
errorerror received
+
+
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 177 of file AbstractSession.cpp.

+ +
+
+ +

◆ getAllLogs()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > ffmpegkit::AbstractSession::getAllLogs () const
+
+overridevirtual
+
+

Returns all log entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them.

+
Returns
list of log entries generated for this session
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 106 of file AbstractSession.cpp.

+ +
+
+ +

◆ getAllLogsAsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::AbstractSession::getAllLogsAsString () const
+
+overridevirtual
+
+

Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them.

+
Returns
all log entries generated for this session as a concatenated string
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 124 of file AbstractSession.cpp.

+ +
+
+ +

◆ getAllLogsAsStringWithTimeout()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout (const int waitTimeout) const
+
+overridevirtual
+
+

Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.

+
Parameters
+ + +
waitTimeoutwait timeout for asynchronous messages in milliseconds
+
+
+
Returns
all log entries generated for this session as a concatenated string
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 114 of file AbstractSession.cpp.

+ +
+
+ +

◆ getAllLogsWithTimeout()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > ffmpegkit::AbstractSession::getAllLogsWithTimeout (const int waitTimeout) const
+
+overridevirtual
+
+

Returns all log entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.

+
Parameters
+ + +
waitTimeoutwait timeout for asynchronous messages in milliseconds
+
+
+
Returns
list of log entries generated for this session
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 97 of file AbstractSession.cpp.

+ +
+
+ +

◆ getArguments()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::string > > ffmpegkit::AbstractSession::getArguments () const
+
+overridevirtual
+
+

Returns command arguments as a list.

+
Returns
command arguments as a list
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 89 of file AbstractSession.cpp.

+ +
+
+ +

◆ getCommand()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::AbstractSession::getCommand () const
+
+overridevirtual
+
+

Returns command arguments as a concatenated string.

+
Returns
command arguments as a concatenated string
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 93 of file AbstractSession.cpp.

+ +
+
+ +

◆ getCreateTime()

+ +
+
+ + + + + +
+ + + + + + + +
std::chrono::time_point< std::chrono::system_clock > ffmpegkit::AbstractSession::getCreateTime () const
+
+overridevirtual
+
+

Returns session create time.

+
Returns
session create time
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 66 of file AbstractSession.cpp.

+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + +
+ + + + + + + +
long ffmpegkit::AbstractSession::getDuration () const
+
+overridevirtual
+
+

Returns the time taken to execute this session.

+
Returns
time taken to execute this session in milliseconds or zero (0) if the session is not over yet
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 78 of file AbstractSession.cpp.

+ +
+
+ +

◆ getEndTime()

+ +
+
+ + + + + +
+ + + + + + + +
std::chrono::time_point< std::chrono::system_clock > ffmpegkit::AbstractSession::getEndTime () const
+
+overridevirtual
+
+

Returns session end time.

+
Returns
session end time
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 74 of file AbstractSession.cpp.

+ +
+
+ +

◆ getFailStackTrace()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::AbstractSession::getFailStackTrace () const
+
+overridevirtual
+
+

Returns the stack trace of the exception received while executing this session.

+

The stack trace is only set for sessions that end with SessionStateFailed state. For sessions that has SessionStateCompleted state this method returns an empty string.

+
Returns
stack trace of the exception received while executing this session, an empty string if session is not started, still running or completed
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 150 of file AbstractSession.cpp.

+ +
+
+ +

◆ getLogCallback()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::LogCallback ffmpegkit::AbstractSession::getLogCallback () const
+
+overridevirtual
+
+

Returns the session specific log callback.

+
Returns
session specific log callback
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 58 of file AbstractSession.cpp.

+ +
+
+ +

◆ getLogRedirectionStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::LogRedirectionStrategy ffmpegkit::AbstractSession::getLogRedirectionStrategy () const
+
+overridevirtual
+
+

Returns session specific log redirection strategy.

+
Returns
session specific log redirection strategy
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 154 of file AbstractSession.cpp.

+ +
+
+ +

◆ getLogs()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > ffmpegkit::AbstractSession::getLogs () const
+
+overridevirtual
+
+

Returns all log entries delivered for this session. Note that if there are asynchronous messages that are not delivered yet, this method will not wait for them and will return immediately.

+
Returns
list of log entries received for this session
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 110 of file AbstractSession.cpp.

+ +
+
+ +

◆ getLogsAsString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::AbstractSession::getLogsAsString () const
+
+overridevirtual
+
+

Returns all log entries delivered for this session as a concatenated string. Note that if there are asynchronous messages that are not delivered yet, this method will not wait for them and will return immediately.

+
Returns
list of log entries received for this session
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 128 of file AbstractSession.cpp.

+ +
+
+ +

◆ getOutput()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::AbstractSession::getOutput () const
+
+overridevirtual
+
+

Returns the log output generated while running the session.

+
Returns
log output generated
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 138 of file AbstractSession.cpp.

+ +
+
+ +

◆ getReturnCode()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< ffmpegkit::ReturnCode > ffmpegkit::AbstractSession::getReturnCode () const
+
+overridevirtual
+
+

Returns the return code for this session. Note that return code is only set for sessions that end with SessionStateCompleted state. If a session is not started, still running or failed then this method returns nullptr.

+
Returns
the return code for this session if the session has completed, nullptr if session is not started, still running or failed
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 146 of file AbstractSession.cpp.

+ +
+
+ +

◆ getSessionId()

+ +
+
+ + + + + +
+ + + + + + + +
long ffmpegkit::AbstractSession::getSessionId () const
+
+overridevirtual
+
+

Returns the session identifier.

+
Returns
session identifier
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 62 of file AbstractSession.cpp.

+ +
+
+ +

◆ getStartTime()

+ +
+
+ + + + + +
+ + + + + + + +
std::chrono::time_point< std::chrono::system_clock > ffmpegkit::AbstractSession::getStartTime () const
+
+overridevirtual
+
+

Returns session start time.

+
Returns
session start time
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 70 of file AbstractSession.cpp.

+ +
+
+ +

◆ getState()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::SessionState ffmpegkit::AbstractSession::getState () const
+
+overridevirtual
+
+

Returns the state of the session.

+
Returns
state of the session
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 142 of file AbstractSession.cpp.

+ +
+
+ +

◆ isFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::AbstractSession::isFFmpeg () const
+
+overridevirtual
+
+

Returns whether it is an FFmpeg session or not.

+
Returns
true if it is an FFmpeg session, false otherwise
+ +

Implements ffmpegkit::Session.

+ +

Reimplemented in ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +

Definition at line 183 of file AbstractSession.cpp.

+ +
+
+ +

◆ isFFprobe()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::AbstractSession::isFFprobe () const
+
+overridevirtual
+
+

Returns whether it is an FFprobe session or not.

+
Returns
true if it is an FFprobe session, false otherwise
+ +

Implements ffmpegkit::Session.

+ +

Reimplemented in ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +

Definition at line 188 of file AbstractSession.cpp.

+ +
+
+ +

◆ isMediaInformation()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::AbstractSession::isMediaInformation () const
+
+overridevirtual
+
+

Returns whether it is a MediaInformation session or not.

+
Returns
true if it is a MediaInformation session, false otherwise
+ +

Implements ffmpegkit::Session.

+ +

Reimplemented in ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +

Definition at line 193 of file AbstractSession.cpp.

+ +
+
+ +

◆ startRunning()

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::AbstractSession::startRunning ()
+
+overridevirtual
+
+

Starts running the session.

+ +

Implements ffmpegkit::Session.

+ +

Definition at line 166 of file AbstractSession.cpp.

+ +
+
+ +

◆ thereAreAsynchronousMessagesInTransmit()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::AbstractSession::thereAreAsynchronousMessagesInTransmit () const
+
+overridevirtual
+
+

Returns whether there are still asynchronous messages being transmitted for this session or not.

+
Returns
true if there are still asynchronous messages being transmitted, false otherwise
+ +

Implements ffmpegkit::Session.

+ +

Definition at line 158 of file AbstractSession.cpp.

+ +
+
+ +

◆ waitForAsynchronousMessagesInTransmit()

+ +
+
+ + + + + + + + +
void ffmpegkit::AbstractSession::waitForAsynchronousMessagesInTransmit (const int timeout) const
+
+

Waits for all asynchronous messages to be transmitted until the given timeout.

+
Parameters
+ + +
timeoutwait timeout in milliseconds
+
+
+ +

Definition at line 47 of file AbstractSession.cpp.

+ +
+
+

Field Documentation

+ +

◆ _arguments

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<std::list<std::string> > ffmpegkit::AbstractSession::_arguments
+
+private
+
+ +

Definition at line 277 of file AbstractSession.h.

+ +
+
+ +

◆ _createTime

+ +
+
+ + + + + +
+ + + + +
std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::_createTime
+
+private
+
+ +

Definition at line 274 of file AbstractSession.h.

+ +
+
+ +

◆ _endTime

+ +
+
+ + + + + +
+ + + + +
std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::_endTime
+
+private
+
+ +

Definition at line 276 of file AbstractSession.h.

+ +
+
+ +

◆ _failStackTrace

+ +
+
+ + + + + +
+ + + + +
std::string ffmpegkit::AbstractSession::_failStackTrace
+
+private
+
+ +

Definition at line 281 of file AbstractSession.h.

+ +
+
+ +

◆ _logCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::LogCallback ffmpegkit::AbstractSession::_logCallback
+
+private
+
+ +

Definition at line 273 of file AbstractSession.h.

+ +
+
+ +

◆ _logRedirectionStrategy

+ +
+
+ + + + + +
+ + + + +
LogRedirectionStrategy ffmpegkit::AbstractSession::_logRedirectionStrategy
+
+private
+
+ +

Definition at line 282 of file AbstractSession.h.

+ +
+
+ +

◆ _logs

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log> > > ffmpegkit::AbstractSession::_logs
+
+private
+
+ +

Definition at line 278 of file AbstractSession.h.

+ +
+
+ +

◆ _returnCode

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<ffmpegkit::ReturnCode> ffmpegkit::AbstractSession::_returnCode
+
+private
+
+ +

Definition at line 280 of file AbstractSession.h.

+ +
+
+ +

◆ _sessionId

+ +
+
+ + + + + +
+ + + + +
const long ffmpegkit::AbstractSession::_sessionId
+
+private
+
+ +

Definition at line 272 of file AbstractSession.h.

+ +
+
+ +

◆ _startTime

+ +
+
+ + + + + +
+ + + + +
std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::_startTime
+
+private
+
+ +

Definition at line 275 of file AbstractSession.h.

+ +
+
+ +

◆ _state

+ +
+
+ + + + + +
+ + + + +
SessionState ffmpegkit::AbstractSession::_state
+
+private
+
+ +

Definition at line 279 of file AbstractSession.h.

+ +
+
+ +

◆ DefaultTimeoutForAsynchronousMessagesInTransmit

+ +
+
+ + + + + +
+ + + + +
constexpr int ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
+
+staticconstexpr
+
+

Defines how long default "getAll" methods wait, in milliseconds.

+ +

Definition at line 37 of file AbstractSession.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d2/d4b/_level_8h.html b/docs/linux/html/d2/d4b/_level_8h.html new file mode 100644 index 0000000..4f3ebba --- /dev/null +++ b/docs/linux/html/d2/d4b/_level_8h.html @@ -0,0 +1,108 @@ + + + + + + + +FFmpegKit Linux API: Level.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Enumerations
+
+
Level.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Enumerations

enum  ffmpegkit::Level {
+  ffmpegkit::LevelAVLogStdErr = -16, +ffmpegkit::LevelAVLogQuiet = -8, +ffmpegkit::LevelAVLogPanic = 0, +ffmpegkit::LevelAVLogFatal = 8, +
+  ffmpegkit::LevelAVLogError = 16, +ffmpegkit::LevelAVLogWarning = 24, +ffmpegkit::LevelAVLogInfo = 32, +ffmpegkit::LevelAVLogVerbose = 40, +
+  ffmpegkit::LevelAVLogDebug = 48, +ffmpegkit::LevelAVLogTrace = 56 +
+ }
 
+
+ + + + diff --git a/docs/linux/html/d2/d4b/_level_8h_source.html b/docs/linux/html/d2/d4b/_level_8h_source.html new file mode 100644 index 0000000..910be51 --- /dev/null +++ b/docs/linux/html/d2/d4b/_level_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +FFmpegKit Linux API: Level.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Level.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_LEVEL_H
+
21 #define FFMPEG_KIT_LEVEL_H
+
22 
+
23 namespace ffmpegkit {
+
24 
+
28  enum Level {
+
29 
+ +
35 
+ +
40 
+ +
45 
+ +
52 
+ +
58 
+ +
64 
+ +
69 
+ +
74 
+ +
79 
+ +
84 
+
85  };
+
86 
+
87 }
+
88 
+
89 #endif // FFMPEG_KIT_LEVEL_H
+
+
ffmpegkit::LevelAVLogTrace
@ LevelAVLogTrace
Definition: Level.h:83
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::LevelAVLogPanic
@ LevelAVLogPanic
Definition: Level.h:44
+
ffmpegkit::LevelAVLogFatal
@ LevelAVLogFatal
Definition: Level.h:51
+
ffmpegkit::Level
Level
Definition: Level.h:28
+
ffmpegkit::LevelAVLogQuiet
@ LevelAVLogQuiet
Definition: Level.h:39
+
ffmpegkit::LevelAVLogVerbose
@ LevelAVLogVerbose
Definition: Level.h:73
+
ffmpegkit::LevelAVLogWarning
@ LevelAVLogWarning
Definition: Level.h:63
+
ffmpegkit::LevelAVLogStdErr
@ LevelAVLogStdErr
Definition: Level.h:34
+
ffmpegkit::LevelAVLogError
@ LevelAVLogError
Definition: Level.h:57
+
ffmpegkit::LevelAVLogInfo
@ LevelAVLogInfo
Definition: Level.h:68
+
ffmpegkit::LevelAVLogDebug
@ LevelAVLogDebug
Definition: Level.h:78
+ + + + diff --git a/docs/linux/html/d2/ddd/struct_compact_context.html b/docs/linux/html/d2/ddd/struct_compact_context.html new file mode 100644 index 0000000..0767fe3 --- /dev/null +++ b/docs/linux/html/d2/ddd/struct_compact_context.html @@ -0,0 +1,271 @@ + + + + + + + +FFmpegKit Linux API: CompactContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
CompactContext Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

const AVClass * class
 
char * item_sep_str
 
char item_sep
 
int nokey
 
int print_section
 
char * escape_mode_str
 
const char *(* escape_str )(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 
int nested_section [SECTION_MAX_NB_LEVELS]
 
int has_nested_elems [SECTION_MAX_NB_LEVELS]
 
int terminate_line [SECTION_MAX_NB_LEVELS]
 
+

Detailed Description

+
+

Definition at line 1086 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* CompactContext::class
+
+ +

Definition at line 1087 of file fftools_ffprobe.c.

+ +
+
+ +

◆ escape_mode_str

+ +
+
+ + + + +
char* CompactContext::escape_mode_str
+
+ +

Definition at line 1092 of file fftools_ffprobe.c.

+ +
+
+ +

◆ escape_str

+ +
+
+ + + + +
const char*(* CompactContext::escape_str) (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
+
+ +

Definition at line 1093 of file fftools_ffprobe.c.

+ +
+
+ +

◆ has_nested_elems

+ +
+
+ + + + +
int CompactContext::has_nested_elems[SECTION_MAX_NB_LEVELS]
+
+ +

Definition at line 1095 of file fftools_ffprobe.c.

+ +
+
+ +

◆ item_sep

+ +
+
+ + + + +
char CompactContext::item_sep
+
+ +

Definition at line 1089 of file fftools_ffprobe.c.

+ +
+
+ +

◆ item_sep_str

+ +
+
+ + + + +
char* CompactContext::item_sep_str
+
+ +

Definition at line 1088 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nested_section

+ +
+
+ + + + +
int CompactContext::nested_section[SECTION_MAX_NB_LEVELS]
+
+ +

Definition at line 1094 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nokey

+ +
+
+ + + + +
int CompactContext::nokey
+
+ +

Definition at line 1090 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section

+ +
+
+ + + + +
int CompactContext::print_section
+
+ +

Definition at line 1091 of file fftools_ffprobe.c.

+ +
+
+ +

◆ terminate_line

+ +
+
+ + + + +
int CompactContext::terminate_line[SECTION_MAX_NB_LEVELS]
+
+ +

Definition at line 1096 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d2/dee/classffmpegkit_1_1_f_fmpeg_session.html b/docs/linux/html/d2/dee/classffmpegkit_1_1_f_fmpeg_session.html new file mode 100644 index 0000000..66e4d53 --- /dev/null +++ b/docs/linux/html/d2/dee/classffmpegkit_1_1_f_fmpeg_session.html @@ -0,0 +1,814 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFmpegSession Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Data Structures | +Public Member Functions | +Static Public Member Functions | +Private Member Functions | +Private Attributes
+
+
ffmpegkit::FFmpegSession Class Reference
+
+
+ + + + +

+Data Structures

struct  PublicFFmpegSession
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ffmpegkit::StatisticsCallback getStatisticsCallback ()
 
ffmpegkit::FFmpegSessionCompleteCallback getCompleteCallback ()
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatisticsWithTimeout (const int waitTimeout)
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatistics ()
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getStatistics ()
 
std::shared_ptr< ffmpegkit::StatisticsgetLastReceivedStatistics ()
 
void addStatistics (const std::shared_ptr< ffmpegkit::Statistics > statistics)
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)
 
+ + + +

+Private Member Functions

 FFmpegSession (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)
 
+ + + + + + + +

+Private Attributes

ffmpegkit::StatisticsCallback _statisticsCallback
 
FFmpegSessionCompleteCallback _completeCallback
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > _statistics
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+

An FFmpeg session.

+ +

Definition at line 32 of file FFmpegSession.h.

+

Constructor & Destructor Documentation

+ +

◆ FFmpegSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::FFmpegSession::FFmpegSession (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback,
ffmpegkit::LogRedirectionStrategy logRedirectionStrategy 
)
+
+private
+
+

Builds a new FFmpeg session.

+
Parameters
+ + + + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
statisticsCallbacksession specific statistics callback
logRedirectionStrategysession specific log redirection strategy
+
+
+ +

Definition at line 57 of file FFmpegSession.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ addStatistics()

+ +
+
+ + + + + + + + +
void ffmpegkit::FFmpegSession::addStatistics (const std::shared_ptr< ffmpegkit::Statisticsstatistics)
+
+

Adds a new statistics entry for this session. It is invoked internally by FFmpegKit library methods. Must not be used by user applications.

+
Parameters
+ + +
statisticsstatistics entry
+
+
+ +

Definition at line 95 of file FFmpegSession.cpp.

+ +
+
+ +

◆ create() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegSession::create (const std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Builds a new FFmpeg session.

+
Parameters
+ + +
argumentscommand arguments
+
+
+ +

Definition at line 27 of file FFmpegSession.cpp.

+ +
+
+ +

◆ create() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegSession::create (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::FFmpegSessionCompleteCallback completeCallback 
)
+
+static
+
+

Builds a new FFmpeg session.

+
Parameters
+ + + +
argumentscommand arguments
completeCallbacksession specific complete callback
+
+
+ +

Definition at line 33 of file FFmpegSession.cpp.

+ +
+
+ +

◆ create() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegSession::create (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback 
)
+
+static
+
+

Builds a new FFmpeg session.

+
Parameters
+ + + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
statisticsCallbacksession specific statistics callback
+
+
+ +

Definition at line 39 of file FFmpegSession.cpp.

+ +
+
+ +

◆ create() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegSession::create (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback,
ffmpegkit::LogRedirectionStrategy logRedirectionStrategy 
)
+
+static
+
+

Builds a new FFmpeg session.

+
Parameters
+ + + + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
statisticsCallbacksession specific statistics callback
logRedirectionStrategysession specific log redirection strategy
+
+
+ +

Definition at line 45 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getAllStatistics()

+ +
+
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > ffmpegkit::FFmpegSession::getAllStatistics ()
+
+

Returns all statistics entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them until AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit expires.

+
Returns
list of statistics entries generated for this session
+ +

Definition at line 79 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getAllStatisticsWithTimeout()

+ +
+
+ + + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > ffmpegkit::FFmpegSession::getAllStatisticsWithTimeout (const int waitTimeout)
+
+

Returns all statistics entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.

+
Parameters
+ + +
waitTimeoutwait timeout for asynchronous messages in milliseconds
+
+
+
Returns
list of statistics entries generated for this session
+ +

Definition at line 69 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getCompleteCallback()

+ +
+
+ + + + + + + +
ffmpegkit::FFmpegSessionCompleteCallback ffmpegkit::FFmpegSession::getCompleteCallback ()
+
+

Returns the session specific complete callback.

+
Returns
session specific complete callback
+ +

Definition at line 65 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getLastReceivedStatistics()

+ +
+
+ + + + + + + +
std::shared_ptr< ffmpegkit::Statistics > ffmpegkit::FFmpegSession::getLastReceivedStatistics ()
+
+

Returns the last received statistics entry.

+
Returns
the last received statistics entry or nullptr if there are not any statistics entries received
+ +

Definition at line 87 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getStatistics()

+ +
+
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > ffmpegkit::FFmpegSession::getStatistics ()
+
+

Returns all statistics entries delivered for this session. Note that if there are asynchronous messages that are not delivered yet, this method will not wait for them and will return immediately.

+
Returns
list of statistics entries received for this session
+ +

Definition at line 83 of file FFmpegSession.cpp.

+ +
+
+ +

◆ getStatisticsCallback()

+ +
+
+ + + + + + + +
ffmpegkit::StatisticsCallback ffmpegkit::FFmpegSession::getStatisticsCallback ()
+
+

Returns the session specific statistics callback.

+
Returns
session specific statistics callback
+ +

Definition at line 61 of file FFmpegSession.cpp.

+ +
+
+ +

◆ isFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFmpegSession::isFFmpeg () const
+
+overridevirtual
+
+

Returns whether it is an FFmpeg session or not.

+
Returns
true if it is an FFmpeg session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 99 of file FFmpegSession.cpp.

+ +
+
+ +

◆ isFFprobe()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFmpegSession::isFFprobe () const
+
+overridevirtual
+
+

Returns whether it is an FFprobe session or not.

+
Returns
true if it is an FFprobe session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 103 of file FFmpegSession.cpp.

+ +
+
+ +

◆ isMediaInformation()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFmpegSession::isMediaInformation () const
+
+overridevirtual
+
+

Returns whether it is a MediaInformation session or not.

+
Returns
true if it is a MediaInformation session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 107 of file FFmpegSession.cpp.

+ +
+
+

Field Documentation

+ +

◆ _completeCallback

+ +
+
+ + + + + +
+ + + + +
FFmpegSessionCompleteCallback ffmpegkit::FFmpegSession::_completeCallback
+
+private
+
+ +

Definition at line 165 of file FFmpegSession.h.

+ +
+
+ +

◆ _statistics

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics> > > ffmpegkit::FFmpegSession::_statistics
+
+private
+
+ +

Definition at line 166 of file FFmpegSession.h.

+ +
+
+ +

◆ _statisticsCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::StatisticsCallback ffmpegkit::FFmpegSession::_statisticsCallback
+
+private
+
+ +

Definition at line 164 of file FFmpegSession.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d2/def/_f_fmpeg_session_8h.html b/docs/linux/html/d2/def/_f_fmpeg_session_8h.html new file mode 100644 index 0000000..e70db6f --- /dev/null +++ b/docs/linux/html/d2/def/_f_fmpeg_session_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSession.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
FFmpegSession.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::FFmpegSession
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d2/def/_f_fmpeg_session_8h_source.html b/docs/linux/html/d2/def/_f_fmpeg_session_8h_source.html new file mode 100644 index 0000000..8f5f72f --- /dev/null +++ b/docs/linux/html/d2/def/_f_fmpeg_session_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSession.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegSession.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_FFMPEG_SESSION_H
+
21 #define FFMPEG_KIT_FFMPEG_SESSION_H
+
22 
+
23 #include "AbstractSession.h"
+
24 #include "StatisticsCallback.h"
+ +
26 
+
27 namespace ffmpegkit {
+
28 
+
32  class FFmpegSession : public AbstractSession {
+
33  public:
+
34 
+
40  static std::shared_ptr<ffmpegkit::FFmpegSession> create(const std::shared_ptr<std::list<std::string>> arguments);
+
41 
+
48  static std::shared_ptr<ffmpegkit::FFmpegSession> create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback);
+
49 
+
58  static std::shared_ptr<ffmpegkit::FFmpegSession> create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback);
+
59 
+
69  static std::shared_ptr<ffmpegkit::FFmpegSession> create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy);
+
70 
+ +
77 
+ +
84 
+
92  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> getAllStatisticsWithTimeout(const int waitTimeout);
+
93 
+
101  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> getAllStatistics();
+
102 
+
110  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> getStatistics();
+
111 
+
118  std::shared_ptr<ffmpegkit::Statistics> getLastReceivedStatistics();
+
119 
+
126  void addStatistics(const std::shared_ptr<ffmpegkit::Statistics> statistics);
+
127 
+
133  bool isFFmpeg() const override;
+
134 
+
140  bool isFFprobe() const override;
+
141 
+
147  bool isMediaInformation() const override;
+
148 
+
149  private:
+
150 
+
151  struct PublicFFmpegSession;
+
152 
+
162  FFmpegSession(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy);
+
163 
+ + +
166  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> _statistics;
+
167  };
+
168 
+
169 }
+
170 
+
171 #endif // FFMPEG_KIT_FFMPEG_SESSION_H
+
+
ffmpegkit::FFmpegSession::create
static std::shared_ptr< ffmpegkit::FFmpegSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegSession.cpp:27
+
ffmpegkit::FFmpegSession::getAllStatisticsWithTimeout
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatisticsWithTimeout(const int waitTimeout)
Definition: FFmpegSession.cpp:69
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegSession::isFFprobe
bool isFFprobe() const override
Definition: FFmpegSession.cpp:103
+
ffmpegkit::FFmpegSession::addStatistics
void addStatistics(const std::shared_ptr< ffmpegkit::Statistics > statistics)
Definition: FFmpegSession.cpp:95
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFmpegSession::_statistics
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > _statistics
Definition: FFmpegSession.h:166
+
ffmpegkit::FFmpegSession::getAllStatistics
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatistics()
Definition: FFmpegSession.cpp:79
+
ffmpegkit::FFmpegSession::getStatistics
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getStatistics()
Definition: FFmpegSession.cpp:83
+
ffmpegkit::FFmpegSession::isFFmpeg
bool isFFmpeg() const override
Definition: FFmpegSession.cpp:99
+
ffmpegkit::FFmpegSession::isMediaInformation
bool isMediaInformation() const override
Definition: FFmpegSession.cpp:107
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
ffmpegkit::FFmpegSession::getCompleteCallback
ffmpegkit::FFmpegSessionCompleteCallback getCompleteCallback()
Definition: FFmpegSession.cpp:65
+
ffmpegkit::FFmpegSession::getStatisticsCallback
ffmpegkit::StatisticsCallback getStatisticsCallback()
Definition: FFmpegSession.cpp:61
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
ffmpegkit::FFmpegSession
Definition: FFmpegSession.h:32
+
ffmpegkit::FFmpegSession::FFmpegSession
FFmpegSession(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)
Definition: FFmpegSession.cpp:57
+
ffmpegkit::FFmpegSession::getLastReceivedStatistics
std::shared_ptr< ffmpegkit::Statistics > getLastReceivedStatistics()
Definition: FFmpegSession.cpp:87
+
StatisticsCallback.h
+
AbstractSession.h
+
ffmpegkit::FFmpegSession::_statisticsCallback
ffmpegkit::StatisticsCallback _statisticsCallback
Definition: FFmpegSession.h:164
+
ffmpegkit::FFmpegSession::_completeCallback
FFmpegSessionCompleteCallback _completeCallback
Definition: FFmpegSession.h:165
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
FFmpegSessionCompleteCallback.h
+ + + + diff --git a/docs/linux/html/d3/d1d/struct_option.html b/docs/linux/html/d3/d1d/struct_option.html new file mode 100644 index 0000000..ecd402d --- /dev/null +++ b/docs/linux/html/d3/d1d/struct_option.html @@ -0,0 +1,146 @@ + + + + + + + +FFmpegKit Linux API: Option Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
Option Struct Reference
+
+
+ + + + + + + + +

+Data Fields

const OptionDefopt
 
const char * key
 
const char * val
 
+

Detailed Description

+

An option extracted from the commandline. Cannot use AVDictionary because of options like -map which can be used multiple times.

+ +

Definition at line 279 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ key

+ +
+
+ + + + +
const char* Option::key
+
+ +

Definition at line 281 of file fftools_cmdutils.h.

+ +
+
+ +

◆ opt

+ +
+
+ + + + +
const OptionDef* Option::opt
+
+ +

Definition at line 280 of file fftools_cmdutils.h.

+ +
+
+ +

◆ val

+ +
+
+ + + + +
const char* Option::val
+
+ +

Definition at line 282 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d3/d3f/_statistics_8cpp.html b/docs/linux/html/d3/d3f/_statistics_8cpp.html new file mode 100644 index 0000000..9e73346 --- /dev/null +++ b/docs/linux/html/d3/d3f/_statistics_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +FFmpegKit Linux API: Statistics.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
Statistics.cpp File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/docs/linux/html/d3/d3f/_statistics_8cpp_source.html b/docs/linux/html/d3/d3f/_statistics_8cpp_source.html new file mode 100644 index 0000000..c14ada9 --- /dev/null +++ b/docs/linux/html/d3/d3f/_statistics_8cpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +FFmpegKit Linux API: Statistics.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Statistics.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "Statistics.h"
+
21 
+
22 ffmpegkit::Statistics::Statistics(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed) :
+
23  _sessionId{sessionId}, _videoFrameNumber{videoFrameNumber}, _videoFps{videoFps}, _videoQuality{videoQuality}, _size{size}, _time{time}, _bitrate{bitrate}, _speed{speed} {
+
24 }
+
25 
+ +
27  return _sessionId;
+
28 }
+
29 
+ +
31  return _videoFrameNumber;
+
32 }
+
33 
+ +
35  return _videoFps;
+
36 }
+
37 
+ +
39  return _videoQuality;
+
40 }
+
41 
+ +
43  return _size;
+
44 }
+
45 
+ +
47  return _time;
+
48 }
+
49 
+ +
51  return _bitrate;
+
52 }
+
53 
+ +
55  return _speed;
+
56 }
+
+
ffmpegkit::Statistics::getSpeed
double getSpeed()
Definition: Statistics.cpp:54
+
ffmpegkit::Statistics::getVideoFrameNumber
int getVideoFrameNumber()
Definition: Statistics.cpp:30
+
ffmpegkit::Statistics::getTime
int getTime()
Definition: Statistics.cpp:46
+
ffmpegkit::Statistics::getSize
int64_t getSize()
Definition: Statistics.cpp:42
+
ffmpegkit::Statistics::getSessionId
long getSessionId()
Definition: Statistics.cpp:26
+
ffmpegkit::Statistics::Statistics
Statistics(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)
Definition: Statistics.cpp:22
+
ffmpegkit::Statistics::getVideoQuality
float getVideoQuality()
Definition: Statistics.cpp:38
+
ffmpegkit::Statistics::getVideoFps
float getVideoFps()
Definition: Statistics.cpp:34
+
Statistics.h
+
ffmpegkit::Statistics::getBitrate
double getBitrate()
Definition: Statistics.cpp:50
+ + + + diff --git a/docs/linux/html/d3/d5d/_media_information_session_8cpp.html b/docs/linux/html/d3/d5d/_media_information_session_8cpp.html new file mode 100644 index 0000000..0fc4f3f --- /dev/null +++ b/docs/linux/html/d3/d5d/_media_information_session_8cpp.html @@ -0,0 +1,109 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSession.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions
+
+
MediaInformationSession.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Session > session)
 
+

Function Documentation

+ +

◆ addSessionToSessionHistory()

+ +
+
+ + + + + + + + +
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Sessionsession)
+
+ +

Definition at line 149 of file FFmpegKitConfig.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d3/d5d/_media_information_session_8cpp_source.html b/docs/linux/html/d3/d5d/_media_information_session_8cpp_source.html new file mode 100644 index 0000000..8c2db52 --- /dev/null +++ b/docs/linux/html/d3/d5d/_media_information_session_8cpp_source.html @@ -0,0 +1,173 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSession.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformationSession.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+ +
21 #include "LogCallback.h"
+
22 #include "MediaInformation.h"
+
23 
+
24 extern void addSessionToSessionHistory(const std::shared_ptr<ffmpegkit::Session> session);
+
25 
+
26 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::MediaInformationSession::create(const std::shared_ptr<std::list<std::string>> arguments) {
+
27  auto session = std::static_pointer_cast<ffmpegkit::MediaInformationSession>(std::make_shared<ffmpegkit::MediaInformationSession::PublicMediaInformationSession>(arguments, nullptr, nullptr));
+ +
29  return session;
+
30 }
+
31 
+
32 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::MediaInformationSession::create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback) {
+
33  auto session = std::static_pointer_cast<ffmpegkit::MediaInformationSession>(std::make_shared<ffmpegkit::MediaInformationSession::PublicMediaInformationSession>(arguments, completeCallback, nullptr));
+ +
35  return session;
+
36 }
+
37 
+
38 std::shared_ptr<ffmpegkit::MediaInformationSession> ffmpegkit::MediaInformationSession::create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) {
+
39  auto session = std::static_pointer_cast<ffmpegkit::MediaInformationSession>(std::make_shared<ffmpegkit::MediaInformationSession::PublicMediaInformationSession>(arguments, completeCallback, logCallback));
+ +
41  return session;
+
42 }
+
43 
+
44 struct ffmpegkit::MediaInformationSession::PublicMediaInformationSession : public ffmpegkit::MediaInformationSession {
+
45  PublicMediaInformationSession(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) :
+
46  MediaInformationSession(arguments, completeCallback, logCallback) {
+
47  }
+
48 };
+
49 
+ +
51  ffmpegkit::AbstractSession(arguments, logCallback, ffmpegkit::LogRedirectionStrategyNeverPrintLogs), _completeCallback{completeCallback}, _mediaInformation{nullptr} {
+
52 }
+
53 
+
54 std::shared_ptr<ffmpegkit::MediaInformation> ffmpegkit::MediaInformationSession::getMediaInformation() {
+
55  return _mediaInformation;
+
56 }
+
57 
+
58 void ffmpegkit::MediaInformationSession::setMediaInformation(const std::shared_ptr<ffmpegkit::MediaInformation> mediaInformation) {
+
59  _mediaInformation = mediaInformation;
+
60 }
+
61 
+ +
63  return _completeCallback;
+
64 }
+
65 
+ +
67  return false;
+
68 }
+
69 
+ +
71  return false;
+
72 }
+
73 
+ +
75  return true;
+
76 }
+
+
ffmpegkit::MediaInformationSession::setMediaInformation
void setMediaInformation(const std::shared_ptr< ffmpegkit::MediaInformation > mediaInformation)
Definition: MediaInformationSession.cpp:58
+
addSessionToSessionHistory
void addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session)
Definition: FFmpegKitConfig.cpp:149
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::LogRedirectionStrategyNeverPrintLogs
@ LogRedirectionStrategyNeverPrintLogs
Definition: LogRedirectionStrategy.h:30
+
ffmpegkit::MediaInformationSession::getMediaInformation
std::shared_ptr< ffmpegkit::MediaInformation > getMediaInformation()
Definition: MediaInformationSession.cpp:54
+
ffmpegkit::MediaInformationSession
Definition: MediaInformationSession.h:33
+
MediaInformationSession.h
+
ffmpegkit::MediaInformationSession::create
static std::shared_ptr< ffmpegkit::MediaInformationSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: MediaInformationSession.cpp:26
+
ffmpegkit::MediaInformationSession::isFFmpeg
bool isFFmpeg() const override
Definition: MediaInformationSession.cpp:66
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
MediaInformation.h
+
ffmpegkit::MediaInformationSession::getCompleteCallback
ffmpegkit::MediaInformationSessionCompleteCallback getCompleteCallback()
Definition: MediaInformationSession.cpp:62
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
LogCallback.h
+
ffmpegkit::MediaInformationSession::MediaInformationSession
MediaInformationSession(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
Definition: MediaInformationSession.cpp:50
+
ffmpegkit::MediaInformationSession::isMediaInformation
bool isMediaInformation() const override
Definition: MediaInformationSession.cpp:74
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::MediaInformationSession::isFFprobe
bool isFFprobe() const override
Definition: MediaInformationSession.cpp:70
+ + + + diff --git a/docs/linux/html/d3/d6e/struct_input_stream.html b/docs/linux/html/d3/d6e/struct_input_stream.html new file mode 100644 index 0000000..a68724a --- /dev/null +++ b/docs/linux/html/d3/d6e/struct_input_stream.html @@ -0,0 +1,1115 @@ + + + + + + + +FFmpegKit Linux API: InputStream Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Data Fields
+
+
InputStream Struct Reference
+
+
+ + + + +

+Data Structures

struct  sub2video
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int file_index
 
AVStream * st
 
int discard
 
int user_set_discard
 
int decoding_needed
 
AVCodecContext * dec_ctx
 
const AVCodec * dec
 
AVFrame * decoded_frame
 
AVFrame * filter_frame
 
AVPacket * pkt
 
int64_t start
 
int64_t next_dts
 
int64_t first_dts
 dts of the first packet read for this stream (in AV_TIME_BASE units) More...
 
int64_t dts
 dts of the last packet read for this stream (in AV_TIME_BASE units) More...
 
int64_t next_pts
 synthetic pts for the next decode frame (in AV_TIME_BASE units) More...
 
int64_t pts
 current pts of the decoded frame (in AV_TIME_BASE units) More...
 
int wrap_correction_done
 
int64_t filter_in_rescale_delta_last
 
int64_t min_pts
 
int64_t max_pts
 
int64_t cfr_next_pts
 
int64_t nb_samples
 
double ts_scale
 
int saw_first_ts
 
AVDictionary * decoder_opts
 
AVRational framerate
 
int top_field_first
 
int guess_layout_max
 
int autorotate
 
int fix_sub_duration
 
struct {
   int   got_output
 
   int   ret
 
   AVSubtitle   subtitle
 
prev_sub
 
struct InputStream::sub2video sub2video
 
int dr1
 
InputFilter ** filters
 
int nb_filters
 
int reinit_filters
 
enum HWAccelID hwaccel_id
 
enum AVHWDeviceType hwaccel_device_type
 
char * hwaccel_device
 
enum AVPixelFormat hwaccel_output_format
 
void * hwaccel_ctx
 
void(* hwaccel_uninit )(AVCodecContext *s)
 
int(* hwaccel_get_buffer )(AVCodecContext *s, AVFrame *frame, int flags)
 
int(* hwaccel_retrieve_data )(AVCodecContext *s, AVFrame *frame)
 
enum AVPixelFormat hwaccel_pix_fmt
 
enum AVPixelFormat hwaccel_retrieved_pix_fmt
 
AVBufferRef * hw_frames_ctx
 
uint64_t data_size
 
uint64_t nb_packets
 
uint64_t frames_decoded
 
uint64_t samples_decoded
 
int64_t * dts_buffer
 
int nb_dts_buffer
 
+

Detailed Description

+
+

Definition at line 324 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ autorotate

+ +
+
+ + + + +
int InputStream::autorotate
+
+ +

Definition at line 368 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ cfr_next_pts

+ +
+
+ + + + +
int64_t InputStream::cfr_next_pts
+
+ +

Definition at line 357 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ data_size

+ +
+
+ + + + +
uint64_t InputStream::data_size
+
+ +

Definition at line 412 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dec

+ +
+
+ + + + +
const AVCodec* InputStream::dec
+
+ +

Definition at line 334 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dec_ctx

+ +
+
+ + + + +
AVCodecContext * InputStream::dec_ctx
+
+ +

Definition at line 333 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ decoded_frame

+ +
+
+ + + + +
AVFrame* InputStream::decoded_frame
+
+ +

Definition at line 335 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ decoder_opts

+ +
+
+ + + + +
AVDictionary* InputStream::decoder_opts
+
+ +

Definition at line 363 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ decoding_needed

+ +
+
+ + + + +
int InputStream::decoding_needed
+
+ +

Definition at line 329 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ discard

+ +
+
+ + + + +
int InputStream::discard
+
+ +

Definition at line 327 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dr1

+ +
+
+ + + + +
int InputStream::dr1
+
+ +

Definition at line 386 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dts

+ +
+
+ + + + +
int64_t InputStream::dts
+
+ +

dts of the last packet read for this stream (in AV_TIME_BASE units)

+ +

Definition at line 344 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dts_buffer

+ +
+
+ + + + +
int64_t* InputStream::dts_buffer
+
+ +

Definition at line 419 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ file_index

+ +
+
+ + + + +
int InputStream::file_index
+
+ +

Definition at line 325 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter_frame

+ +
+
+ + + + +
AVFrame* InputStream::filter_frame
+
+ +

Definition at line 336 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter_in_rescale_delta_last

+ +
+
+ + + + +
int64_t InputStream::filter_in_rescale_delta_last
+
+ +

Definition at line 350 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filters

+ +
+
+ + + + +
InputFilter** InputStream::filters
+
+ +

Definition at line 390 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ first_dts

+ +
+
+ + + + +
int64_t InputStream::first_dts
+
+ +

dts of the first packet read for this stream (in AV_TIME_BASE units)

+ +

Definition at line 343 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ fix_sub_duration

+ +
+
+ + + + +
int InputStream::fix_sub_duration
+
+ +

Definition at line 370 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ framerate

+ +
+
+ + + + +
AVRational InputStream::framerate
+
+ +

Definition at line 364 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frames_decoded

+ +
+
+ + + + +
uint64_t InputStream::frames_decoded
+
+ +

Definition at line 416 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ got_output

+ +
+
+ + + + +
int InputStream::got_output
+
+ +

Definition at line 372 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ guess_layout_max

+ +
+
+ + + + +
int InputStream::guess_layout_max
+
+ +

Definition at line 366 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hw_frames_ctx

+ +
+
+ + + + +
AVBufferRef* InputStream::hw_frames_ctx
+
+ +

Definition at line 408 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_ctx

+ +
+
+ + + + +
void* InputStream::hwaccel_ctx
+
+ +

Definition at line 402 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_device

+ +
+
+ + + + +
char* InputStream::hwaccel_device
+
+ +

Definition at line 398 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_device_type

+ +
+
+ + + + +
enum AVHWDeviceType InputStream::hwaccel_device_type
+
+ +

Definition at line 397 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_get_buffer

+ +
+
+ + + + +
int(* InputStream::hwaccel_get_buffer) (AVCodecContext *s, AVFrame *frame, int flags)
+
+ +

Definition at line 404 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_id

+ +
+
+ + + + +
enum HWAccelID InputStream::hwaccel_id
+
+ +

Definition at line 396 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_output_format

+ +
+
+ + + + +
enum AVPixelFormat InputStream::hwaccel_output_format
+
+ +

Definition at line 399 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_pix_fmt

+ +
+
+ + + + +
enum AVPixelFormat InputStream::hwaccel_pix_fmt
+
+ +

Definition at line 406 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_retrieve_data

+ +
+
+ + + + +
int(* InputStream::hwaccel_retrieve_data) (AVCodecContext *s, AVFrame *frame)
+
+ +

Definition at line 405 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_retrieved_pix_fmt

+ +
+
+ + + + +
enum AVPixelFormat InputStream::hwaccel_retrieved_pix_fmt
+
+ +

Definition at line 407 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_uninit

+ +
+
+ + + + +
void(* InputStream::hwaccel_uninit) (AVCodecContext *s)
+
+ +

Definition at line 403 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_pts

+ +
+
+ + + + +
int64_t InputStream::max_pts
+
+ +

Definition at line 353 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ min_pts

+ +
+
+ + + + +
int64_t InputStream::min_pts
+
+ +

Definition at line 352 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_dts_buffer

+ +
+
+ + + + +
int InputStream::nb_dts_buffer
+
+ +

Definition at line 420 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_filters

+ +
+
+ + + + +
int InputStream::nb_filters
+
+ +

Definition at line 391 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_packets

+ +
+
+ + + + +
uint64_t InputStream::nb_packets
+
+ +

Definition at line 414 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_samples

+ +
+
+ + + + +
int64_t InputStream::nb_samples
+
+ +

Definition at line 359 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ next_dts

+ +
+
+ + + + +
int64_t InputStream::next_dts
+
+ +

Definition at line 342 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ next_pts

+ +
+
+ + + + +
int64_t InputStream::next_pts
+
+ +

synthetic pts for the next decode frame (in AV_TIME_BASE units)

+ +

Definition at line 346 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pkt

+ +
+
+ + + + +
AVPacket* InputStream::pkt
+
+ +

Definition at line 337 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ prev_sub

+ +
+
+ + + + +
struct { ... } InputStream::prev_sub
+
+ +
+
+ +

◆ pts

+ +
+
+ + + + +
int64_t InputStream::pts
+
+ +

current pts of the decoded frame (in AV_TIME_BASE units)

+ +

Definition at line 347 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ reinit_filters

+ +
+
+ + + + +
int InputStream::reinit_filters
+
+ +

Definition at line 393 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ret

+ +
+
+ + + + +
int InputStream::ret
+
+ +

Definition at line 373 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ samples_decoded

+ +
+
+ + + + +
uint64_t InputStream::samples_decoded
+
+ +

Definition at line 417 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ saw_first_ts

+ +
+
+ + + + +
int InputStream::saw_first_ts
+
+ +

Definition at line 362 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ st

+ +
+
+ + + + +
AVStream * InputStream::st
+
+ +

Definition at line 326 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ start

+ +
+
+ + + + +
int64_t InputStream::start
+
+ +

Definition at line 339 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sub2video

+ +
+
+ +
+
+ +

◆ subtitle

+ +
+
+ + + + +
AVSubtitle InputStream::subtitle
+
+ +

Definition at line 374 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ top_field_first

+ +
+
+ + + + +
int InputStream::top_field_first
+
+ +

Definition at line 365 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ts_scale

+ +
+
+ + + + +
double InputStream::ts_scale
+
+ +

Definition at line 361 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ user_set_discard

+ +
+
+ + + + +
int InputStream::user_set_discard
+
+ +

Definition at line 328 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ wrap_correction_done

+ +
+
+ + + + +
int InputStream::wrap_correction_done
+
+ +

Definition at line 348 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d3/dad/ffmpegkit__exception_8h.html b/docs/linux/html/d3/dad/ffmpegkit__exception_8h.html new file mode 100644 index 0000000..499488b --- /dev/null +++ b/docs/linux/html/d3/dad/ffmpegkit__exception_8h.html @@ -0,0 +1,106 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit_exception.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Variables
+
+
ffmpegkit_exception.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Variables

__thread jmp_buf ex_buf__
 
+

Variable Documentation

+ +

◆ ex_buf__

+ +
+
+ + + + +
__thread jmp_buf ex_buf__
+
+

Holds information to implement exception handling.

+ +

Definition at line 23 of file ffmpegkit_exception.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d3/dad/ffmpegkit__exception_8h_source.html b/docs/linux/html/d3/dad/ffmpegkit__exception_8h_source.html new file mode 100644 index 0000000..4e44cbc --- /dev/null +++ b/docs/linux/html/d3/dad/ffmpegkit__exception_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit_exception.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ffmpegkit_exception.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2018-2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_EXCEPTION_H
+
21 #define FFMPEG_KIT_EXCEPTION_H
+
22 
+
23 #include <stdio.h>
+
24 #include <setjmp.h>
+
25 
+
27 extern __thread jmp_buf ex_buf__;
+
28 
+
29 #endif // FFMPEG_KIT_EXCEPTION_H
+
+
ex_buf__
__thread jmp_buf ex_buf__
Definition: ffmpegkit_exception.cpp:23
+ + + + diff --git a/docs/linux/html/d3/db7/struct_flat_context.html b/docs/linux/html/d3/db7/struct_flat_context.html new file mode 100644 index 0000000..37020ad --- /dev/null +++ b/docs/linux/html/d3/db7/struct_flat_context.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: FlatContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
FlatContext Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

const AVClass * class
 
const char * sep_str
 
char sep
 
int hierarchical
 
+

Detailed Description

+
+

Definition at line 1246 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* FlatContext::class
+
+ +

Definition at line 1247 of file fftools_ffprobe.c.

+ +
+
+ +

◆ hierarchical

+ +
+
+ + + + +
int FlatContext::hierarchical
+
+ +

Definition at line 1250 of file fftools_ffprobe.c.

+ +
+
+ +

◆ sep

+ +
+
+ + + + +
char FlatContext::sep
+
+ +

Definition at line 1249 of file fftools_ffprobe.c.

+ +
+
+ +

◆ sep_str

+ +
+
+ + + + +
const char* FlatContext::sep_str
+
+ +

Definition at line 1248 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d4/da0/struct_default_context.html b/docs/linux/html/d4/da0/struct_default_context.html new file mode 100644 index 0000000..fb4f3bb --- /dev/null +++ b/docs/linux/html/d4/da0/struct_default_context.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: DefaultContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
DefaultContext Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

const AVClass * class
 
int nokey
 
int noprint_wrappers
 
int nested_section [SECTION_MAX_NB_LEVELS]
 
+

Detailed Description

+
+

Definition at line 938 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* DefaultContext::class
+
+ +

Definition at line 939 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nested_section

+ +
+
+ + + + +
int DefaultContext::nested_section[SECTION_MAX_NB_LEVELS]
+
+ +

Definition at line 942 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nokey

+ +
+
+ + + + +
int DefaultContext::nokey
+
+ +

Definition at line 940 of file fftools_ffprobe.c.

+ +
+
+ +

◆ noprint_wrappers

+ +
+
+ + + + +
int DefaultContext::noprint_wrappers
+
+ +

Definition at line 941 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d4/dad/_f_fprobe_kit_8h.html b/docs/linux/html/d4/dad/_f_fprobe_kit_8h.html new file mode 100644 index 0000000..0f5088e --- /dev/null +++ b/docs/linux/html/d4/dad/_f_fprobe_kit_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFprobeKit.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
FFprobeKit.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::FFprobeKit
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d4/dad/_f_fprobe_kit_8h_source.html b/docs/linux/html/d4/dad/_f_fprobe_kit_8h_source.html new file mode 100644 index 0000000..2771dbb --- /dev/null +++ b/docs/linux/html/d4/dad/_f_fprobe_kit_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +FFmpegKit Linux API: FFprobeKit.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFprobeKit.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFPROBE_KIT_H
+
21 #define FFPROBE_KIT_H
+
22 
+
23 #include <string.h>
+
24 #include <stdlib.h>
+
25 #include "FFprobeSession.h"
+ + +
28 
+
29 namespace ffmpegkit {
+
30 
+
48  class FFprobeKit {
+
49  public:
+
50 
+
57  static std::shared_ptr<ffmpegkit::FFprobeSession> executeWithArguments(const std::shared_ptr<std::list<std::string>> arguments);
+
58 
+
69  static std::shared_ptr<ffmpegkit::FFprobeSession> executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFprobeSessionCompleteCallback completeCallback);
+
70 
+
82  static std::shared_ptr<ffmpegkit::FFprobeSession> executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback);
+
83 
+
92  static std::shared_ptr<ffmpegkit::FFprobeSession> execute(const std::string command);
+
93 
+
105  static std::shared_ptr<ffmpegkit::FFprobeSession> executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback);
+
106 
+
119  static std::shared_ptr<ffmpegkit::FFprobeSession> executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback);
+
120 
+
127  static std::shared_ptr<ffmpegkit::MediaInformationSession> getMediaInformation(const std::string path);
+
128 
+
136  static std::shared_ptr<ffmpegkit::MediaInformationSession> getMediaInformation(const std::string path, const int waitTimeout);
+
137 
+
148  static std::shared_ptr<ffmpegkit::MediaInformationSession> getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback);
+
149 
+
162  static std::shared_ptr<ffmpegkit::MediaInformationSession> getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout);
+
163 
+
170  static std::shared_ptr<ffmpegkit::MediaInformationSession> getMediaInformationFromCommand(const std::string command);
+
171 
+
177  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFprobeSession>>> listFFprobeSessions();
+
178 
+
184  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::MediaInformationSession>>> listMediaInformationSessions();
+
185 
+
186  };
+
187 
+
188 }
+
189 
+
190 #endif // FFPROBE_KIT_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
MediaInformationSession.h
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFprobeKit::listMediaInformationSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > listMediaInformationSessions()
Definition: FFprobeKit.cpp:118
+
ffmpegkit::FFprobeKit::execute
static std::shared_ptr< ffmpegkit::FFprobeSession > execute(const std::string command)
Definition: FFprobeKit.cpp:62
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::FFprobeKit::getMediaInformationAsync
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:94
+
ffmpegkit::FFprobeKit::getMediaInformationFromCommand
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformationFromCommand(const std::string command)
Definition: FFprobeKit.cpp:108
+
MediaInformationJsonParser.h
+
ffmpegkit::FFprobeKit::getMediaInformation
static std::shared_ptr< ffmpegkit::MediaInformationSession > getMediaInformation(const std::string path)
Definition: FFprobeKit.cpp:80
+
ffmpegkit::FFprobeKit::executeWithArgumentsAsync
static std::shared_ptr< ffmpegkit::FFprobeSession > executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:50
+
ffmpegkit::FFprobeKit
Definition: FFprobeKit.h:48
+
ffmpegkit::FFprobeKit::executeWithArguments
static std::shared_ptr< ffmpegkit::FFprobeSession > executeWithArguments(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFprobeKit.cpp:44
+
FFprobeSession.h
+
ffmpegkit::FFprobeKit::executeAsync
static std::shared_ptr< ffmpegkit::FFprobeSession > executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback)
Definition: FFprobeKit.cpp:68
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+
ffmpegkit::FFprobeKit::listFFprobeSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > listFFprobeSessions()
Definition: FFprobeKit.cpp:114
+ + + + diff --git a/docs/linux/html/d4/daf/_log_callback_8h.html b/docs/linux/html/d4/daf/_log_callback_8h.html new file mode 100644 index 0000000..c721af0 --- /dev/null +++ b/docs/linux/html/d4/daf/_log_callback_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: LogCallback.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Typedefs
+
+
LogCallback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> ffmpegkit::LogCallback
 
+
+ + + + diff --git a/docs/linux/html/d4/daf/_log_callback_8h_source.html b/docs/linux/html/d4/daf/_log_callback_8h_source.html new file mode 100644 index 0000000..357c3ef --- /dev/null +++ b/docs/linux/html/d4/daf/_log_callback_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +FFmpegKit Linux API: LogCallback.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
LogCallback.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_LOG_CALLBACK_H
+
21 #define FFMPEG_KIT_LOG_CALLBACK_H
+
22 
+
23 #include "Log.h"
+
24 #include <iostream>
+
25 #include <memory>
+
26 #include <functional>
+
27 
+
28 namespace ffmpegkit {
+
29 
+
35  typedef std::function<void(const std::shared_ptr<ffmpegkit::Log> log)> LogCallback;
+
36 
+
37 }
+
38 
+
39 #endif // FFMPEG_KIT_LOG_CALLBACK_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
Log.h
+ + + + diff --git a/docs/linux/html/d4/dcf/classffmpegkit_1_1_return_code.html b/docs/linux/html/d4/dcf/classffmpegkit_1_1_return_code.html new file mode 100644 index 0000000..31c47e2 --- /dev/null +++ b/docs/linux/html/d4/dcf/classffmpegkit_1_1_return_code.html @@ -0,0 +1,399 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::ReturnCode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Member Functions | +Static Public Attributes | +Private Attributes | +Friends
+
+
ffmpegkit::ReturnCode Class Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

 ReturnCode (const int value)
 
int getValue () const
 
bool isValueSuccess () const
 
bool isValueError () const
 
bool isValueCancel () const
 
+ + + + + +

+Static Public Member Functions

static bool isSuccess (const std::shared_ptr< ffmpegkit::ReturnCode > value)
 
static bool isCancel (const std::shared_ptr< ffmpegkit::ReturnCode > value)
 
+ + + + + +

+Static Public Attributes

static constexpr int Success = 0
 
static constexpr int Cancel = 255
 
+ + + +

+Private Attributes

int _value
 
+ + + +

+Friends

std::ostream & operator<< (std::ostream &out, const std::shared_ptr< ffmpegkit::ReturnCode > &o)
 
+

Detailed Description

+
+

Definition at line 28 of file ReturnCode.h.

+

Constructor & Destructor Documentation

+ +

◆ ReturnCode()

+ +
+
+ + + + + + + + +
ffmpegkit::ReturnCode::ReturnCode (const int value)
+
+ +

Definition at line 30 of file ReturnCode.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getValue()

+ +
+
+ + + + + + + +
int ffmpegkit::ReturnCode::getValue () const
+
+ +

Definition at line 33 of file ReturnCode.cpp.

+ +
+
+ +

◆ isCancel()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ffmpegkit::ReturnCode::isCancel (const std::shared_ptr< ffmpegkit::ReturnCodevalue)
+
+static
+
+ +

Definition at line 26 of file ReturnCode.cpp.

+ +
+
+ +

◆ isSuccess()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ffmpegkit::ReturnCode::isSuccess (const std::shared_ptr< ffmpegkit::ReturnCodevalue)
+
+static
+
+ +

Definition at line 22 of file ReturnCode.cpp.

+ +
+
+ +

◆ isValueCancel()

+ +
+
+ + + + + + + +
bool ffmpegkit::ReturnCode::isValueCancel () const
+
+ +

Definition at line 45 of file ReturnCode.cpp.

+ +
+
+ +

◆ isValueError()

+ +
+
+ + + + + + + +
bool ffmpegkit::ReturnCode::isValueError () const
+
+ +

Definition at line 41 of file ReturnCode.cpp.

+ +
+
+ +

◆ isValueSuccess()

+ +
+
+ + + + + + + +
bool ffmpegkit::ReturnCode::isValueSuccess () const
+
+ +

Definition at line 37 of file ReturnCode.cpp.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ operator<<

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::ostream& operator<< (std::ostream & out,
const std::shared_ptr< ffmpegkit::ReturnCode > & o 
)
+
+friend
+
+ +

Definition at line 51 of file ReturnCode.cpp.

+ +
+
+

Field Documentation

+ +

◆ _value

+ +
+
+ + + + + +
+ + + + +
int ffmpegkit::ReturnCode::_value
+
+private
+
+ +

Definition at line 44 of file ReturnCode.h.

+ +
+
+ +

◆ Cancel

+ +
+
+ + + + + +
+ + + + +
constexpr int ffmpegkit::ReturnCode::Cancel = 255
+
+staticconstexpr
+
+ +

Definition at line 31 of file ReturnCode.h.

+ +
+
+ +

◆ Success

+ +
+
+ + + + + +
+ + + + +
constexpr int ffmpegkit::ReturnCode::Success = 0
+
+staticconstexpr
+
+ +

Definition at line 30 of file ReturnCode.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d4/df4/_stream_information_8h.html b/docs/linux/html/d4/df4/_stream_information_8h.html new file mode 100644 index 0000000..76ee701 --- /dev/null +++ b/docs/linux/html/d4/df4/_stream_information_8h.html @@ -0,0 +1,121 @@ + + + + + + + +FFmpegKit Linux API: StreamInformation.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces | +Macros
+
+
StreamInformation.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::StreamInformation
 
+ + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Macros

#define RAPIDJSON_ASSERT(x)
 
+

Macro Definition Documentation

+ +

◆ RAPIDJSON_ASSERT

+ +
+
+ + + + + + + + +
#define RAPIDJSON_ASSERT( x)
+
+ +

Definition at line 24 of file StreamInformation.h.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d4/df4/_stream_information_8h_source.html b/docs/linux/html/d4/df4/_stream_information_8h_source.html new file mode 100644 index 0000000..c4d1c7d --- /dev/null +++ b/docs/linux/html/d4/df4/_stream_information_8h_source.html @@ -0,0 +1,226 @@ + + + + + + + +FFmpegKit Linux API: StreamInformation.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
StreamInformation.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_STREAM_INFORMATION_H
+
21 #define FFMPEG_KIT_STREAM_INFORMATION_H
+
22 
+
23 // OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION
+
24 #define RAPIDJSON_ASSERT(x)
+
25 #include "rapidjson/document.h"
+
26 #include <string>
+
27 #include <memory>
+
28 
+
29 namespace ffmpegkit {
+
30 
+ +
35  public:
+
36  static constexpr const char* KeyIndex = "index";
+
37  static constexpr const char* KeyType = "codec_type";
+
38  static constexpr const char* KeyCodec = "codec_name";
+
39  static constexpr const char* KeyCodecLong = "codec_long_name";
+
40  static constexpr const char* KeyFormat = "pix_fmt";
+
41  static constexpr const char* KeyWidth = "width";
+
42  static constexpr const char* KeyHeight = "height";
+
43  static constexpr const char* KeyBitRate = "bit_rate";
+
44  static constexpr const char* KeySampleRate = "sample_rate";
+
45  static constexpr const char* KeySampleFormat = "sample_fmt";
+
46  static constexpr const char* KeyChannelLayout = "channel_layout";
+
47  static constexpr const char* KeySampleAspectRatio = "sample_aspect_ratio";
+
48  static constexpr const char* KeyDisplayAspectRatio = "display_aspect_ratio";
+
49  static constexpr const char* KeyAverageFrameRate = "avg_frame_rate";
+
50  static constexpr const char* KeyRealFrameRate = "r_frame_rate";
+
51  static constexpr const char* KeyTimeBase = "time_base";
+
52  static constexpr const char* KeyCodecTimeBase = "codec_time_base";
+
53  static constexpr const char* KeyTags = "tags";
+
54 
+
55  StreamInformation(std::shared_ptr<rapidjson::Value> streamInformationValue);
+
56 
+
62  std::shared_ptr<int64_t> getIndex();
+
63 
+
69  std::shared_ptr<std::string> getType();
+
70 
+
76  std::shared_ptr<std::string> getCodec();
+
77 
+
83  std::shared_ptr<std::string> getCodecLong();
+
84 
+
90  std::shared_ptr<std::string> getFormat();
+
91 
+
97  std::shared_ptr<int64_t> getWidth();
+
98 
+
104  std::shared_ptr<int64_t> getHeight();
+
105 
+
111  std::shared_ptr<std::string> getBitrate();
+
112 
+
118  std::shared_ptr<std::string> getSampleRate();
+
119 
+
125  std::shared_ptr<std::string> getSampleFormat();
+
126 
+
132  std::shared_ptr<std::string> getChannelLayout();
+
133 
+
139  std::shared_ptr<std::string> getSampleAspectRatio();
+
140 
+
146  std::shared_ptr<std::string> getDisplayAspectRatio();
+
147 
+
153  std::shared_ptr<std::string> getAverageFrameRate();
+
154 
+
160  std::shared_ptr<std::string> getRealFrameRate();
+
161 
+
167  std::shared_ptr<std::string> getTimeBase();
+
168 
+
174  std::shared_ptr<std::string> getCodecTimeBase();
+
175 
+
181  std::shared_ptr<rapidjson::Value> getTags();
+
182 
+
188  std::shared_ptr<std::string> getStringProperty(const char* key);
+
189 
+
195  std::shared_ptr<int64_t> getNumberProperty(const char* key);
+
196 
+
202  std::shared_ptr<rapidjson::Value> getProperties(const char* key);
+
203 
+
209  std::shared_ptr<rapidjson::Value> getAllProperties();
+
210 
+
211  private:
+
212  std::shared_ptr<rapidjson::Value> _streamInformationValue;
+
213  };
+
214 
+
215 }
+
216 
+
217 #endif // FFMPEG_KIT_STREAM_INFORMATION_H
+
+
ffmpegkit::StreamInformation
Definition: StreamInformation.h:34
+
ffmpegkit::StreamInformation::getCodec
std::shared_ptr< std::string > getCodec()
Definition: StreamInformation.cpp:33
+
ffmpegkit::StreamInformation::KeyCodecTimeBase
static constexpr const char * KeyCodecTimeBase
Definition: StreamInformation.h:52
+
ffmpegkit::StreamInformation::KeyDisplayAspectRatio
static constexpr const char * KeyDisplayAspectRatio
Definition: StreamInformation.h:48
+
ffmpegkit::StreamInformation::KeyIndex
static constexpr const char * KeyIndex
Definition: StreamInformation.h:36
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::StreamInformation::KeyRealFrameRate
static constexpr const char * KeyRealFrameRate
Definition: StreamInformation.h:50
+
ffmpegkit::StreamInformation::getTimeBase
std::shared_ptr< std::string > getTimeBase()
Definition: StreamInformation.cpp:85
+
ffmpegkit::StreamInformation::getBitrate
std::shared_ptr< std::string > getBitrate()
Definition: StreamInformation.cpp:53
+
ffmpegkit::StreamInformation::KeySampleRate
static constexpr const char * KeySampleRate
Definition: StreamInformation.h:44
+
ffmpegkit::StreamInformation::getDisplayAspectRatio
std::shared_ptr< std::string > getDisplayAspectRatio()
Definition: StreamInformation.cpp:73
+
ffmpegkit::StreamInformation::getWidth
std::shared_ptr< int64_t > getWidth()
Definition: StreamInformation.cpp:45
+
ffmpegkit::StreamInformation::KeyTimeBase
static constexpr const char * KeyTimeBase
Definition: StreamInformation.h:51
+
ffmpegkit::StreamInformation::getSampleFormat
std::shared_ptr< std::string > getSampleFormat()
Definition: StreamInformation.cpp:61
+
ffmpegkit::StreamInformation::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: StreamInformation.cpp:97
+
ffmpegkit::StreamInformation::getFormat
std::shared_ptr< std::string > getFormat()
Definition: StreamInformation.cpp:41
+
ffmpegkit::StreamInformation::KeyFormat
static constexpr const char * KeyFormat
Definition: StreamInformation.h:40
+
ffmpegkit::StreamInformation::KeySampleFormat
static constexpr const char * KeySampleFormat
Definition: StreamInformation.h:45
+
ffmpegkit::StreamInformation::KeyTags
static constexpr const char * KeyTags
Definition: StreamInformation.h:53
+
ffmpegkit::StreamInformation::getIndex
std::shared_ptr< int64_t > getIndex()
Definition: StreamInformation.cpp:25
+
ffmpegkit::StreamInformation::KeyCodec
static constexpr const char * KeyCodec
Definition: StreamInformation.h:38
+
ffmpegkit::StreamInformation::KeyAverageFrameRate
static constexpr const char * KeyAverageFrameRate
Definition: StreamInformation.h:49
+
ffmpegkit::StreamInformation::KeyChannelLayout
static constexpr const char * KeyChannelLayout
Definition: StreamInformation.h:46
+
ffmpegkit::StreamInformation::getHeight
std::shared_ptr< int64_t > getHeight()
Definition: StreamInformation.cpp:49
+
ffmpegkit::StreamInformation::_streamInformationValue
std::shared_ptr< rapidjson::Value > _streamInformationValue
Definition: StreamInformation.h:212
+
ffmpegkit::StreamInformation::KeyBitRate
static constexpr const char * KeyBitRate
Definition: StreamInformation.h:43
+
ffmpegkit::StreamInformation::KeyHeight
static constexpr const char * KeyHeight
Definition: StreamInformation.h:42
+
ffmpegkit::StreamInformation::getAverageFrameRate
std::shared_ptr< std::string > getAverageFrameRate()
Definition: StreamInformation.cpp:77
+
ffmpegkit::StreamInformation::StreamInformation
StreamInformation(std::shared_ptr< rapidjson::Value > streamInformationValue)
Definition: StreamInformation.cpp:22
+
ffmpegkit::StreamInformation::getCodecTimeBase
std::shared_ptr< std::string > getCodecTimeBase()
Definition: StreamInformation.cpp:89
+
ffmpegkit::StreamInformation::KeySampleAspectRatio
static constexpr const char * KeySampleAspectRatio
Definition: StreamInformation.h:47
+
ffmpegkit::StreamInformation::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: StreamInformation.cpp:123
+
ffmpegkit::StreamInformation::getCodecLong
std::shared_ptr< std::string > getCodecLong()
Definition: StreamInformation.cpp:37
+
ffmpegkit::StreamInformation::getType
std::shared_ptr< std::string > getType()
Definition: StreamInformation.cpp:29
+
ffmpegkit::StreamInformation::KeyType
static constexpr const char * KeyType
Definition: StreamInformation.h:37
+
ffmpegkit::StreamInformation::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: StreamInformation.cpp:113
+
ffmpegkit::StreamInformation::KeyWidth
static constexpr const char * KeyWidth
Definition: StreamInformation.h:41
+
ffmpegkit::StreamInformation::getChannelLayout
std::shared_ptr< std::string > getChannelLayout()
Definition: StreamInformation.cpp:65
+
ffmpegkit::StreamInformation::getSampleAspectRatio
std::shared_ptr< std::string > getSampleAspectRatio()
Definition: StreamInformation.cpp:69
+
ffmpegkit::StreamInformation::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: StreamInformation.cpp:105
+
ffmpegkit::StreamInformation::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: StreamInformation.cpp:93
+
ffmpegkit::StreamInformation::getRealFrameRate
std::shared_ptr< std::string > getRealFrameRate()
Definition: StreamInformation.cpp:81
+
ffmpegkit::StreamInformation::KeyCodecLong
static constexpr const char * KeyCodecLong
Definition: StreamInformation.h:39
+
ffmpegkit::StreamInformation::getSampleRate
std::shared_ptr< std::string > getSampleRate()
Definition: StreamInformation.cpp:57
+ + + + diff --git a/docs/linux/html/d4/dfd/struct_input_stream_1_1sub2video.html b/docs/linux/html/d4/dfd/struct_input_stream_1_1sub2video.html new file mode 100644 index 0000000..9c87586 --- /dev/null +++ b/docs/linux/html/d4/dfd/struct_input_stream_1_1sub2video.html @@ -0,0 +1,227 @@ + + + + + + + +FFmpegKit Linux API: InputStream::sub2video Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Data Fields
+
+
InputStream::sub2video Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Data Fields

int64_t last_pts
 
int64_t end_pts
 
AVFifoBuffer * sub_queue
 queue of AVSubtitle* before filter init More...
 
AVFrame * frame
 
int w
 
int h
 
unsigned int initialize
 marks if sub2video_update should force an initialization More...
 
+

Detailed Description

+
+

Definition at line 377 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ end_pts

+ +
+
+ + + + +
int64_t InputStream::sub2video::end_pts
+
+ +

Definition at line 379 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame

+ +
+
+ + + + +
AVFrame* InputStream::sub2video::frame
+
+ +

Definition at line 381 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ h

+ +
+
+ + + + +
int InputStream::sub2video::h
+
+ +

Definition at line 382 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ initialize

+ +
+
+ + + + +
unsigned int InputStream::sub2video::initialize
+
+ +

marks if sub2video_update should force an initialization

+ +

Definition at line 383 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_pts

+ +
+
+ + + + +
int64_t InputStream::sub2video::last_pts
+
+ +

Definition at line 378 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sub_queue

+ +
+
+ + + + +
AVFifoBuffer* InputStream::sub2video::sub_queue
+
+ +

queue of AVSubtitle* before filter init

+ +

Definition at line 380 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ w

+ +
+
+ + + + +
int InputStream::sub2video::w
+
+ +

Definition at line 382 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d5/d0e/classffmpegkit_1_1_session.html b/docs/linux/html/d5/d0e/classffmpegkit_1_1_session.html new file mode 100644 index 0000000..6126959 --- /dev/null +++ b/docs/linux/html/d5/d0e/classffmpegkit_1_1_session.html @@ -0,0 +1,996 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::Session Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
ffmpegkit::Session Class Referenceabstract
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ffmpegkit::LogCallback getLogCallback () const =0
 
virtual long getSessionId () const =0
 
virtual std::chrono::time_point< std::chrono::system_clock > getCreateTime () const =0
 
virtual std::chrono::time_point< std::chrono::system_clock > getStartTime () const =0
 
virtual std::chrono::time_point< std::chrono::system_clock > getEndTime () const =0
 
virtual long getDuration () const =0
 
virtual std::shared_ptr< std::list< std::string > > getArguments () const =0
 
virtual std::string getCommand () const =0
 
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const =0
 
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const =0
 
virtual std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const =0
 
virtual std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const =0
 
virtual std::string getAllLogsAsString () const =0
 
virtual std::string getLogsAsString () const =0
 
virtual std::string getOutput () const =0
 
virtual ffmpegkit::SessionState getState () const =0
 
virtual std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const =0
 
virtual std::string getFailStackTrace () const =0
 
virtual LogRedirectionStrategy getLogRedirectionStrategy () const =0
 
virtual bool thereAreAsynchronousMessagesInTransmit () const =0
 
virtual void addLog (const std::shared_ptr< ffmpegkit::Log > log)=0
 
virtual void startRunning ()=0
 
virtual void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode)=0
 
virtual void fail (const char *error)=0
 
virtual bool isFFmpeg () const =0
 
virtual bool isFFprobe () const =0
 
virtual bool isMediaInformation () const =0
 
virtual void cancel ()=0
 
+

Detailed Description

+

Common interface for all FFmpegKit sessions.

+ +

Definition at line 37 of file Session.h.

+

Member Function Documentation

+ +

◆ addLog()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ffmpegkit::Session::addLog (const std::shared_ptr< ffmpegkit::Loglog)
+
+pure virtual
+
+

Adds a new log entry for this session.

+

It is invoked internally by FFmpegKit library methods. Must not be used by user applications.

+
Parameters
+ + +
loglog entry
+
+
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ cancel()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ffmpegkit::Session::cancel ()
+
+pure virtual
+
+

Cancels running the session.

+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ complete()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ffmpegkit::Session::complete (const std::shared_ptr< ffmpegkit::ReturnCodereturnCode)
+
+pure virtual
+
+

Completes running the session with the provided return code.

+
Parameters
+ + +
returnCodereturn code of the execution
+
+
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ fail()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ffmpegkit::Session::fail (const char * error)
+
+pure virtual
+
+

Ends running the session with a failure.

+
Parameters
+ + +
errorerror received
+
+
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getAllLogs()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log> > > ffmpegkit::Session::getAllLogs () const
+
+pure virtual
+
+

Returns all log entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them.

+
Returns
list of log entries generated for this session
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getAllLogsAsString()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ffmpegkit::Session::getAllLogsAsString () const
+
+pure virtual
+
+

Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them.

+
Returns
all log entries generated for this session as a concatenated string
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getAllLogsAsStringWithTimeout()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::string ffmpegkit::Session::getAllLogsAsStringWithTimeout (const int waitTimeout) const
+
+pure virtual
+
+

Returns all log entries generated for this session as a concatenated string. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.

+
Parameters
+ + +
waitTimeoutwait timeout for asynchronous messages in milliseconds
+
+
+
Returns
all log entries generated for this session as a concatenated string
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getAllLogsWithTimeout()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log> > > ffmpegkit::Session::getAllLogsWithTimeout (const int waitTimeout) const
+
+pure virtual
+
+

Returns all log entries generated for this session. If there are asynchronous messages that are not delivered yet, this method waits for them until the given timeout.

+
Parameters
+ + +
waitTimeoutwait timeout for asynchronous messages in milliseconds
+
+
+
Returns
list of log entries generated for this session
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getArguments()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::shared_ptr<std::list<std::string> > ffmpegkit::Session::getArguments () const
+
+pure virtual
+
+

Returns command arguments as a list.

+
Returns
command arguments as a list
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getCommand()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ffmpegkit::Session::getCommand () const
+
+pure virtual
+
+

Returns command arguments as a concatenated string.

+
Returns
command arguments as a concatenated string
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getCreateTime()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::chrono::time_point<std::chrono::system_clock> ffmpegkit::Session::getCreateTime () const
+
+pure virtual
+
+

Returns session create time.

+
Returns
session create time
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long ffmpegkit::Session::getDuration () const
+
+pure virtual
+
+

Returns the time taken to execute this session.

+
Returns
time taken to execute this session in milliseconds or zero (0) if the session is not over yet
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getEndTime()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::chrono::time_point<std::chrono::system_clock> ffmpegkit::Session::getEndTime () const
+
+pure virtual
+
+

Returns session end time.

+
Returns
session end time
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getFailStackTrace()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ffmpegkit::Session::getFailStackTrace () const
+
+pure virtual
+
+

Returns the stack trace of the exception received while executing this session.

+

The stack trace is only set for sessions that end with SessionStateFailed state. For sessions that has SessionStateCompleted state this method returns an empty string.

+
Returns
stack trace of the exception received while executing this session, an empty string if session is not started, still running or completed
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getLogCallback()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ffmpegkit::LogCallback ffmpegkit::Session::getLogCallback () const
+
+pure virtual
+
+

Returns the session specific log callback.

+
Returns
session specific log callback
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getLogRedirectionStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
virtual LogRedirectionStrategy ffmpegkit::Session::getLogRedirectionStrategy () const
+
+pure virtual
+
+

Returns session specific log redirection strategy.

+
Returns
session specific log redirection strategy
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getLogs()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log> > > ffmpegkit::Session::getLogs () const
+
+pure virtual
+
+

Returns all log entries delivered for this session. Note that if there are asynchronous messages that are not delivered yet, this method will not wait for them and will return immediately.

+
Returns
list of log entries received for this session
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getLogsAsString()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ffmpegkit::Session::getLogsAsString () const
+
+pure virtual
+
+

Returns all log entries delivered for this session as a concatenated string. Note that if there are asynchronous messages that are not delivered yet, this method will not wait for them and will return immediately.

+
Returns
list of log entries received for this session
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getOutput()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::string ffmpegkit::Session::getOutput () const
+
+pure virtual
+
+

Returns the log output generated while running the session.

+
Returns
log output generated
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getReturnCode()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::shared_ptr<ffmpegkit::ReturnCode> ffmpegkit::Session::getReturnCode () const
+
+pure virtual
+
+

Returns the return code for this session. Note that return code is only set for sessions that end with SessionStateCompleted state. If a session is not started, still running or failed then this method returns nullptr.

+
Returns
the return code for this session if the session has completed, nullptr if session is not started, still running or failed
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getSessionId()

+ +
+
+ + + + + +
+ + + + + + + +
virtual long ffmpegkit::Session::getSessionId () const
+
+pure virtual
+
+

Returns the session identifier.

+
Returns
session identifier
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getStartTime()

+ +
+
+ + + + + +
+ + + + + + + +
virtual std::chrono::time_point<std::chrono::system_clock> ffmpegkit::Session::getStartTime () const
+
+pure virtual
+
+

Returns session start time.

+
Returns
session start time
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ getState()

+ +
+
+ + + + + +
+ + + + + + + +
virtual ffmpegkit::SessionState ffmpegkit::Session::getState () const
+
+pure virtual
+
+

Returns the state of the session.

+
Returns
state of the session
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ isFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ffmpegkit::Session::isFFmpeg () const
+
+pure virtual
+
+

Returns whether it is an FFmpeg session or not.

+
Returns
true if it is an FFmpeg session, false otherwise
+ +

Implemented in ffmpegkit::AbstractSession, ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +
+
+ +

◆ isFFprobe()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ffmpegkit::Session::isFFprobe () const
+
+pure virtual
+
+

Returns whether it is an FFprobe session or not.

+
Returns
true if it is an FFprobe session, false otherwise
+ +

Implemented in ffmpegkit::AbstractSession, ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +
+
+ +

◆ isMediaInformation()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ffmpegkit::Session::isMediaInformation () const
+
+pure virtual
+
+

Returns whether it is a MediaInformation session or not.

+
Returns
true if it is a MediaInformation session, false otherwise
+ +

Implemented in ffmpegkit::AbstractSession, ffmpegkit::FFmpegSession, ffmpegkit::MediaInformationSession, and ffmpegkit::FFprobeSession.

+ +
+
+ +

◆ startRunning()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ffmpegkit::Session::startRunning ()
+
+pure virtual
+
+

Starts running the session.

+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+ +

◆ thereAreAsynchronousMessagesInTransmit()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ffmpegkit::Session::thereAreAsynchronousMessagesInTransmit () const
+
+pure virtual
+
+

Returns whether there are still asynchronous messages being transmitted for this session or not.

+
Returns
true if there are still asynchronous messages being transmitted, false otherwise
+ +

Implemented in ffmpegkit::AbstractSession.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h.html b/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h.html new file mode 100644 index 0000000..98f7cc6 --- /dev/null +++ b/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSessionCompleteCallback.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Typedefs
+
+
FFprobeSessionCompleteCallback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> ffmpegkit::FFprobeSessionCompleteCallback
 
+
+ + + + diff --git a/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h_source.html b/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h_source.html new file mode 100644 index 0000000..943cabd --- /dev/null +++ b/docs/linux/html/d5/d14/_f_fprobe_session_complete_callback_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSessionCompleteCallback.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFprobeSessionCompleteCallback.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H
+
21 #define FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H
+
22 
+
23 #include <iostream>
+
24 #include <memory>
+
25 #include <functional>
+
26 
+
27 namespace ffmpegkit {
+
28 
+ +
30 
+
52  typedef std::function<void(const std::shared_ptr<ffmpegkit::FFprobeSession> session)> FFprobeSessionCompleteCallback;
+
53 
+
54  #include "FFprobeSession.h"
+
55 
+
56 }
+
57 
+
58 #endif // FFMPEG_KIT_FFPROBE_SESSION_COMPLETE_CALLBACK_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFprobeSession
Definition: FFprobeSession.h:31
+
FFprobeSession.h
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+ + + + diff --git a/docs/linux/html/d5/d18/class_callback_data.html b/docs/linux/html/d5/d18/class_callback_data.html new file mode 100644 index 0000000..b8b6d5b --- /dev/null +++ b/docs/linux/html/d5/d18/class_callback_data.html @@ -0,0 +1,825 @@ + + + + + + + +FFmpegKit Linux API: CallbackData Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Private Attributes
+
+
CallbackData Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CallbackData (const long sessionId, const int logLevel, const AVBPrint *data)
 
 CallbackData (const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)
 
CallbackType getType ()
 
long getSessionId ()
 
int getLogLevel ()
 
AVBPrint * getLogData ()
 
int getStatisticsFrameNumber ()
 
float getStatisticsFps ()
 
float getStatisticsQuality ()
 
int64_t getStatisticsSize ()
 
int getStatisticsTime ()
 
double getStatisticsBitrate ()
 
double getStatisticsSpeed ()
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Private Attributes

CallbackType _type
 
long _sessionId
 
int _logLevel
 
AVBPrint _logData
 
int _statisticsFrameNumber
 
float _statisticsFps
 
float _statisticsQuality
 
int64_t _statisticsSize
 
int _statisticsTime
 
double _statisticsBitrate
 
double _statisticsSpeed
 
+

Detailed Description

+

Callback data class.

+ +

Definition at line 179 of file FFmpegKitConfig.cpp.

+

Constructor & Destructor Documentation

+ +

◆ CallbackData() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
CallbackData::CallbackData (const long sessionId,
const int logLevel,
const AVBPrint * data 
)
+
+inline
+
+ +

Definition at line 181 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ CallbackData() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CallbackData::CallbackData (const long sessionId,
const int videoFrameNumber,
const float videoFps,
const float videoQuality,
const int64_t size,
const int time,
const double bitrate,
const double speed 
)
+
+inline
+
+ +

Definition at line 187 of file FFmpegKitConfig.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getLogData()

+ +
+
+ + + + + +
+ + + + + + + +
AVBPrint* CallbackData::getLogData ()
+
+inline
+
+ +

Definition at line 218 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getLogLevel()

+ +
+
+ + + + + +
+ + + + + + + +
int CallbackData::getLogLevel ()
+
+inline
+
+ +

Definition at line 214 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getSessionId()

+ +
+
+ + + + + +
+ + + + + + + +
long CallbackData::getSessionId ()
+
+inline
+
+ +

Definition at line 210 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsBitrate()

+ +
+
+ + + + + +
+ + + + + + + +
double CallbackData::getStatisticsBitrate ()
+
+inline
+
+ +

Definition at line 242 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsFps()

+ +
+
+ + + + + +
+ + + + + + + +
float CallbackData::getStatisticsFps ()
+
+inline
+
+ +

Definition at line 226 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsFrameNumber()

+ +
+
+ + + + + +
+ + + + + + + +
int CallbackData::getStatisticsFrameNumber ()
+
+inline
+
+ +

Definition at line 222 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsQuality()

+ +
+
+ + + + + +
+ + + + + + + +
float CallbackData::getStatisticsQuality ()
+
+inline
+
+ +

Definition at line 230 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsSize()

+ +
+
+ + + + + +
+ + + + + + + +
int64_t CallbackData::getStatisticsSize ()
+
+inline
+
+ +

Definition at line 234 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsSpeed()

+ +
+
+ + + + + +
+ + + + + + + +
double CallbackData::getStatisticsSpeed ()
+
+inline
+
+ +

Definition at line 246 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getStatisticsTime()

+ +
+
+ + + + + +
+ + + + + + + +
int CallbackData::getStatisticsTime ()
+
+inline
+
+ +

Definition at line 238 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + +
+ + + + + + + +
CallbackType CallbackData::getType ()
+
+inline
+
+ +

Definition at line 206 of file FFmpegKitConfig.cpp.

+ +
+
+

Field Documentation

+ +

◆ _logData

+ +
+
+ + + + + +
+ + + + +
AVBPrint CallbackData::_logData
+
+private
+
+ +

Definition at line 255 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _logLevel

+ +
+
+ + + + + +
+ + + + +
int CallbackData::_logLevel
+
+private
+
+ +

Definition at line 254 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _sessionId

+ +
+
+ + + + + +
+ + + + +
long CallbackData::_sessionId
+
+private
+
+ +

Definition at line 252 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsBitrate

+ +
+
+ + + + + +
+ + + + +
double CallbackData::_statisticsBitrate
+
+private
+
+ +

Definition at line 262 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsFps

+ +
+
+ + + + + +
+ + + + +
float CallbackData::_statisticsFps
+
+private
+
+ +

Definition at line 258 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsFrameNumber

+ +
+
+ + + + + +
+ + + + +
int CallbackData::_statisticsFrameNumber
+
+private
+
+ +

Definition at line 257 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsQuality

+ +
+
+ + + + + +
+ + + + +
float CallbackData::_statisticsQuality
+
+private
+
+ +

Definition at line 259 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsSize

+ +
+
+ + + + + +
+ + + + +
int64_t CallbackData::_statisticsSize
+
+private
+
+ +

Definition at line 260 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsSpeed

+ +
+
+ + + + + +
+ + + + +
double CallbackData::_statisticsSpeed
+
+private
+
+ +

Definition at line 263 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _statisticsTime

+ +
+
+ + + + + +
+ + + + +
int CallbackData::_statisticsTime
+
+private
+
+ +

Definition at line 261 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ _type

+ +
+
+ + + + + +
+ + + + +
CallbackType CallbackData::_type
+
+private
+
+ +

Definition at line 251 of file FFmpegKitConfig.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d5/d5f/_packages_8h.html b/docs/linux/html/d5/d5f/_packages_8h.html new file mode 100644 index 0000000..c322aa9 --- /dev/null +++ b/docs/linux/html/d5/d5f/_packages_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: Packages.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
Packages.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::Packages
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d5/d5f/_packages_8h_source.html b/docs/linux/html/d5/d5f/_packages_8h_source.html new file mode 100644 index 0000000..de2b4c7 --- /dev/null +++ b/docs/linux/html/d5/d5f/_packages_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +FFmpegKit Linux API: Packages.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Packages.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_PACKAGES_H
+
21 #define FFMPEG_KIT_PACKAGES_H
+
22 
+
23 #include <set>
+
24 #include <iostream>
+
25 #include <memory>
+
26 #include <string>
+
27 
+
28 namespace ffmpegkit {
+
29 
+
33  class Packages {
+
34  public:
+
35 
+
41  static std::string getPackageName();
+
42 
+
48  static std::shared_ptr<std::set<std::string>> getExternalLibraries();
+
49  };
+
50 
+
51 }
+
52 
+
53 #endif // FFMPEG_KIT_PACKAGES_H
+
+
ffmpegkit::Packages::getPackageName
static std::string getPackageName()
Definition: Packages.cpp:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::Packages::getExternalLibraries
static std::shared_ptr< std::set< std::string > > getExternalLibraries()
Definition: Packages.cpp:200
+
ffmpegkit::Packages
Definition: Packages.h:33
+ + + + diff --git a/docs/linux/html/d5/d8e/struct_benchmark_time_stamps.html b/docs/linux/html/d5/d8e/struct_benchmark_time_stamps.html new file mode 100644 index 0000000..afc6889 --- /dev/null +++ b/docs/linux/html/d5/d8e/struct_benchmark_time_stamps.html @@ -0,0 +1,145 @@ + + + + + + + +FFmpegKit Linux API: BenchmarkTimeStamps Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
BenchmarkTimeStamps Struct Reference
+
+
+ + + + + + + + +

+Data Fields

int64_t real_usec
 
int64_t user_usec
 
int64_t sys_usec
 
+

Detailed Description

+
+

Definition at line 151 of file fftools_ffmpeg.c.

+

Field Documentation

+ +

◆ real_usec

+ +
+
+ + + + +
int64_t BenchmarkTimeStamps::real_usec
+
+ +

Definition at line 152 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sys_usec

+ +
+
+ + + + +
int64_t BenchmarkTimeStamps::sys_usec
+
+ +

Definition at line 154 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ user_usec

+ +
+
+ + + + +
int64_t BenchmarkTimeStamps::user_usec
+
+ +

Definition at line 153 of file fftools_ffmpeg.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d5/dce/_signal_8h.html b/docs/linux/html/d5/dce/_signal_8h.html new file mode 100644 index 0000000..7279a9a --- /dev/null +++ b/docs/linux/html/d5/dce/_signal_8h.html @@ -0,0 +1,102 @@ + + + + + + + +FFmpegKit Linux API: Signal.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Enumerations
+
+
Signal.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Enumerations

enum  ffmpegkit::Signal {
+  ffmpegkit::SignalInt = 2, +ffmpegkit::SignalQuit = 3, +ffmpegkit::SignalPipe = 13, +ffmpegkit::SignalTerm = 15, +
+  ffmpegkit::SignalXcpu = 24 +
+ }
 
+
+ + + + diff --git a/docs/linux/html/d5/dce/_signal_8h_source.html b/docs/linux/html/d5/dce/_signal_8h_source.html new file mode 100644 index 0000000..527eb6b --- /dev/null +++ b/docs/linux/html/d5/dce/_signal_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +FFmpegKit Linux API: Signal.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Signal.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_SIGNAL_H
+
21 #define FFMPEG_KIT_SIGNAL_H
+
22 
+
23 namespace ffmpegkit {
+
24 
+
25  enum Signal {
+
26  SignalInt = 2,
+ +
28  SignalPipe = 13,
+
29  SignalTerm = 15,
+ +
31  };
+
32 
+
33 }
+
34 
+
35 #endif // FFMPEG_KIT_SIGNAL_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::SignalInt
@ SignalInt
Definition: Signal.h:26
+
ffmpegkit::Signal
Signal
Definition: Signal.h:25
+
ffmpegkit::SignalQuit
@ SignalQuit
Definition: Signal.h:27
+
ffmpegkit::SignalPipe
@ SignalPipe
Definition: Signal.h:28
+
ffmpegkit::SignalXcpu
@ SignalXcpu
Definition: Signal.h:30
+
ffmpegkit::SignalTerm
@ SignalTerm
Definition: Signal.h:29
+ + + + diff --git a/docs/linux/html/d6/d2c/struct_audio_channel_map.html b/docs/linux/html/d6/d2c/struct_audio_channel_map.html new file mode 100644 index 0000000..61b442a --- /dev/null +++ b/docs/linux/html/d6/d2c/struct_audio_channel_map.html @@ -0,0 +1,181 @@ + + + + + + + +FFmpegKit Linux API: AudioChannelMap Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
AudioChannelMap Struct Reference
+
+
+ + + + + + + + + + + + +

+Data Fields

int file_idx
 
int stream_idx
 
int channel_idx
 
int ofile_idx
 
int ostream_idx
 
+

Detailed Description

+
+

Definition at line 112 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ channel_idx

+ +
+
+ + + + +
int AudioChannelMap::channel_idx
+
+ +

Definition at line 113 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ file_idx

+ +
+
+ + + + +
int AudioChannelMap::file_idx
+
+ +

Definition at line 113 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ofile_idx

+ +
+
+ + + + +
int AudioChannelMap::ofile_idx
+
+ +

Definition at line 114 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ostream_idx

+ +
+
+ + + + +
int AudioChannelMap::ostream_idx
+
+ +

Definition at line 114 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ stream_idx

+ +
+
+ + + + +
int AudioChannelMap::stream_idx
+
+ +

Definition at line 113 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d6/d42/_log_redirection_strategy_8h.html b/docs/linux/html/d6/d42/_log_redirection_strategy_8h.html new file mode 100644 index 0000000..617edb0 --- /dev/null +++ b/docs/linux/html/d6/d42/_log_redirection_strategy_8h.html @@ -0,0 +1,102 @@ + + + + + + + +FFmpegKit Linux API: LogRedirectionStrategy.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Enumerations
+
+
LogRedirectionStrategy.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Enumerations

enum  ffmpegkit::LogRedirectionStrategy {
+  ffmpegkit::LogRedirectionStrategyAlwaysPrintLogs = 0, +ffmpegkit::LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined = 1, +ffmpegkit::LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined = 2, +ffmpegkit::LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined = 3, +
+  ffmpegkit::LogRedirectionStrategyNeverPrintLogs = 4 +
+ }
 
+
+ + + + diff --git a/docs/linux/html/d6/d42/_log_redirection_strategy_8h_source.html b/docs/linux/html/d6/d42/_log_redirection_strategy_8h_source.html new file mode 100644 index 0000000..02e8cc5 --- /dev/null +++ b/docs/linux/html/d6/d42/_log_redirection_strategy_8h_source.html @@ -0,0 +1,120 @@ + + + + + + + +FFmpegKit Linux API: LogRedirectionStrategy.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
LogRedirectionStrategy.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_LOG_REDIRECTION_STRATEGY_H
+
21 #define FFMPEG_KIT_LOG_REDIRECTION_STRATEGY_H
+
22 
+
23 namespace ffmpegkit {
+
24 
+ + + + + + +
31  };
+
32 
+
33 }
+
34 
+
35 #endif // FFMPEG_KIT_LOG_REDIRECTION_STRATEGY_H
+
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::LogRedirectionStrategyNeverPrintLogs
@ LogRedirectionStrategyNeverPrintLogs
Definition: LogRedirectionStrategy.h:30
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined
@ LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined
Definition: LogRedirectionStrategy.h:27
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined
@ LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined
Definition: LogRedirectionStrategy.h:28
+
ffmpegkit::LogRedirectionStrategyAlwaysPrintLogs
@ LogRedirectionStrategyAlwaysPrintLogs
Definition: LogRedirectionStrategy.h:26
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined
@ LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined
Definition: LogRedirectionStrategy.h:29
+ + + + diff --git a/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h.html b/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h.html new file mode 100644 index 0000000..b8d2ef8 --- /dev/null +++ b/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSessionCompleteCallback.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Typedefs
+
+
FFmpegSessionCompleteCallback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> ffmpegkit::FFmpegSessionCompleteCallback
 
+
+ + + + diff --git a/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h_source.html b/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h_source.html new file mode 100644 index 0000000..390259a --- /dev/null +++ b/docs/linux/html/d6/d47/_f_fmpeg_session_complete_callback_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSessionCompleteCallback.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegSessionCompleteCallback.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H
+
21 #define FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H
+
22 
+
23 #include <iostream>
+
24 #include <memory>
+
25 #include <functional>
+
26 
+
27 namespace ffmpegkit {
+
28 
+ +
30 
+
52  typedef std::function<void(const std::shared_ptr<ffmpegkit::FFmpegSession> session)> FFmpegSessionCompleteCallback;
+
53 
+
54  #include "FFmpegSession.h"
+
55 
+
56 }
+
57 
+
58 #endif // FFMPEG_KIT_FFMPEG_SESSION_COMPLETE_CALLBACK_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
FFmpegSession.h
+
ffmpegkit::FFmpegSession
Definition: FFmpegSession.h:32
+ + + + diff --git a/docs/linux/html/d6/d53/struct_j_s_o_n_context.html b/docs/linux/html/d6/d53/struct_j_s_o_n_context.html new file mode 100644 index 0000000..2831d37 --- /dev/null +++ b/docs/linux/html/d6/d53/struct_j_s_o_n_context.html @@ -0,0 +1,181 @@ + + + + + + + +FFmpegKit Linux API: JSONContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
JSONContext Struct Reference
+
+
+ + + + + + + + + + + + +

+Data Fields

const AVClass * class
 
int indent_level
 
int compact
 
const char * item_sep
 
const char * item_start_end
 
+

Detailed Description

+
+

Definition at line 1474 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* JSONContext::class
+
+ +

Definition at line 1475 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact

+ +
+
+ + + + +
int JSONContext::compact
+
+ +

Definition at line 1477 of file fftools_ffprobe.c.

+ +
+
+ +

◆ indent_level

+ +
+
+ + + + +
int JSONContext::indent_level
+
+ +

Definition at line 1476 of file fftools_ffprobe.c.

+ +
+
+ +

◆ item_sep

+ +
+
+ + + + +
const char* JSONContext::item_sep
+
+ +

Definition at line 1478 of file fftools_ffprobe.c.

+ +
+
+ +

◆ item_start_end

+ +
+
+ + + + +
const char * JSONContext::item_start_end
+
+ +

Definition at line 1478 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d6/d69/struct_option_group.html b/docs/linux/html/d6/d69/struct_option_group.html new file mode 100644 index 0000000..8e5d316 --- /dev/null +++ b/docs/linux/html/d6/d69/struct_option_group.html @@ -0,0 +1,253 @@ + + + + + + + +FFmpegKit Linux API: OptionGroup Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionGroup Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

const OptionGroupDefgroup_def
 
const char * arg
 
Optionopts
 
int nb_opts
 
AVDictionary * codec_opts
 
AVDictionary * format_opts
 
AVDictionary * resample_opts
 
AVDictionary * sws_dict
 
AVDictionary * swr_opts
 
+

Detailed Description

+
+

Definition at line 300 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ arg

+ +
+
+ + + + +
const char* OptionGroup::arg
+
+ +

Definition at line 302 of file fftools_cmdutils.h.

+ +
+
+ +

◆ codec_opts

+ +
+
+ + + + +
AVDictionary* OptionGroup::codec_opts
+
+ +

Definition at line 307 of file fftools_cmdutils.h.

+ +
+
+ +

◆ format_opts

+ +
+
+ + + + +
AVDictionary* OptionGroup::format_opts
+
+ +

Definition at line 308 of file fftools_cmdutils.h.

+ +
+
+ +

◆ group_def

+ +
+
+ + + + +
const OptionGroupDef* OptionGroup::group_def
+
+ +

Definition at line 301 of file fftools_cmdutils.h.

+ +
+
+ +

◆ nb_opts

+ +
+
+ + + + +
int OptionGroup::nb_opts
+
+ +

Definition at line 305 of file fftools_cmdutils.h.

+ +
+
+ +

◆ opts

+ +
+
+ + + + +
Option* OptionGroup::opts
+
+ +

Definition at line 304 of file fftools_cmdutils.h.

+ +
+
+ +

◆ resample_opts

+ +
+
+ + + + +
AVDictionary* OptionGroup::resample_opts
+
+ +

Definition at line 309 of file fftools_cmdutils.h.

+ +
+
+ +

◆ swr_opts

+ +
+
+ + + + +
AVDictionary* OptionGroup::swr_opts
+
+ +

Definition at line 311 of file fftools_cmdutils.h.

+ +
+
+ +

◆ sws_dict

+ +
+
+ + + + +
AVDictionary* OptionGroup::sws_dict
+
+ +

Definition at line 310 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d6/d8f/_arch_detect_8h.html b/docs/linux/html/d6/d8f/_arch_detect_8h.html new file mode 100644 index 0000000..18faf9c --- /dev/null +++ b/docs/linux/html/d6/d8f/_arch_detect_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: ArchDetect.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
ArchDetect.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::ArchDetect
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d6/d8f/_arch_detect_8h_source.html b/docs/linux/html/d6/d8f/_arch_detect_8h_source.html new file mode 100644 index 0000000..d50f52c --- /dev/null +++ b/docs/linux/html/d6/d8f/_arch_detect_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +FFmpegKit Linux API: ArchDetect.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ArchDetect.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_ARCH_DETECT_H
+
21 #define FFMPEG_KIT_ARCH_DETECT_H
+
22 
+
23 #include <string>
+
24 
+
25 namespace ffmpegkit {
+
26 
+
30  class ArchDetect {
+
31  public:
+
32 
+
38  static std::string getArch();
+
39  };
+
40 
+
41 }
+
42 
+
43 #endif // FFMPEG_KIT_ARCH_DETECT_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::ArchDetect::getArch
static std::string getArch()
Definition: ArchDetect.cpp:26
+
ffmpegkit::ArchDetect
Definition: ArchDetect.h:30
+ + + + diff --git a/docs/linux/html/d6/df1/_statistics_callback_8h.html b/docs/linux/html/d6/df1/_statistics_callback_8h.html new file mode 100644 index 0000000..4b7f232 --- /dev/null +++ b/docs/linux/html/d6/df1/_statistics_callback_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: StatisticsCallback.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Typedefs
+
+
StatisticsCallback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> ffmpegkit::StatisticsCallback
 
+
+ + + + diff --git a/docs/linux/html/d6/df1/_statistics_callback_8h_source.html b/docs/linux/html/d6/df1/_statistics_callback_8h_source.html new file mode 100644 index 0000000..c06ad31 --- /dev/null +++ b/docs/linux/html/d6/df1/_statistics_callback_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +FFmpegKit Linux API: StatisticsCallback.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
StatisticsCallback.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_STATISTICS_CALLBACK_H
+
21 #define FFMPEG_KIT_STATISTICS_CALLBACK_H
+
22 
+
23 #include "Statistics.h"
+
24 #include <iostream>
+
25 #include <memory>
+
26 #include <functional>
+
27 
+
28 namespace ffmpegkit {
+
29 
+
35  typedef std::function<void(const std::shared_ptr<ffmpegkit::Statistics> statistics)> StatisticsCallback;
+
36 
+
37 }
+
38 
+
39 #endif // FFMPEG_KIT_STATISTICS_CALLBACK_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
Statistics.h
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+ + + + diff --git a/docs/linux/html/d6/df7/_packages_8cpp.html b/docs/linux/html/d6/df7/_packages_8cpp.html new file mode 100644 index 0000000..6cca95b --- /dev/null +++ b/docs/linux/html/d6/df7/_packages_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +FFmpegKit Linux API: Packages.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Macros
+
+
Packages.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Macros

#define contains_ext_lib(element)   enabledLibrarySet->find(element) != enabledLibrarySet->end()
 
+

Macro Definition Documentation

+ +

◆ contains_ext_lib

+ +
+
+ + + + + + + + +
#define contains_ext_lib( element)   enabledLibrarySet->find(element) != enabledLibrarySet->end()
+
+ +
+
+
+ + + + diff --git a/docs/linux/html/d6/df7/_packages_8cpp_source.html b/docs/linux/html/d6/df7/_packages_8cpp_source.html new file mode 100644 index 0000000..7bb3710 --- /dev/null +++ b/docs/linux/html/d6/df7/_packages_8cpp_source.html @@ -0,0 +1,331 @@ + + + + + + + +FFmpegKit Linux API: Packages.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Packages.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "Packages.h"
+
21 #include "config.h"
+
22 #include <memory>
+
23 #include <algorithm>
+
24 
+ +
26  std::shared_ptr<std::set<std::string>> enabledLibrarySet = getExternalLibraries();
+
27  #define contains_ext_lib(element) enabledLibrarySet->find(element) != enabledLibrarySet->end()
+
28  bool speex = contains_ext_lib("speex");
+
29  bool fribidi = contains_ext_lib("fribidi");
+
30  bool gnutls = contains_ext_lib("gnutls");
+
31  bool xvid = contains_ext_lib("xvid");
+
32 
+
33  bool min = false;
+
34  bool minGpl = false;
+
35  bool https = false;
+
36  bool httpsGpl = false;
+
37  bool audio = false;
+
38  bool video = false;
+
39  bool full = false;
+
40  bool fullGpl = false;
+
41 
+
42  if (speex && fribidi) {
+
43  if (xvid) {
+
44  fullGpl = true;
+
45  } else {
+
46  full = true;
+
47  }
+
48  } else if (speex) {
+
49  audio = true;
+
50  } else if (fribidi) {
+
51  video = true;
+
52  } else if (xvid) {
+
53  if (gnutls) {
+
54  httpsGpl = true;
+
55  } else {
+
56  minGpl = true;
+
57  }
+
58  } else {
+
59  if (gnutls) {
+
60  https = true;
+
61  } else {
+
62  min = true;
+
63  }
+
64  }
+
65 
+
66  if (fullGpl) {
+
67  if (contains_ext_lib("dav1d") &&
+
68  contains_ext_lib("fontconfig") &&
+
69  contains_ext_lib("freetype") &&
+
70  contains_ext_lib("fribidi") &&
+
71  contains_ext_lib("gmp") &&
+
72  contains_ext_lib("gnutls") &&
+
73  contains_ext_lib("kvazaar") &&
+
74  contains_ext_lib("mp3lame") &&
+
75  contains_ext_lib("libass") &&
+
76  contains_ext_lib("iconv") &&
+
77  contains_ext_lib("libilbc") &&
+
78  contains_ext_lib("libtheora") &&
+
79  contains_ext_lib("libvidstab") &&
+
80  contains_ext_lib("libvorbis") &&
+
81  contains_ext_lib("libvpx") &&
+
82  contains_ext_lib("libwebp") &&
+
83  contains_ext_lib("libxml2") &&
+
84  contains_ext_lib("opencore-amr") &&
+
85  contains_ext_lib("opus") &&
+
86  contains_ext_lib("shine") &&
+
87  contains_ext_lib("snappy") &&
+
88  contains_ext_lib("soxr") &&
+
89  contains_ext_lib("speex") &&
+
90  contains_ext_lib("twolame") &&
+
91  contains_ext_lib("x264") &&
+
92  contains_ext_lib("x265") &&
+
93  contains_ext_lib("xvid")) {
+
94  return "full-gpl";
+
95  } else {
+
96  return "custom";
+
97  }
+
98  }
+
99 
+
100  if (full) {
+
101  if (contains_ext_lib("dav1d") &&
+
102  contains_ext_lib("fontconfig") &&
+
103  contains_ext_lib("freetype") &&
+
104  contains_ext_lib("fribidi") &&
+
105  contains_ext_lib("gmp") &&
+
106  contains_ext_lib("gnutls") &&
+
107  contains_ext_lib("kvazaar") &&
+
108  contains_ext_lib("mp3lame") &&
+
109  contains_ext_lib("libass") &&
+
110  contains_ext_lib("iconv") &&
+
111  contains_ext_lib("libilbc") &&
+
112  contains_ext_lib("libtheora") &&
+
113  contains_ext_lib("libvorbis") &&
+
114  contains_ext_lib("libvpx") &&
+
115  contains_ext_lib("libwebp") &&
+
116  contains_ext_lib("libxml2") &&
+
117  contains_ext_lib("opencore-amr") &&
+
118  contains_ext_lib("opus") &&
+
119  contains_ext_lib("shine") &&
+
120  contains_ext_lib("snappy") &&
+
121  contains_ext_lib("soxr") &&
+
122  contains_ext_lib("speex") &&
+
123  contains_ext_lib("twolame")) {
+
124  return "full";
+
125  } else {
+
126  return "custom";
+
127  }
+
128  }
+
129 
+
130  if (video) {
+
131  if (contains_ext_lib("dav1d") &&
+
132  contains_ext_lib("fontconfig") &&
+
133  contains_ext_lib("freetype") &&
+
134  contains_ext_lib("fribidi") &&
+
135  contains_ext_lib("kvazaar") &&
+
136  contains_ext_lib("libass") &&
+
137  contains_ext_lib("iconv") &&
+
138  contains_ext_lib("libtheora") &&
+
139  contains_ext_lib("libvpx") &&
+
140  contains_ext_lib("libwebp") &&
+
141  contains_ext_lib("snappy")) {
+
142  return "video";
+
143  } else {
+
144  return "custom";
+
145  }
+
146  }
+
147 
+
148  if (audio) {
+
149  if (contains_ext_lib("mp3lame") &&
+
150  contains_ext_lib("libilbc") &&
+
151  contains_ext_lib("libvorbis") &&
+
152  contains_ext_lib("opencore-amr") &&
+
153  contains_ext_lib("opus") &&
+
154  contains_ext_lib("shine") &&
+
155  contains_ext_lib("soxr") &&
+
156  contains_ext_lib("speex") &&
+
157  contains_ext_lib("twolame")) {
+
158  return "audio";
+
159  } else {
+
160  return "custom";
+
161  }
+
162  }
+
163 
+
164  if (httpsGpl) {
+
165  if (contains_ext_lib("gmp") &&
+
166  contains_ext_lib("gnutls") &&
+
167  contains_ext_lib("libvidstab") &&
+
168  contains_ext_lib("x264") &&
+
169  contains_ext_lib("x265") &&
+
170  contains_ext_lib("xvid")) {
+
171  return "https-gpl";
+
172  } else {
+
173  return "custom";
+
174  }
+
175  }
+
176 
+
177  if (https) {
+
178  if (contains_ext_lib("gmp") &&
+
179  contains_ext_lib("gnutls")) {
+
180  return "https";
+
181  } else {
+
182  return "custom";
+
183  }
+
184  }
+
185 
+
186  if (minGpl) {
+
187  if (contains_ext_lib("libvidstab") &&
+
188  contains_ext_lib("x264") &&
+
189  contains_ext_lib("x265") &&
+
190  contains_ext_lib("xvid")) {
+
191  return "min-gpl";
+
192  } else {
+
193  return "custom";
+
194  }
+
195  }
+
196 
+
197  return "min";
+
198 }
+
199 
+
200 std::shared_ptr<std::set<std::string>> ffmpegkit::Packages::getExternalLibraries() {
+
201  const std::set<const char*> supportedExternalLibraries{
+
202  "dav1d",
+
203  "fontconfig",
+
204  "freetype",
+
205  "fribidi",
+
206  "gmp",
+
207  "gnutls",
+
208  "kvazaar",
+
209  "mp3lame",
+
210  "libaom",
+
211  "libass",
+
212  "iconv",
+
213  "libilbc",
+
214  "libtheora",
+
215  "libvidstab",
+
216  "libvorbis",
+
217  "libvpx",
+
218  "libwebp",
+
219  "libxml2",
+
220  "opencore-amr",
+
221  "openh264",
+
222  "opus",
+
223  "rubberband",
+
224  "sdl2",
+
225  "shine",
+
226  "snappy",
+
227  "soxr",
+
228  "speex",
+
229  "tesseract",
+
230  "twolame",
+
231  "x264",
+
232  "x265",
+
233  "xvid"};
+
234  std::string buildConfiguration(FFMPEG_CONFIGURATION);
+
235  char libraryName1[50];
+
236  char libraryName2[50];
+
237  std::shared_ptr<std::set<std::string>> enabledLibrarySet = std::make_shared<std::set<std::string>>();
+
238 
+
239  std::for_each(supportedExternalLibraries.cbegin(), supportedExternalLibraries.cend(), [&](const char* supportedExternalLibrary) {
+
240  sprintf(libraryName1, "enable-%s", supportedExternalLibrary);
+
241  sprintf(libraryName2, "enable-lib%s", supportedExternalLibrary);
+
242 
+
243  if (buildConfiguration.find(libraryName1) != std::string::npos || buildConfiguration.find(libraryName2) != std::string::npos) {
+
244  enabledLibrarySet->insert(supportedExternalLibrary);
+
245  }
+
246  });
+
247 
+
248  return enabledLibrarySet;
+
249 }
+
+
ffmpegkit::Packages::getPackageName
static std::string getPackageName()
Definition: Packages.cpp:25
+
contains_ext_lib
#define contains_ext_lib(element)
+
ffmpegkit::Packages::getExternalLibraries
static std::shared_ptr< std::set< std::string > > getExternalLibraries()
Definition: Packages.cpp:200
+
Packages.h
+ + + + diff --git a/docs/linux/html/d6/dff/struct_writer.html b/docs/linux/html/d6/dff/struct_writer.html new file mode 100644 index 0000000..c4316b7 --- /dev/null +++ b/docs/linux/html/d6/dff/struct_writer.html @@ -0,0 +1,298 @@ + + + + + + + +FFmpegKit Linux API: Writer Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
Writer Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

const AVClass * priv_class
 private class of the writer, if any More...
 
int priv_size
 private size for the writer context More...
 
const char * name
 
int(* init )(WriterContext *wctx)
 
void(* uninit )(WriterContext *wctx)
 
void(* print_section_header )(WriterContext *wctx)
 
void(* print_section_footer )(WriterContext *wctx)
 
void(* print_integer )(WriterContext *wctx, const char *, long long int)
 
void(* print_rational )(WriterContext *wctx, AVRational *q, char *sep)
 
void(* print_string )(WriterContext *wctx, const char *, const char *)
 
int flags
 a combination or WRITER_FLAG_* More...
 
+

Detailed Description

+
+

Definition at line 447 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ flags

+ +
+
+ + + + +
int Writer::flags
+
+ +

a combination or WRITER_FLAG_*

+ +

Definition at line 460 of file fftools_ffprobe.c.

+ +
+
+ +

◆ init

+ +
+
+ + + + +
int(* Writer::init) (WriterContext *wctx)
+
+ +

Definition at line 452 of file fftools_ffprobe.c.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* Writer::name
+
+ +

Definition at line 450 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_integer

+ +
+
+ + + + +
void(* Writer::print_integer) (WriterContext *wctx, const char *, long long int)
+
+ +

Definition at line 457 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_rational

+ +
+
+ + + + +
void(* Writer::print_rational) (WriterContext *wctx, AVRational *q, char *sep)
+
+ +

Definition at line 458 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section_footer

+ +
+
+ + + + +
void(* Writer::print_section_footer) (WriterContext *wctx)
+
+ +

Definition at line 456 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section_header

+ +
+
+ + + + +
void(* Writer::print_section_header) (WriterContext *wctx)
+
+ +

Definition at line 455 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_string

+ +
+
+ + + + +
void(* Writer::print_string) (WriterContext *wctx, const char *, const char *)
+
+ +

Definition at line 459 of file fftools_ffprobe.c.

+ +
+
+ +

◆ priv_class

+ +
+
+ + + + +
const AVClass* Writer::priv_class
+
+ +

private class of the writer, if any

+ +

Definition at line 448 of file fftools_ffprobe.c.

+ +
+
+ +

◆ priv_size

+ +
+
+ + + + +
int Writer::priv_size
+
+ +

private size for the writer context

+ +

Definition at line 449 of file fftools_ffprobe.c.

+ +
+
+ +

◆ uninit

+ +
+
+ + + + +
void(* Writer::uninit) (WriterContext *wctx)
+
+ +

Definition at line 453 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d7/d0c/struct_input_filter.html b/docs/linux/html/d7/d0c/struct_input_filter.html new file mode 100644 index 0000000..60e586a --- /dev/null +++ b/docs/linux/html/d7/d0c/struct_input_filter.html @@ -0,0 +1,361 @@ + + + + + + + +FFmpegKit Linux API: InputFilter Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
InputFilter Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

AVFilterContext * filter
 
struct InputStreamist
 
struct FilterGraphgraph
 
uint8_t * name
 
enum AVMediaType type
 
AVFifoBuffer * frame_queue
 
int format
 
int width
 
int height
 
AVRational sample_aspect_ratio
 
int sample_rate
 
int channels
 
uint64_t channel_layout
 
AVBufferRef * hw_frames_ctx
 
int eof
 
+

Detailed Description

+
+

Definition at line 264 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ channel_layout

+ +
+
+ + + + +
uint64_t InputFilter::channel_layout
+
+ +

Definition at line 281 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ channels

+ +
+
+ + + + +
int InputFilter::channels
+
+ +

Definition at line 280 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ eof

+ +
+
+ + + + +
int InputFilter::eof
+
+ +

Definition at line 285 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter

+ +
+
+ + + + +
AVFilterContext* InputFilter::filter
+
+ +

Definition at line 265 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ format

+ +
+
+ + + + +
int InputFilter::format
+
+ +

Definition at line 274 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_queue

+ +
+
+ + + + +
AVFifoBuffer* InputFilter::frame_queue
+
+ +

Definition at line 271 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ graph

+ +
+
+ + + + +
struct FilterGraph* InputFilter::graph
+
+ +

Definition at line 267 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ height

+ +
+
+ + + + +
int InputFilter::height
+
+ +

Definition at line 276 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hw_frames_ctx

+ +
+
+ + + + +
AVBufferRef* InputFilter::hw_frames_ctx
+
+ +

Definition at line 283 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ist

+ +
+
+ + + + +
struct InputStream* InputFilter::ist
+
+ +

Definition at line 266 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
uint8_t* InputFilter::name
+
+ +

Definition at line 268 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sample_aspect_ratio

+ +
+
+ + + + +
AVRational InputFilter::sample_aspect_ratio
+
+ +

Definition at line 277 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sample_rate

+ +
+
+ + + + +
int InputFilter::sample_rate
+
+ +

Definition at line 279 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ type

+ +
+
+ + + + +
enum AVMediaType InputFilter::type
+
+ +

Definition at line 269 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ width

+ +
+
+ + + + +
int InputFilter::width
+
+ +

Definition at line 276 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d7/d2d/_stream_information_8cpp.html b/docs/linux/html/d7/d2d/_stream_information_8cpp.html new file mode 100644 index 0000000..cfefa2a --- /dev/null +++ b/docs/linux/html/d7/d2d/_stream_information_8cpp.html @@ -0,0 +1,80 @@ + + + + + + + +FFmpegKit Linux API: StreamInformation.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
StreamInformation.cpp File Reference
+
+
+ +

Go to the source code of this file.

+
+ + + + diff --git a/docs/linux/html/d7/d2d/_stream_information_8cpp_source.html b/docs/linux/html/d7/d2d/_stream_information_8cpp_source.html new file mode 100644 index 0000000..6629764 --- /dev/null +++ b/docs/linux/html/d7/d2d/_stream_information_8cpp_source.html @@ -0,0 +1,233 @@ + + + + + + + +FFmpegKit Linux API: StreamInformation.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
StreamInformation.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "StreamInformation.h"
+
21 
+
22 ffmpegkit::StreamInformation::StreamInformation(std::shared_ptr<rapidjson::Value> streamInformationValue) : _streamInformationValue{streamInformationValue} {
+
23 }
+
24 
+
25 std::shared_ptr<int64_t> ffmpegkit::StreamInformation::getIndex() {
+
26  return getNumberProperty(KeyIndex);
+
27 }
+
28 
+
29 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getType() {
+
30  return getStringProperty(KeyType);
+
31 }
+
32 
+
33 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getCodec() {
+
34  return getStringProperty(KeyCodec);
+
35 }
+
36 
+
37 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getCodecLong() {
+
38  return getStringProperty(KeyCodecLong);
+
39 }
+
40 
+
41 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getFormat() {
+
42  return getStringProperty(KeyFormat);
+
43 }
+
44 
+
45 std::shared_ptr<int64_t> ffmpegkit::StreamInformation::getWidth() {
+
46  return getNumberProperty(KeyWidth);
+
47 }
+
48 
+
49 std::shared_ptr<int64_t> ffmpegkit::StreamInformation::getHeight() {
+
50  return getNumberProperty(KeyHeight);
+
51 }
+
52 
+
53 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getBitrate() {
+
54  return getStringProperty(KeyBitRate);
+
55 }
+
56 
+
57 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getSampleRate() {
+
58  return getStringProperty(KeySampleRate);
+
59 }
+
60 
+
61 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getSampleFormat() {
+
62  return getStringProperty(KeySampleFormat);
+
63 }
+
64 
+
65 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getChannelLayout() {
+
66  return getStringProperty(KeyChannelLayout);
+
67 }
+
68 
+ +
70  return getStringProperty(KeySampleAspectRatio);
+
71 }
+
72 
+ +
74  return getStringProperty(KeyDisplayAspectRatio);
+
75 }
+
76 
+
77 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getAverageFrameRate() {
+
78  return getStringProperty(KeyAverageFrameRate);
+
79 }
+
80 
+
81 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getRealFrameRate() {
+
82  return getStringProperty(KeyRealFrameRate);
+
83 }
+
84 
+
85 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getTimeBase() {
+
86  return getStringProperty(KeyTimeBase);
+
87 }
+
88 
+
89 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getCodecTimeBase() {
+
90  return getStringProperty(KeyCodecTimeBase);
+
91 }
+
92 
+
93 std::shared_ptr<rapidjson::Value> ffmpegkit::StreamInformation::getTags() {
+
94  return getProperties(KeyTags);
+
95 }
+
96 
+
97 std::shared_ptr<std::string> ffmpegkit::StreamInformation::getStringProperty(const char* key) {
+
98  if (_streamInformationValue->HasMember(key)) {
+
99  return std::make_shared<std::string>((*_streamInformationValue)[key].GetString());
+
100  } else {
+
101  return nullptr;
+
102  }
+
103 }
+
104 
+
105 std::shared_ptr<int64_t> ffmpegkit::StreamInformation::getNumberProperty(const char* key) {
+
106  if (_streamInformationValue->HasMember(key)) {
+
107  return std::make_shared<int64_t>((*_streamInformationValue)[key].GetInt64());
+
108  } else {
+
109  return nullptr;
+
110  }
+
111 }
+
112 
+
113 std::shared_ptr<rapidjson::Value> ffmpegkit::StreamInformation::getProperties(const char* key) {
+
114  if (_streamInformationValue->HasMember(key)) {
+
115  auto value = std::make_shared<rapidjson::Value>();
+
116  *value = (*_streamInformationValue)[key];
+
117  return value;
+
118  } else {
+
119  return nullptr;
+
120  }
+
121 }
+
122 
+
123 std::shared_ptr<rapidjson::Value> ffmpegkit::StreamInformation::getAllProperties() {
+
124  if (_streamInformationValue != nullptr) {
+
125  auto all = std::make_shared<rapidjson::Value>();
+
126  *all = (*_streamInformationValue);
+
127  return all;
+
128  } else {
+
129  return nullptr;
+
130  }
+
131 }
+
+
ffmpegkit::StreamInformation::getCodec
std::shared_ptr< std::string > getCodec()
Definition: StreamInformation.cpp:33
+
StreamInformation.h
+
ffmpegkit::StreamInformation::getTimeBase
std::shared_ptr< std::string > getTimeBase()
Definition: StreamInformation.cpp:85
+
ffmpegkit::StreamInformation::getBitrate
std::shared_ptr< std::string > getBitrate()
Definition: StreamInformation.cpp:53
+
ffmpegkit::StreamInformation::getDisplayAspectRatio
std::shared_ptr< std::string > getDisplayAspectRatio()
Definition: StreamInformation.cpp:73
+
ffmpegkit::StreamInformation::getWidth
std::shared_ptr< int64_t > getWidth()
Definition: StreamInformation.cpp:45
+
ffmpegkit::StreamInformation::getSampleFormat
std::shared_ptr< std::string > getSampleFormat()
Definition: StreamInformation.cpp:61
+
ffmpegkit::StreamInformation::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: StreamInformation.cpp:97
+
ffmpegkit::StreamInformation::getFormat
std::shared_ptr< std::string > getFormat()
Definition: StreamInformation.cpp:41
+
ffmpegkit::StreamInformation::getIndex
std::shared_ptr< int64_t > getIndex()
Definition: StreamInformation.cpp:25
+
ffmpegkit::StreamInformation::getHeight
std::shared_ptr< int64_t > getHeight()
Definition: StreamInformation.cpp:49
+
ffmpegkit::StreamInformation::getAverageFrameRate
std::shared_ptr< std::string > getAverageFrameRate()
Definition: StreamInformation.cpp:77
+
ffmpegkit::StreamInformation::StreamInformation
StreamInformation(std::shared_ptr< rapidjson::Value > streamInformationValue)
Definition: StreamInformation.cpp:22
+
ffmpegkit::StreamInformation::getCodecTimeBase
std::shared_ptr< std::string > getCodecTimeBase()
Definition: StreamInformation.cpp:89
+
ffmpegkit::StreamInformation::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: StreamInformation.cpp:123
+
ffmpegkit::StreamInformation::getCodecLong
std::shared_ptr< std::string > getCodecLong()
Definition: StreamInformation.cpp:37
+
ffmpegkit::StreamInformation::getType
std::shared_ptr< std::string > getType()
Definition: StreamInformation.cpp:29
+
ffmpegkit::StreamInformation::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: StreamInformation.cpp:113
+
ffmpegkit::StreamInformation::getChannelLayout
std::shared_ptr< std::string > getChannelLayout()
Definition: StreamInformation.cpp:65
+
ffmpegkit::StreamInformation::getSampleAspectRatio
std::shared_ptr< std::string > getSampleAspectRatio()
Definition: StreamInformation.cpp:69
+
ffmpegkit::StreamInformation::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: StreamInformation.cpp:105
+
ffmpegkit::StreamInformation::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: StreamInformation.cpp:93
+
ffmpegkit::StreamInformation::getRealFrameRate
std::shared_ptr< std::string > getRealFrameRate()
Definition: StreamInformation.cpp:81
+
ffmpegkit::StreamInformation::getSampleRate
std::shared_ptr< std::string > getSampleRate()
Definition: StreamInformation.cpp:57
+ + + + diff --git a/docs/linux/html/d7/d3a/_media_information_json_parser_8h.html b/docs/linux/html/d7/d3a/_media_information_json_parser_8h.html new file mode 100644 index 0000000..35c9c30 --- /dev/null +++ b/docs/linux/html/d7/d3a/_media_information_json_parser_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationJsonParser.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
MediaInformationJsonParser.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::MediaInformationJsonParser
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d7/d3a/_media_information_json_parser_8h_source.html b/docs/linux/html/d7/d3a/_media_information_json_parser_8h_source.html new file mode 100644 index 0000000..8eb1730 --- /dev/null +++ b/docs/linux/html/d7/d3a/_media_information_json_parser_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationJsonParser.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformationJsonParser.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_MEDIA_INFORMATION_PARSER_H
+
21 #define FFMPEG_KIT_MEDIA_INFORMATION_PARSER_H
+
22 
+
23 #include "MediaInformation.h"
+
24 #include <memory>
+
25 
+
26 namespace ffmpegkit {
+
27 
+ +
32  public:
+
33 
+
40  static std::shared_ptr<ffmpegkit::MediaInformation> from(const std::string& ffprobeJsonOutput);
+
41 
+
49  static std::shared_ptr<ffmpegkit::MediaInformation> fromWithError(const std::string& ffprobeJsonOutput, std::string& error);
+
50 
+
51  };
+
52 
+
53 }
+
54 
+
55 #endif // FFMPEG_KIT_MEDIA_INFORMATION_PARSER_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::MediaInformationJsonParser::from
static std::shared_ptr< ffmpegkit::MediaInformation > from(const std::string &ffprobeJsonOutput)
Definition: MediaInformationJsonParser.cpp:31
+
MediaInformation.h
+
ffmpegkit::MediaInformationJsonParser
Definition: MediaInformationJsonParser.h:31
+
ffmpegkit::MediaInformationJsonParser::fromWithError
static std::shared_ptr< ffmpegkit::MediaInformation > fromWithError(const std::string &ffprobeJsonOutput, std::string &error)
Definition: MediaInformationJsonParser.cpp:42
+ + + + diff --git a/docs/linux/html/d7/d48/fftools__ffmpeg_8c.html b/docs/linux/html/d7/d48/fftools__ffmpeg_8c.html new file mode 100644 index 0000000..172a0e7 --- /dev/null +++ b/docs/linux/html/d7/d48/fftools__ffmpeg_8c.html @@ -0,0 +1,5838 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Macros | +Typedefs | +Functions | +Variables
+
+
fftools_ffmpeg.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  BenchmarkTimeStamps
 
+ + + + + +

+Macros

#define SIGNAL(sig, func)   signal(sig, func)
 
#define OFFSET(x)   offsetof(OptionsContext, x)
 
+ + + +

+Typedefs

typedef struct BenchmarkTimeStamps BenchmarkTimeStamps
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void do_video_stats (OutputStream *ost, int frame_size)
 
static BenchmarkTimeStamps get_benchmark_time_stamps (void)
 
static int64_t getmaxrss (void)
 
static int ifilter_has_all_input_formats (FilterGraph *fg)
 
int opt_map (void *optctx, const char *opt, const char *arg)
 
int opt_map_channel (void *optctx, const char *opt, const char *arg)
 
int opt_recording_timestamp (void *optctx, const char *opt, const char *arg)
 
int opt_data_frames (void *optctx, const char *opt, const char *arg)
 
int opt_progress (void *optctx, const char *opt, const char *arg)
 
int opt_target (void *optctx, const char *opt, const char *arg)
 
int opt_vsync (void *optctx, const char *opt, const char *arg)
 
int opt_abort_on (void *optctx, const char *opt, const char *arg)
 
int opt_stats_period (void *optctx, const char *opt, const char *arg)
 
int opt_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_profile (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex_script (void *optctx, const char *opt, const char *arg)
 
int opt_attach (void *optctx, const char *opt, const char *arg)
 
int opt_video_frames (void *optctx, const char *opt, const char *arg)
 
int opt_video_codec (void *optctx, const char *opt, const char *arg)
 
int opt_sameq (void *optctx, const char *opt, const char *arg)
 
int opt_timecode (void *optctx, const char *opt, const char *arg)
 
int opt_vstats_file (void *optctx, const char *opt, const char *arg)
 
int opt_vstats (void *optctx, const char *opt, const char *arg)
 
int opt_old2new (void *optctx, const char *opt, const char *arg)
 
int opt_streamid (void *optctx, const char *opt, const char *arg)
 
int opt_bitrate (void *optctx, const char *opt, const char *arg)
 
int show_hwaccels (void *optctx, const char *opt, const char *arg)
 
int opt_video_filters (void *optctx, const char *opt, const char *arg)
 
int opt_audio_frames (void *optctx, const char *opt, const char *arg)
 
int opt_audio_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_audio_codec (void *optctx, const char *opt, const char *arg)
 
int opt_channel_layout (void *optctx, const char *opt, const char *arg)
 
int opt_preset (void *optctx, const char *opt, const char *arg)
 
int opt_audio_filters (void *optctx, const char *opt, const char *arg)
 
int opt_subtitle_codec (void *optctx, const char *opt, const char *arg)
 
int opt_video_channel (void *optctx, const char *opt, const char *arg)
 
int opt_video_standard (void *optctx, const char *opt, const char *arg)
 
int opt_sdp_file (void *optctx, const char *opt, const char *arg)
 
int opt_data_codec (void *optctx, const char *opt, const char *arg)
 
int opt_vaapi_device (void *optctx, const char *opt, const char *arg)
 
int opt_init_hw_device (void *optctx, const char *opt, const char *arg)
 
int opt_filter_hw_device (void *optctx, const char *opt, const char *arg)
 
void cancelSession (long sessionId)
 
int cancelRequested (long sessionId)
 
static int sub2video_get_blank_frame (InputStream *ist)
 
static void sub2video_copy_rect (uint8_t *dst, int dst_linesize, int w, int h, AVSubtitleRect *r)
 
static void sub2video_push_ref (InputStream *ist, int64_t pts)
 
void sub2video_update (InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
 
static void sub2video_heartbeat (InputStream *ist, int64_t pts)
 
static void sub2video_flush (InputStream *ist)
 
static void term_exit_sigsafe (void)
 
void term_exit (void)
 
static void sigterm_handler (int sig)
 
void term_init (void)
 
static int read_key (void)
 
int decode_interrupt_cb (void *ctx)
 
static void ffmpeg_cleanup (int ret)
 
void remove_avoptions (AVDictionary **a, AVDictionary *b)
 
void assert_avoptions (AVDictionary *m)
 
static void abort_codec_experimental (const AVCodec *c, int encoder)
 
static void update_benchmark (const char *fmt,...)
 
static void close_all_output_streams (OutputStream *ost, OSTFinished this_stream, OSTFinished others)
 
static void write_packet (OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
 
static void close_output_stream (OutputStream *ost)
 
static void output_packet (OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof)
 
static int check_recording_time (OutputStream *ost)
 
static double adjust_frame_pts_to_encoder_tb (OutputFile *of, OutputStream *ost, AVFrame *frame)
 
static int init_output_stream (OutputStream *ost, AVFrame *frame, char *error, int error_len)
 
static int init_output_stream_wrapper (OutputStream *ost, AVFrame *frame, unsigned int fatal)
 
static void do_audio_out (OutputFile *of, OutputStream *ost, AVFrame *frame)
 
static void do_subtitle_out (OutputFile *of, OutputStream *ost, AVSubtitle *sub)
 
static void do_video_out (OutputFile *of, OutputStream *ost, AVFrame *next_picture)
 
static double psnr (double d)
 
static void finish_output_stream (OutputStream *ost)
 
static int reap_filters (int flush)
 
static void print_final_stats (int64_t total_size)
 
static void forward_report (int is_last_report, int64_t timer_start, int64_t cur_time)
 
static void print_report (int is_last_report, int64_t timer_start, int64_t cur_time)
 
static void ifilter_parameters_from_codecpar (InputFilter *ifilter, AVCodecParameters *par)
 
static void flush_encoders (void)
 
static int check_output_constraints (InputStream *ist, OutputStream *ost)
 
static void do_streamcopy (InputStream *ist, OutputStream *ost, const AVPacket *pkt)
 
int guess_input_channel_layout (InputStream *ist)
 
static void check_decode_result (InputStream *ist, int *got_output, int ret)
 
static int ifilter_send_frame (InputFilter *ifilter, AVFrame *frame)
 
static int ifilter_send_eof (InputFilter *ifilter, int64_t pts)
 
static int decode (AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
 
static int send_frame_to_filters (InputStream *ist, AVFrame *decoded_frame)
 
static int decode_audio (InputStream *ist, AVPacket *pkt, int *got_output, int *decode_failed)
 
static int decode_video (InputStream *ist, AVPacket *pkt, int *got_output, int64_t *duration_pts, int eof, int *decode_failed)
 
static int transcode_subtitles (InputStream *ist, AVPacket *pkt, int *got_output, int *decode_failed)
 
static int send_filter_eof (InputStream *ist)
 
static int process_input_packet (InputStream *ist, const AVPacket *pkt, int no_eof)
 
static void print_sdp (void)
 
static enum AVPixelFormat get_format (AVCodecContext *s, const enum AVPixelFormat *pix_fmts)
 
static int get_buffer (AVCodecContext *s, AVFrame *frame, int flags)
 
static int init_input_stream (int ist_index, char *error, int error_len)
 
static InputStreamget_input_stream (OutputStream *ost)
 
static int compare_int64 (const void *a, const void *b)
 
static int check_init_output_file (OutputFile *of, int file_index)
 
static int init_output_bsfs (OutputStream *ost)
 
static int init_output_stream_streamcopy (OutputStream *ost)
 
static void set_encoder_id (OutputFile *of, OutputStream *ost)
 
static void parse_forced_key_frames (char *kf, OutputStream *ost, AVCodecContext *avctx)
 
static void init_encoder_time_base (OutputStream *ost, AVRational default_time_base)
 
static int init_output_stream_encode (OutputStream *ost, AVFrame *frame)
 
static void report_new_stream (int input_index, AVPacket *pkt)
 
static int transcode_init (void)
 
static int need_output (void)
 
static OutputStreamchoose_output (void)
 
static void set_tty_echo (int on)
 
static int check_keyboard_interaction (int64_t cur_time)
 
static int get_input_packet (InputFile *f, AVPacket **pkt)
 
static int got_eagain (void)
 
static void reset_eagain (void)
 
static AVRational duration_max (int64_t tmp, int64_t *duration, AVRational tmp_time_base, AVRational time_base)
 
static int seek_to_start (InputFile *ifile, AVFormatContext *is)
 
static int process_input (int file_index)
 
static int transcode_from_filter (FilterGraph *graph, InputStream **best_ist)
 
static int transcode_step (void)
 
static int transcode (void)
 
static void log_callback_null (void *ptr, int level, const char *fmt, va_list vl)
 
void ffmpeg_var_cleanup ()
 
void set_report_callback (void(*callback)(int, float, float, int64_t, int, double, double))
 
void cancel_operation (long id)
 
int ffmpeg_execute (int argc, char **argv)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

static FILE * vstats_file
 
const char *const forced_keyframes_const_names []
 
__thread int run_as_daemon = 0
 
__thread int nb_frames_dup = 0
 
__thread unsigned dup_warning = 1000
 
__thread int nb_frames_drop = 0
 
__thread int64_t decode_error_stat [2]
 
__thread unsigned nb_output_dumped = 0
 
__thread int want_sdp = 1
 
__thread BenchmarkTimeStamps current_time
 
__thread AVIOContext * progress_avio = NULL
 
__thread uint8_t * subtitle_out
 
__thread InputStream ** input_streams = NULL
 
__thread int nb_input_streams = 0
 
__thread InputFile ** input_files = NULL
 
__thread int nb_input_files = 0
 
__thread OutputStream ** output_streams = NULL
 
__thread int nb_output_streams = 0
 
__thread OutputFile ** output_files = NULL
 
__thread int nb_output_files = 0
 
__thread FilterGraph ** filtergraphs
 
__thread int nb_filtergraphs
 
__thread int64_t last_time = -1
 
__thread int64_t keyboard_last_time = 0
 
__thread int first_report = 1
 
__thread int qp_histogram [52]
 
void(* report_callback )(int, float, float, int64_t, int, double, double) = NULL
 
__thread int file_overwrite
 
__thread int no_file_overwrite
 
__thread int ignore_unknown_streams
 
__thread int copy_unknown_streams
 
__thread int intra_only
 
__thread int do_psnr
 
__thread int input_sync
 
volatile int handleSIGQUIT
 
volatile int handleSIGINT
 
volatile int handleSIGTERM
 
volatile int handleSIGXCPU
 
volatile int handleSIGPIPE
 
__thread volatile long globalSessionId
 
static volatile int received_sigterm = 0
 
static volatile int received_nb_signals = 0
 
__thread atomic_int transcode_init_done = ATOMIC_VAR_INIT(0)
 
__thread volatile int ffmpeg_exited = 0
 
__thread volatile int main_ffmpeg_return_code = 0
 
__thread int64_t copy_ts_first_pts = AV_NOPTS_VALUE
 
__thread volatile int longjmp_value
 
const __thread AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }
 
__thread OptionDefffmpeg_options = NULL
 
+

Detailed Description

+

multimedia converter based on the FFmpeg libraries

+ +

Definition in file fftools_ffmpeg.c.

+

Macro Definition Documentation

+ +

◆ OFFSET

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(OptionsContext, x)
+
+ +
+
+ +

◆ SIGNAL

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define SIGNAL( sig,
 func 
)   signal(sig, func)
+
+ +

Definition at line 491 of file fftools_ffmpeg.c.

+ +
+
+

Typedef Documentation

+ +

◆ BenchmarkTimeStamps

+ +
+
+ + + + +
typedef struct BenchmarkTimeStamps BenchmarkTimeStamps
+
+ +
+
+

Function Documentation

+ +

◆ abort_codec_experimental()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void abort_codec_experimental (const AVCodec * c,
int encoder 
)
+
+static
+
+ +

Definition at line 800 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ adjust_frame_pts_to_encoder_tb()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static double adjust_frame_pts_to_encoder_tb (OutputFileof,
OutputStreamost,
AVFrame * frame 
)
+
+static
+
+ +

Definition at line 1042 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ assert_avoptions()

+ +
+
+ + + + + + + + +
void assert_avoptions (AVDictionary * m)
+
+ +

Definition at line 791 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ cancel_operation()

+ +
+
+ + + + + + + + +
void cancel_operation (long id)
+
+ +

Definition at line 5199 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ cancelRequested()

+ +
+
+ + + + + + + + +
int cancelRequested (long sessionId)
+
+

Checks whether a cancel request for the given session id exists in the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+
Returns
1 if exists, false otherwise
+ +

Definition at line 437 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ cancelSession()

+ +
+
+ + + + + + + + +
void cancelSession (long sessionId)
+
+

Adds a cancel session request to the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+ +

Definition at line 427 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ check_decode_result()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void check_decode_result (InputStreamist,
intgot_output,
int ret 
)
+
+static
+
+ +

Definition at line 2323 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ check_init_output_file()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int check_init_output_file (OutputFileof,
int file_index 
)
+
+static
+
+ +

Definition at line 3212 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ check_keyboard_interaction()

+ +
+
+ + + + + +
+ + + + + + + + +
static int check_keyboard_interaction (int64_t cur_time)
+
+static
+
+ +

Definition at line 4172 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ check_output_constraints()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int check_output_constraints (InputStreamist,
OutputStreamost 
)
+
+static
+
+ +

Definition at line 2209 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ check_recording_time()

+ +
+
+ + + + + +
+ + + + + + + + +
static int check_recording_time (OutputStreamost)
+
+static
+
+ +

Definition at line 1029 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ choose_output()

+ +
+
+ + + + + +
+ + + + + + + + +
static OutputStream* choose_output (void )
+
+static
+
+

Select the output stream to process.

+
Returns
selected output stream, or NULL if none available
+ +

Definition at line 4133 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ close_all_output_streams()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void close_all_output_streams (OutputStreamost,
OSTFinished this_stream,
OSTFinished others 
)
+
+static
+
+ +

Definition at line 826 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ close_output_stream()

+ +
+
+ + + + + +
+ + + + + + + + +
static void close_output_stream (OutputStreamost)
+
+static
+
+ +

Definition at line 981 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ compare_int64()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int compare_int64 (const void * a,
const void * b 
)
+
+static
+
+ +

Definition at line 3206 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ decode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int decode (AVCodecContext * avctx,
AVFrame * frame,
intgot_frame,
AVPacket * pkt 
)
+
+static
+
+ +

Definition at line 2461 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ decode_audio()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int decode_audio (InputStreamist,
AVPacket * pkt,
intgot_output,
intdecode_failed 
)
+
+static
+
+ +

Definition at line 2510 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ decode_interrupt_cb()

+ +
+
+ + + + + + + + +
int decode_interrupt_cb (void * ctx)
+
+ +

Definition at line 612 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ decode_video()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int decode_video (InputStreamist,
AVPacket * pkt,
intgot_output,
int64_t * duration_pts,
int eof,
intdecode_failed 
)
+
+static
+
+ +

Definition at line 2572 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_audio_out()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void do_audio_out (OutputFileof,
OutputStreamost,
AVFrame * frame 
)
+
+static
+
+ +

Definition at line 1107 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_streamcopy()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void do_streamcopy (InputStreamist,
OutputStreamost,
const AVPacket * pkt 
)
+
+static
+
+ +

Definition at line 2226 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_subtitle_out()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void do_subtitle_out (OutputFileof,
OutputStreamost,
AVSubtitle * sub 
)
+
+static
+
+ +

Definition at line 1165 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_video_out()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void do_video_out (OutputFileof,
OutputStreamost,
AVFrame * next_picture 
)
+
+static
+
+ +

Definition at line 1248 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_video_stats()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void do_video_stats (OutputStreamost,
int frame_size 
)
+
+static
+
+ +

Definition at line 1549 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ duration_max()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static AVRational duration_max (int64_t tmp,
int64_t * duration,
AVRational tmp_time_base,
AVRational time_base 
)
+
+static
+
+ +

Definition at line 4452 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpeg_cleanup()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ffmpeg_cleanup (int ret)
+
+static
+
+ +

Definition at line 619 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpeg_execute()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ffmpeg_execute (int argc,
char ** argv 
)
+
+

Forward declaration for function defined in fftools_ffmpeg.c

+ +

Definition at line 5210 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpeg_var_cleanup()

+ +
+
+ + + + + + + +
void ffmpeg_var_cleanup ()
+
+ +

Definition at line 5158 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ finish_output_stream()

+ +
+
+ + + + + +
+ + + + + + + + +
static void finish_output_stream (OutputStreamost)
+
+static
+
+ +

Definition at line 1592 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ flush_encoders()

+ +
+
+ + + + + +
+ + + + + + + + +
static void flush_encoders (void )
+
+static
+
+ +

Definition at line 2102 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ forward_report()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void forward_report (int is_last_report,
int64_t timer_start,
int64_t cur_time 
)
+
+static
+
+ +

Definition at line 1811 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ get_benchmark_time_stamps()

+ +
+
+ + + + + +
+ + + + + + + + +
static BenchmarkTimeStamps get_benchmark_time_stamps (void )
+
+static
+
+ +

Definition at line 5110 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ get_buffer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int get_buffer (AVCodecContext * s,
AVFrame * frame,
int flags 
)
+
+static
+
+ +

Definition at line 3121 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ get_format()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static enum AVPixelFormat get_format (AVCodecContext * s,
const enum AVPixelFormat * pix_fmts 
)
+
+static
+
+ +

Definition at line 3035 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ get_input_packet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int get_input_packet (InputFilef,
AVPacket ** pkt 
)
+
+static
+
+ +

Definition at line 4404 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ get_input_stream()

+ +
+
+ + + + + +
+ + + + + + + + +
static InputStream* get_input_stream (OutputStreamost)
+
+static
+
+ +

Definition at line 3199 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ getmaxrss()

+ +
+
+ + + + + +
+ + + + + + + + +
static int64_t getmaxrss (void )
+
+static
+
+ +

Definition at line 5136 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ got_eagain()

+ +
+
+ + + + + +
+ + + + + + + + +
static int got_eagain (void )
+
+static
+
+ +

Definition at line 4433 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ guess_input_channel_layout()

+ +
+
+ + + + + + + + +
int guess_input_channel_layout (InputStreamist)
+
+ +

Definition at line 2303 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ifilter_has_all_input_formats()

+ +
+
+ + + + + +
+ + + + + + + + +
static int ifilter_has_all_input_formats (FilterGraphfg)
+
+static
+
+ +

Definition at line 2342 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ifilter_parameters_from_codecpar()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void ifilter_parameters_from_codecpar (InputFilterifilter,
AVCodecParameters * par 
)
+
+static
+
+ +

Definition at line 2089 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ifilter_send_eof()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int ifilter_send_eof (InputFilterifilter,
int64_t pts 
)
+
+static
+
+ +

Definition at line 2430 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ifilter_send_frame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int ifilter_send_frame (InputFilterifilter,
AVFrame * frame 
)
+
+static
+
+ +

Definition at line 2353 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_encoder_time_base()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void init_encoder_time_base (OutputStreamost,
AVRational default_time_base 
)
+
+static
+
+ +

Definition at line 3517 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_input_stream()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int init_input_stream (int ist_index,
char * error,
int error_len 
)
+
+static
+
+ +

Definition at line 3131 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_output_bsfs()

+ +
+
+ + + + + +
+ + + + + + + + +
static int init_output_bsfs (OutputStreamost)
+
+static
+
+ +

Definition at line 3261 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_output_stream()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int init_output_stream (OutputStreamost,
AVFrame * frame,
char * error,
int error_len 
)
+
+static
+
+ +

Definition at line 3724 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_output_stream_encode()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int init_output_stream_encode (OutputStreamost,
AVFrame * frame 
)
+
+static
+
+ +

Definition at line 3541 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_output_stream_streamcopy()

+ +
+
+ + + + + +
+ + + + + + + + +
static int init_output_stream_streamcopy (OutputStreamost)
+
+static
+
+ +

Definition at line 3291 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ init_output_stream_wrapper()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int init_output_stream_wrapper (OutputStreamost,
AVFrame * frame,
unsigned int fatal 
)
+
+static
+
+ +

Definition at line 1087 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ log_callback_null()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void log_callback_null (void * ptr,
int level,
const char * fmt,
va_list vl 
)
+
+static
+
+ +

Definition at line 5154 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ need_output()

+ +
+
+ + + + + +
+ + + + + + + + +
static int need_output (void )
+
+static
+
+ +

Definition at line 4103 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ opt_abort_on()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_abort_on (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 284 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_attach()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_attach (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 481 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 339 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3190 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3046 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3258 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_bitrate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_bitrate (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3138 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_channel_layout()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_channel_layout (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3222 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 357 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3052 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3264 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex_script()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex_script (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3279 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 620 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_init_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_init_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 605 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 363 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 489 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_old2new()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_old2new (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3126 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_preset()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_preset (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3078 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_profile()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_profile (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3172 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_progress()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_progress (void * optctx,
const char * opt,
const char * arg 
)
+
+ +
+
+ +

◆ opt_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3154 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_recording_timestamp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_recording_timestamp (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 758 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sameq()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sameq (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 318 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sdp_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sdp_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 566 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_stats_period()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_stats_period (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 303 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_streamid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_streamid (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2091 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_subtitle_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_subtitle_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 351 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_target()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_target (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2873 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_timecode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_timecode (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3208 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vaapi_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vaapi_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +
+
+ +

◆ opt_video_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 327 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 345 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3184 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3040 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_standard()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_standard (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 333 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3024 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3017 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vsync (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3196 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ output_packet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void output_packet (OutputFileof,
AVPacket * pkt,
OutputStreamost,
int eof 
)
+
+static
+
+ +

Definition at line 1003 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ parse_forced_key_frames()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void parse_forced_key_frames (char * kf,
OutputStreamost,
AVCodecContext * avctx 
)
+
+static
+
+ +

Definition at line 3454 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ print_final_stats()

+ +
+
+ + + + + +
+ + + + + + + + +
static void print_final_stats (int64_t total_size)
+
+static
+
+ +

Definition at line 1694 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ print_report()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void print_report (int is_last_report,
int64_t timer_start,
int64_t cur_time 
)
+
+static
+
+ +

Definition at line 1880 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ print_sdp()

+ +
+
+ + + + + +
+ + + + + + + + +
static void print_sdp (void )
+
+static
+
+ +

Definition at line 2990 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ process_input()

+ +
+
+ + + + + +
+ + + + + + + + +
static int process_input (int file_index)
+
+static
+
+ +

Definition at line 4537 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ process_input_packet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int process_input_packet (InputStreamist,
const AVPacket * pkt,
int no_eof 
)
+
+static
+
+ +

Definition at line 2798 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ psnr()

+ +
+
+ + + + + +
+ + + + + + + + +
static double psnr (double d)
+
+static
+
+ +

Definition at line 1544 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ read_key()

+ +
+
+ + + + + +
+ + + + + + + + +
static int read_key (void )
+
+static
+
+ +

Definition at line 559 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ reap_filters()

+ +
+
+ + + + + +
+ + + + + + + + +
static int reap_filters (int flush)
+
+static
+
+

Get and encode new output from any of the filtergraphs, without causing activity.

+
Returns
0 for success, <0 for severe errors
+ +

Definition at line 1611 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ remove_avoptions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void remove_avoptions (AVDictionary ** a,
AVDictionary * b 
)
+
+ +

Definition at line 782 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ report_new_stream()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void report_new_stream (int input_index,
AVPacket * pkt 
)
+
+static
+
+ +

Definition at line 3906 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ reset_eagain()

+ +
+
+ + + + + +
+ + + + + + + + +
static void reset_eagain (void )
+
+static
+
+ +

Definition at line 4442 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ seek_to_start()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int seek_to_start (InputFileifile,
AVFormatContext * is 
)
+
+static
+
+ +

Definition at line 4471 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ send_filter_eof()

+ +
+
+ + + + + +
+ + + + + + + + +
static int send_filter_eof (InputStreamist)
+
+static
+
+ +

Definition at line 2782 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ send_frame_to_filters()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int send_frame_to_filters (InputStreamist,
AVFrame * decoded_frame 
)
+
+static
+
+ +

Definition at line 2484 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ set_encoder_id()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void set_encoder_id (OutputFileof,
OutputStreamost 
)
+
+static
+
+ +

Definition at line 3413 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ set_report_callback()

+ +
+
+ + + + + + + + +
void set_report_callback (void(*)(int, float, float, int64_t, int, double, double) callback)
+
+ +

Definition at line 5194 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ set_tty_echo()

+ +
+
+ + + + + +
+ + + + + + + + +
static void set_tty_echo (int on)
+
+static
+
+ +

Definition at line 4160 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ show_hwaccels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_hwaccels (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 254 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ sigterm_handler()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sigterm_handler (int sig)
+
+static
+
+ +

Definition at line 445 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_copy_rect()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void sub2video_copy_rect (uint8_t * dst,
int dst_linesize,
int w,
int h,
AVSubtitleRect * r 
)
+
+static
+
+ +

Definition at line 285 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_flush()

+ +
+
+ + + + + +
+ + + + + + + + +
static void sub2video_flush (InputStreamist)
+
+static
+
+ +

Definition at line 406 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_get_blank_frame()

+ +
+
+ + + + + +
+ + + + + + + + +
static int sub2video_get_blank_frame (InputStreamist)
+
+static
+
+ +

Definition at line 270 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_heartbeat()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sub2video_heartbeat (InputStreamist,
int64_t pts 
)
+
+static
+
+ +

Definition at line 374 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_push_ref()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void sub2video_push_ref (InputStreamist,
int64_t pts 
)
+
+static
+
+ +

Definition at line 316 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ sub2video_update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sub2video_update (InputStreamist,
int64_t heartbeat_pts,
AVSubtitle * sub 
)
+
+ +

Definition at line 334 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ term_exit()

+ +
+
+ + + + + + + + +
void term_exit (void )
+
+ +

Definition at line 430 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ term_exit_sigsafe()

+ +
+
+ + + + + +
+ + + + + + + + +
static void term_exit_sigsafe (void )
+
+static
+
+ +

Definition at line 422 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ term_init()

+ +
+
+ + + + + + + + +
void term_init (void )
+
+ +

Definition at line 495 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode()

+ +
+
+ + + + + +
+ + + + + + + + +
static int transcode (void )
+
+static
+
+ +

Definition at line 4966 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode_from_filter()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int transcode_from_filter (FilterGraphgraph,
InputStream ** best_ist 
)
+
+static
+
+

Perform a step of transcoding for the specified filter graph.

+
Parameters
+ + + +
[in]graphfilter graph to consider
[out]best_istinput stream where a frame would allow to continue
+
+
+
Returns
0 for success, <0 for error
+ +

Definition at line 4830 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode_init()

+ +
+
+ + + + + +
+ + + + + + + + +
static int transcode_init (void )
+
+static
+
+ +

Definition at line 3921 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode_step()

+ +
+
+ + + + + +
+ + + + + + + + +
static int transcode_step (void )
+
+static
+
+

Run a single step of transcoding.

+
Returns
0 for success, <0 for error
+ +

Definition at line 4876 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode_subtitles()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int transcode_subtitles (InputStreamist,
AVPacket * pkt,
intgot_output,
intdecode_failed 
)
+
+static
+
+ +

Definition at line 2703 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ update_benchmark()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void update_benchmark (const char * fmt,
 ... 
)
+
+static
+
+ +

Definition at line 805 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ write_packet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void write_packet (OutputFileof,
AVPacket * pkt,
OutputStreamost,
int unqueue 
)
+
+static
+
+ +

Definition at line 835 of file fftools_ffmpeg.c.

+ +
+
+

Variable Documentation

+ +

◆ copy_ts_first_pts

+ +
+
+ + + + +
__thread int64_t copy_ts_first_pts = AV_NOPTS_VALUE
+
+ +

Definition at line 441 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ copy_unknown_streams

+ +
+
+ + + + +
__thread int copy_unknown_streams
+
+ +

Definition at line 201 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ current_time

+ +
+
+ + + + +
__thread BenchmarkTimeStamps current_time
+
+ +

Definition at line 171 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ decode_error_stat

+ +
+
+ + + + +
__thread int64_t decode_error_stat[2]
+
+ +

Definition at line 166 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ do_psnr

+ +
+
+ + + + +
__thread int do_psnr
+
+ +

Definition at line 197 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dup_warning

+ +
+
+ + + + +
__thread unsigned dup_warning = 1000
+
+ +

Definition at line 164 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpeg_exited

+ +
+
+ + + + +
__thread volatile int ffmpeg_exited = 0
+
+ +

Definition at line 439 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpeg_options

+ +
+
+ + + + +
__thread OptionDef* ffmpeg_options = NULL
+
+ +

Definition at line 5208 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ file_overwrite

+ +
+
+ + + + +
__thread int file_overwrite
+
+ +

Definition at line 195 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filtergraphs

+ +
+
+ + + + +
__thread FilterGraph** filtergraphs
+
+ +

Definition at line 186 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ first_report

+ +
+
+ + + + +
__thread int first_report = 1
+
+ +

Definition at line 191 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ forced_keyframes_const_names

+ +
+
+ + + + +
const char* const forced_keyframes_const_names[]
+
+Initial value:
= {
+
"n",
+
"n_forced",
+
"prev_forced_n",
+
"prev_forced_t",
+
"t",
+
NULL
+
}
+
+

Definition at line 142 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ globalSessionId

+ +
+
+ + + + +
__thread volatile long globalSessionId
+
+

Holds the id of the current execution

+ +

Definition at line 91 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGINT

+ +
+
+ + + + +
volatile int handleSIGINT
+
+ +

Definition at line 85 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGPIPE

+ +
+
+ + + + +
volatile int handleSIGPIPE
+
+ +

Definition at line 88 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGQUIT

+ +
+
+ + + + +
volatile int handleSIGQUIT
+
+

Fields that control the handling of SIGNALs

+ +

Definition at line 84 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGTERM

+ +
+
+ + + + +
volatile int handleSIGTERM
+
+ +

Definition at line 86 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGXCPU

+ +
+
+ + + + +
volatile int handleSIGXCPU
+
+ +

Definition at line 87 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ignore_unknown_streams

+ +
+
+ + + + +
__thread int ignore_unknown_streams
+
+ +

Definition at line 200 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ input_files

+ +
+
+ + + + +
__thread InputFile** input_files = NULL
+
+ +

Definition at line 178 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ input_streams

+ +
+
+ + + + +
__thread InputStream** input_streams = NULL
+
+ +

Definition at line 176 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ input_sync

+ +
+
+ + + + +
__thread int input_sync
+
+ +

Definition at line 198 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ int_cb

+ +
+
+ + + + +
const __thread AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL }
+
+ +

Definition at line 617 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ intra_only

+ +
+
+ + + + +
__thread int intra_only
+
+ +

Definition at line 194 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ keyboard_last_time

+ +
+
+ + + + +
__thread int64_t keyboard_last_time = 0
+
+ +

Definition at line 190 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ last_time

+ +
+
+ + + + +
__thread int64_t last_time = -1
+
+ +

Definition at line 189 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ longjmp_value

+ +
+
+ + + + +
__thread volatile int longjmp_value
+
+ +

Definition at line 107 of file fftools_cmdutils.c.

+ +
+
+ +

◆ main_ffmpeg_return_code

+ +
+
+ + + + +
__thread volatile int main_ffmpeg_return_code = 0
+
+ +

Definition at line 440 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_filtergraphs

+ +
+
+ + + + +
__thread int nb_filtergraphs
+
+ +

Definition at line 187 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_frames_drop

+ +
+
+ + + + +
__thread int nb_frames_drop = 0
+
+ +

Definition at line 165 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_frames_dup

+ +
+
+ + + + +
__thread int nb_frames_dup = 0
+
+ +

Definition at line 163 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_input_files

+ +
+
+ + + + +
__thread int nb_input_files = 0
+
+ +

Definition at line 179 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_input_streams

+ +
+
+ + + + +
__thread int nb_input_streams = 0
+
+ +

Definition at line 177 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_output_dumped

+ +
+
+ + + + +
__thread unsigned nb_output_dumped = 0
+
+ +

Definition at line 167 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_output_files

+ +
+
+ + + + +
__thread int nb_output_files = 0
+
+ +

Definition at line 184 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_output_streams

+ +
+
+ + + + +
__thread int nb_output_streams = 0
+
+ +

Definition at line 182 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ no_file_overwrite

+ +
+
+ + + + +
__thread int no_file_overwrite
+
+ +

Definition at line 196 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ output_files

+ +
+
+ + + + +
__thread OutputFile** output_files = NULL
+
+ +

Definition at line 183 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ output_streams

+ +
+
+ + + + +
__thread OutputStream** output_streams = NULL
+
+ +

Definition at line 181 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ progress_avio

+ +
+
+ + + + +
__thread AVIOContext* progress_avio = NULL
+
+ +

Definition at line 172 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ qp_histogram

+ +
+
+ + + + +
__thread int qp_histogram[52]
+
+ +

Definition at line 192 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ received_nb_signals

+ +
+
+ + + + + +
+ + + + +
volatile int received_nb_signals = 0
+
+static
+
+ +

Definition at line 437 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ received_sigterm

+ +
+
+ + + + + +
+ + + + +
volatile int received_sigterm = 0
+
+static
+
+ +

Definition at line 436 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ report_callback

+ +
+
+ + + + +
void(* report_callback) (int, float, float, int64_t, int, double, double) = NULL
+
+ +

Definition at line 194 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ run_as_daemon

+ +
+
+ + + + +
__thread int run_as_daemon = 0
+
+ +

Definition at line 162 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ subtitle_out

+ +
+
+ + + + +
__thread uint8_t* subtitle_out
+
+ +

Definition at line 174 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ transcode_init_done

+ +
+
+ + + + +
__thread atomic_int transcode_init_done = ATOMIC_VAR_INIT(0)
+
+ +

Definition at line 438 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ vstats_file

+ +
+
+ + + + + +
+ + + + +
FILE* vstats_file
+
+static
+
+ +

Definition at line 140 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ want_sdp

+ +
+
+ + + + +
__thread int want_sdp = 1
+
+ +

Definition at line 169 of file fftools_ffmpeg.c.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d7/d48/fftools__ffmpeg_8c_source.html b/docs/linux/html/d7/d48/fftools__ffmpeg_8c_source.html new file mode 100644 index 0000000..4043c9c --- /dev/null +++ b/docs/linux/html/d7/d48/fftools__ffmpeg_8c_source.html @@ -0,0 +1,6262 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffmpeg.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2000-2003 Fabrice Bellard
+
3  *
+
4  * This file is part of FFmpeg.
+
5  *
+
6  * FFmpeg is free software; you can redistribute it and/or
+
7  * modify it under the terms of the GNU Lesser General Public
+
8  * License as published by the Free Software Foundation; either
+
9  * version 2.1 of the License, or (at your option) any later version.
+
10  *
+
11  * FFmpeg is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
14  * Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public
+
17  * License along with FFmpeg; if not, write to the Free Software
+
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
19  */
+
20 
+
26 /*
+
27  * CHANGES 06.2020
+
28  * - ignoring signals implemented
+
29  * - cancel_operation() method signature updated with id
+
30  * - cancel by execution id implemented
+
31  *
+
32  * CHANGES 01.2020
+
33  * - ffprobe support changes
+
34  *
+
35  * CHANGES 12.2019
+
36  * - concurrent execution support
+
37  *
+
38  * CHANGES 08.2018
+
39  * --------------------------------------------------------
+
40  * - fftools_ prefix added to file name and parent headers
+
41  * - forward_report() method, report_callback function pointer and set_report_callback() setter
+
42  * method added to forward stats.
+
43  * - forward_report() call added from print_report()
+
44  * - cancel_operation() method added to trigger sigterm_handler
+
45  * - (!received_sigterm) validation added inside ifilter_send_eof() to complete cancellation
+
46  *
+
47  * CHANGES 07.2018
+
48  * --------------------------------------------------------
+
49  * - main() function renamed as ffmpeg_execute()
+
50  * - exit_program() implemented with setjmp
+
51  * - extern longjmp_value added to access exit code stored in exit_program()
+
52  * - ffmpeg_var_cleanup() method added
+
53  */
+
54 
+
55 #include "config.h"
+
56 #include <ctype.h>
+
57 #include <string.h>
+
58 #include <math.h>
+
59 #include <stdlib.h>
+
60 #include <errno.h>
+
61 #include <limits.h>
+
62 #include <stdatomic.h>
+
63 #include <stdint.h>
+
64 
+
65 #include "ffmpegkit_exception.h"
+
66 
+
67 #if HAVE_IO_H
+
68 #include <io.h>
+
69 #endif
+
70 #if HAVE_UNISTD_H
+
71 #include <unistd.h>
+
72 #endif
+
73 
+
74 #include "libavformat/avformat.h"
+
75 #include "libavdevice/avdevice.h"
+
76 #include "libswresample/swresample.h"
+
77 #include "libavutil/opt.h"
+
78 #include "libavutil/channel_layout.h"
+
79 #include "libavutil/parseutils.h"
+
80 #include "libavutil/samplefmt.h"
+
81 #include "libavutil/fifo.h"
+
82 #include "libavutil/hwcontext.h"
+
83 #include "libavutil/internal.h"
+
84 #include "libavutil/intreadwrite.h"
+
85 #include "libavutil/dict.h"
+
86 #include "libavutil/display.h"
+
87 #include "libavutil/mathematics.h"
+
88 #include "libavutil/pixdesc.h"
+
89 #include "libavutil/avstring.h"
+
90 #include "libavutil/libm.h"
+
91 #include "libavutil/imgutils.h"
+
92 #include "libavutil/timestamp.h"
+
93 #include "libavutil/bprint.h"
+
94 #include "libavutil/time.h"
+
95 #include "libavutil/thread.h"
+
96 #include "libavutil/threadmessage.h"
+
97 #include "libavcodec/mathops.h"
+
98 #include "libavformat/os_support.h"
+
99 
+
100 # include "libavfilter/avfilter.h"
+
101 # include "libavfilter/buffersrc.h"
+
102 # include "libavfilter/buffersink.h"
+
103 
+
104 #if HAVE_SYS_RESOURCE_H
+
105 #include <sys/time.h>
+
106 #include <sys/types.h>
+
107 #include <sys/resource.h>
+
108 #elif HAVE_GETPROCESSTIMES
+
109 #include <windows.h>
+
110 #endif
+
111 #if HAVE_GETPROCESSMEMORYINFO
+
112 #include <windows.h>
+
113 #include <psapi.h>
+
114 #endif
+
115 #if HAVE_SETCONSOLECTRLHANDLER
+
116 #include <windows.h>
+
117 #endif
+
118 
+
119 
+
120 #if HAVE_SYS_SELECT_H
+
121 #include <sys/select.h>
+
122 #endif
+
123 
+
124 #if HAVE_TERMIOS_H
+
125 #include <fcntl.h>
+
126 #include <sys/ioctl.h>
+
127 #include <sys/time.h>
+
128 #include <termios.h>
+
129 #elif HAVE_KBHIT
+
130 #include <conio.h>
+
131 #endif
+
132 
+
133 #include <time.h>
+
134 
+
135 #include "fftools_ffmpeg.h"
+
136 #include "fftools_cmdutils.h"
+
137 
+
138 #include "libavutil/avassert.h"
+
139 
+
140 static FILE *vstats_file;
+
141 
+
142 const char *const forced_keyframes_const_names[] = {
+
143  "n",
+
144  "n_forced",
+
145  "prev_forced_n",
+
146  "prev_forced_t",
+
147  "t",
+
148  NULL
+
149 };
+
150 
+
151 typedef struct BenchmarkTimeStamps {
+
152  int64_t real_usec;
+
153  int64_t user_usec;
+
154  int64_t sys_usec;
+ +
156 
+
157 static void do_video_stats(OutputStream *ost, int frame_size);
+ +
159 static int64_t getmaxrss(void);
+ +
161 
+
162 __thread int run_as_daemon = 0;
+
163 __thread int nb_frames_dup = 0;
+
164 __thread unsigned dup_warning = 1000;
+
165 __thread int nb_frames_drop = 0;
+
166 __thread int64_t decode_error_stat[2];
+
167 __thread unsigned nb_output_dumped = 0;
+
168 
+
169 __thread int want_sdp = 1;
+
170 
+ +
172 __thread AVIOContext *progress_avio = NULL;
+
173 
+
174 __thread uint8_t *subtitle_out;
+
175 
+
176 __thread InputStream **input_streams = NULL;
+
177 __thread int nb_input_streams = 0;
+
178 __thread InputFile **input_files = NULL;
+
179 __thread int nb_input_files = 0;
+
180 
+
181 __thread OutputStream **output_streams = NULL;
+
182 __thread int nb_output_streams = 0;
+
183 __thread OutputFile **output_files = NULL;
+
184 __thread int nb_output_files = 0;
+
185 
+ +
187 __thread int nb_filtergraphs;
+
188 
+
189 __thread int64_t last_time = -1;
+
190 __thread int64_t keyboard_last_time = 0;
+
191 __thread int first_report = 1;
+
192 __thread int qp_histogram[52];
+
193 
+
194 void (*report_callback)(int, float, float, int64_t, int, double, double) = NULL;
+
195 
+
196 extern __thread int file_overwrite;
+
197 extern __thread int no_file_overwrite;
+
198 extern __thread int ignore_unknown_streams;
+
199 extern __thread int copy_unknown_streams;
+
200 extern int opt_map(void *optctx, const char *opt, const char *arg);
+
201 extern int opt_map_channel(void *optctx, const char *opt, const char *arg);
+
202 extern int opt_recording_timestamp(void *optctx, const char *opt, const char *arg);
+
203 extern int opt_data_frames(void *optctx, const char *opt, const char *arg);
+
204 extern int opt_progress(void *optctx, const char *opt, const char *arg);
+
205 extern int opt_target(void *optctx, const char *opt, const char *arg);
+
206 extern int opt_vsync(void *optctx, const char *opt, const char *arg);
+
207 extern int opt_abort_on(void *optctx, const char *opt, const char *arg);
+
208 extern int opt_stats_period(void *optctx, const char *opt, const char *arg);
+
209 extern int opt_qscale(void *optctx, const char *opt, const char *arg);
+
210 extern int opt_profile(void *optctx, const char *opt, const char *arg);
+
211 extern int opt_filter_complex(void *optctx, const char *opt, const char *arg);
+
212 extern int opt_filter_complex_script(void *optctx, const char *opt, const char *arg);
+
213 extern int opt_attach(void *optctx, const char *opt, const char *arg);
+
214 extern int opt_video_frames(void *optctx, const char *opt, const char *arg);
+
215 extern __thread int intra_only;
+
216 extern int opt_video_codec(void *optctx, const char *opt, const char *arg);
+
217 extern int opt_sameq(void *optctx, const char *opt, const char *arg);
+
218 extern int opt_timecode(void *optctx, const char *opt, const char *arg);
+
219 extern __thread int do_psnr;
+
220 extern int opt_vstats_file(void *optctx, const char *opt, const char *arg);
+
221 extern int opt_vstats(void *optctx, const char *opt, const char *arg);
+
222 extern int opt_video_frames(void *optctx, const char *opt, const char *arg);
+
223 extern int opt_old2new(void *optctx, const char *opt, const char *arg);
+
224 extern int opt_streamid(void *optctx, const char *opt, const char *arg);
+
225 extern int opt_bitrate(void *optctx, const char *opt, const char *arg);
+
226 extern int show_hwaccels(void *optctx, const char *opt, const char *arg);
+
227 extern int opt_video_filters(void *optctx, const char *opt, const char *arg);
+
228 extern int opt_audio_frames(void *optctx, const char *opt, const char *arg);
+
229 extern int opt_audio_qscale(void *optctx, const char *opt, const char *arg);
+
230 extern int opt_audio_codec(void *optctx, const char *opt, const char *arg);
+
231 extern int opt_channel_layout(void *optctx, const char *opt, const char *arg);
+
232 extern int opt_preset(void *optctx, const char *opt, const char *arg);
+
233 extern int opt_audio_filters(void *optctx, const char *opt, const char *arg);
+
234 extern int opt_subtitle_codec(void *optctx, const char *opt, const char *arg);
+
235 extern int opt_video_channel(void *optctx, const char *opt, const char *arg);
+
236 extern int opt_video_standard(void *optctx, const char *opt, const char *arg);
+
237 extern int opt_sdp_file(void *optctx, const char *opt, const char *arg);
+
238 extern int opt_data_codec(void *optctx, const char *opt, const char *arg);
+
239 extern int opt_vaapi_device(void *optctx, const char *opt, const char *arg);
+
240 extern int opt_init_hw_device(void *optctx, const char *opt, const char *arg);
+
241 extern int opt_filter_hw_device(void *optctx, const char *opt, const char *arg);
+
242 extern __thread int input_sync;
+
243 
+
244 #if HAVE_TERMIOS_H
+
245 
+
246 /* init terminal so that we can grab keys */
+
247 __thread struct termios oldtty;
+
248 __thread int restore_tty;
+
249 #endif
+
250 
+
251 #if HAVE_THREADS
+
252 static void free_input_threads(void);
+
253 #endif
+
254 
+
255 extern volatile int handleSIGQUIT;
+
256 extern volatile int handleSIGINT;
+
257 extern volatile int handleSIGTERM;
+
258 extern volatile int handleSIGXCPU;
+
259 extern volatile int handleSIGPIPE;
+
260 
+
261 extern __thread volatile long globalSessionId;
+
262 extern void cancelSession(long sessionId);
+
263 extern int cancelRequested(long sessionId);
+
264 
+
265 /* sub2video hack:
+
266  Convert subtitles to video with alpha to insert them in filter graphs.
+
267  This is a temporary solution until libavfilter gets real subtitles support.
+
268  */
+
269 
+ +
271 {
+
272  int ret;
+
273  AVFrame *frame = ist->sub2video.frame;
+
274 
+
275  av_frame_unref(frame);
+
276  ist->sub2video.frame->width = ist->dec_ctx->width ? ist->dec_ctx->width : ist->sub2video.w;
+
277  ist->sub2video.frame->height = ist->dec_ctx->height ? ist->dec_ctx->height : ist->sub2video.h;
+
278  ist->sub2video.frame->format = AV_PIX_FMT_RGB32;
+
279  if ((ret = av_frame_get_buffer(frame, 0)) < 0)
+
280  return ret;
+
281  memset(frame->data[0], 0, frame->height * frame->linesize[0]);
+
282  return 0;
+
283 }
+
284 
+
285 static void sub2video_copy_rect(uint8_t *dst, int dst_linesize, int w, int h,
+
286  AVSubtitleRect *r)
+
287 {
+
288  uint32_t *pal, *dst2;
+
289  uint8_t *src, *src2;
+
290  int x, y;
+
291 
+
292  if (r->type != SUBTITLE_BITMAP) {
+
293  av_log(NULL, AV_LOG_WARNING, "sub2video: non-bitmap subtitle\n");
+
294  return;
+
295  }
+
296  if (r->x < 0 || r->x + r->w > w || r->y < 0 || r->y + r->h > h) {
+
297  av_log(NULL, AV_LOG_WARNING, "sub2video: rectangle (%d %d %d %d) overflowing %d %d\n",
+
298  r->x, r->y, r->w, r->h, w, h
+
299  );
+
300  return;
+
301  }
+
302 
+
303  dst += r->y * dst_linesize + r->x * 4;
+
304  src = r->data[0];
+
305  pal = (uint32_t *)r->data[1];
+
306  for (y = 0; y < r->h; y++) {
+
307  dst2 = (uint32_t *)dst;
+
308  src2 = src;
+
309  for (x = 0; x < r->w; x++)
+
310  *(dst2++) = pal[*(src2++)];
+
311  dst += dst_linesize;
+
312  src += r->linesize[0];
+
313  }
+
314 }
+
315 
+
316 static void sub2video_push_ref(InputStream *ist, int64_t pts)
+
317 {
+
318  AVFrame *frame = ist->sub2video.frame;
+
319  int i;
+
320  int ret;
+
321 
+
322  av_assert1(frame->data[0]);
+
323  ist->sub2video.last_pts = frame->pts = pts;
+
324  for (i = 0; i < ist->nb_filters; i++) {
+
325  ret = av_buffersrc_add_frame_flags(ist->filters[i]->filter, frame,
+
326  AV_BUFFERSRC_FLAG_KEEP_REF |
+
327  AV_BUFFERSRC_FLAG_PUSH);
+
328  if (ret != AVERROR_EOF && ret < 0)
+
329  av_log(NULL, AV_LOG_WARNING, "Error while add the frame to buffer source(%s).\n",
+
330  av_err2str(ret));
+
331  }
+
332 }
+
333 
+
334 void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
+
335 {
+
336  AVFrame *frame = ist->sub2video.frame;
+
337  int8_t *dst;
+
338  int dst_linesize;
+
339  int num_rects, i;
+
340  int64_t pts, end_pts;
+
341 
+
342  if (!frame)
+
343  return;
+
344  if (sub) {
+
345  pts = av_rescale_q(sub->pts + sub->start_display_time * 1000LL,
+
346  AV_TIME_BASE_Q, ist->st->time_base);
+
347  end_pts = av_rescale_q(sub->pts + sub->end_display_time * 1000LL,
+
348  AV_TIME_BASE_Q, ist->st->time_base);
+
349  num_rects = sub->num_rects;
+
350  } else {
+
351  /* If we are initializing the system, utilize current heartbeat
+
352  PTS as the start time, and show until the following subpicture
+
353  is received. Otherwise, utilize the previous subpicture's end time
+
354  as the fall-back value. */
+
355  pts = ist->sub2video.initialize ?
+
356  heartbeat_pts : ist->sub2video.end_pts;
+
357  end_pts = INT64_MAX;
+
358  num_rects = 0;
+
359  }
+
360  if (sub2video_get_blank_frame(ist) < 0) {
+
361  av_log(ist->dec_ctx, AV_LOG_ERROR,
+
362  "Impossible to get a blank canvas.\n");
+
363  return;
+
364  }
+
365  dst = frame->data [0];
+
366  dst_linesize = frame->linesize[0];
+
367  for (i = 0; i < num_rects; i++)
+
368  sub2video_copy_rect(dst, dst_linesize, frame->width, frame->height, sub->rects[i]);
+
369  sub2video_push_ref(ist, pts);
+
370  ist->sub2video.end_pts = end_pts;
+
371  ist->sub2video.initialize = 0;
+
372 }
+
373 
+
374 static void sub2video_heartbeat(InputStream *ist, int64_t pts)
+
375 {
+
376  InputFile *infile = input_files[ist->file_index];
+
377  int i, j, nb_reqs;
+
378  int64_t pts2;
+
379 
+
380  /* When a frame is read from a file, examine all sub2video streams in
+
381  the same file and send the sub2video frame again. Otherwise, decoded
+
382  video frames could be accumulating in the filter graph while a filter
+
383  (possibly overlay) is desperately waiting for a subtitle frame. */
+
384  for (i = 0; i < infile->nb_streams; i++) {
+
385  InputStream *ist2 = input_streams[infile->ist_index + i];
+
386  if (!ist2->sub2video.frame)
+
387  continue;
+
388  /* subtitles seem to be usually muxed ahead of other streams;
+
389  if not, subtracting a larger time here is necessary */
+
390  pts2 = av_rescale_q(pts, ist->st->time_base, ist2->st->time_base) - 1;
+
391  /* do not send the heartbeat frame if the subtitle is already ahead */
+
392  if (pts2 <= ist2->sub2video.last_pts)
+
393  continue;
+
394  if (pts2 >= ist2->sub2video.end_pts || ist2->sub2video.initialize)
+
395  /* if we have hit the end of the current displayed subpicture,
+
396  or if we need to initialize the system, update the
+
397  overlayed subpicture and its start/end times */
+
398  sub2video_update(ist2, pts2 + 1, NULL);
+
399  for (j = 0, nb_reqs = 0; j < ist2->nb_filters; j++)
+
400  nb_reqs += av_buffersrc_get_nb_failed_requests(ist2->filters[j]->filter);
+
401  if (nb_reqs)
+
402  sub2video_push_ref(ist2, pts2);
+
403  }
+
404 }
+
405 
+ +
407 {
+
408  int i;
+
409  int ret;
+
410 
+
411  if (ist->sub2video.end_pts < INT64_MAX)
+
412  sub2video_update(ist, INT64_MAX, NULL);
+
413  for (i = 0; i < ist->nb_filters; i++) {
+
414  ret = av_buffersrc_add_frame(ist->filters[i]->filter, NULL);
+
415  if (ret != AVERROR_EOF && ret < 0)
+
416  av_log(NULL, AV_LOG_WARNING, "Flush the frame error.\n");
+
417  }
+
418 }
+
419 
+
420 /* end of sub2video hack */
+
421 
+
422 static void term_exit_sigsafe(void)
+
423 {
+
424 #if HAVE_TERMIOS_H
+
425  if(restore_tty)
+
426  tcsetattr (0, TCSANOW, &oldtty);
+
427 #endif
+
428 }
+
429 
+
430 void term_exit(void)
+
431 {
+
432  av_log(NULL, AV_LOG_QUIET, "%s", "");
+ +
434 }
+
435 
+
436 static volatile int received_sigterm = 0;
+
437 static volatile int received_nb_signals = 0;
+
438 __thread atomic_int transcode_init_done = ATOMIC_VAR_INIT(0);
+
439 __thread volatile int ffmpeg_exited = 0;
+
440 __thread volatile int main_ffmpeg_return_code = 0;
+
441 __thread int64_t copy_ts_first_pts = AV_NOPTS_VALUE;
+
442 extern __thread volatile int longjmp_value;
+
443 
+
444 static void
+ +
446 {
+
447  received_sigterm = sig;
+ + +
450 }
+
451 
+
452 #if HAVE_SETCONSOLECTRLHANDLER
+
453 static BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
+
454 {
+
455  av_log(NULL, AV_LOG_DEBUG, "\nReceived windows signal %ld\n", fdwCtrlType);
+
456 
+
457  switch (fdwCtrlType)
+
458  {
+
459  case CTRL_C_EVENT:
+
460  case CTRL_BREAK_EVENT:
+
461  sigterm_handler(SIGINT);
+
462  return TRUE;
+
463 
+
464  case CTRL_CLOSE_EVENT:
+
465  case CTRL_LOGOFF_EVENT:
+
466  case CTRL_SHUTDOWN_EVENT:
+
467  sigterm_handler(SIGTERM);
+
468  /* Basically, with these 3 events, when we return from this method the
+
469  process is hard terminated, so stall as long as we need to
+
470  to try and let the main thread(s) clean up and gracefully terminate
+
471  (we have at most 5 seconds, but should be done far before that). */
+
472  while (!ffmpeg_exited) {
+
473  Sleep(0);
+
474  }
+
475  return TRUE;
+
476 
+
477  default:
+
478  av_log(NULL, AV_LOG_ERROR, "Received unknown windows signal %ld\n", fdwCtrlType);
+
479  return FALSE;
+
480  }
+
481 }
+
482 #endif
+
483 
+
484 #ifdef __linux__
+
485 #define SIGNAL(sig, func) \
+
486  do { \
+
487  action.sa_handler = func; \
+
488  sigaction(sig, &action, NULL); \
+
489  } while (0)
+
490 #else
+
491 #define SIGNAL(sig, func) \
+
492  signal(sig, func)
+
493 #endif
+
494 
+
495 void term_init(void)
+
496 {
+
497 #if defined __linux__
+
498  #if defined __aarch64__ || defined __amd64__ || defined __x86_64__
+
499  struct sigaction action = {0};
+
500  #else
+
501  struct sigaction action = {{0}};
+
502  #endif
+
503 
+
504  action.sa_handler = sigterm_handler;
+
505 
+
506  /* block other interrupts while processing this one */
+
507  sigfillset(&action.sa_mask);
+
508 
+
509  /* restart interruptible functions (i.e. don't fail with EINTR) */
+
510  action.sa_flags = SA_RESTART;
+
511 #endif
+
512 
+
513 #if HAVE_TERMIOS_H
+ +
515  struct termios tty;
+
516  if (tcgetattr (0, &tty) == 0) {
+
517  oldtty = tty;
+
518  restore_tty = 1;
+
519 
+
520  tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
+
521  |INLCR|IGNCR|ICRNL|IXON);
+
522  tty.c_oflag |= OPOST;
+
523  tty.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
+
524  tty.c_cflag &= ~(CSIZE|PARENB);
+
525  tty.c_cflag |= CS8;
+
526  tty.c_cc[VMIN] = 1;
+
527  tty.c_cc[VTIME] = 0;
+
528 
+
529  tcsetattr (0, TCSANOW, &tty);
+
530  }
+
531  if (handleSIGQUIT == 1) {
+
532  signal(SIGQUIT, sigterm_handler); /* Quit (POSIX). */
+
533  }
+
534  }
+
535 #endif
+
536 
+
537  if (handleSIGINT == 1) {
+
538  signal(SIGINT , sigterm_handler); /* Interrupt (ANSI). */
+
539  }
+
540  if (handleSIGTERM == 1) {
+
541  signal(SIGTERM, sigterm_handler); /* Termination (ANSI). */
+
542  }
+
543 #ifdef SIGXCPU
+
544  if (handleSIGXCPU == 1) {
+
545  signal(SIGXCPU, sigterm_handler);
+
546  }
+
547 #endif
+
548 #ifdef SIGPIPE
+
549  if (handleSIGPIPE == 1) {
+
550  signal(SIGPIPE, SIG_IGN); /* Broken pipe (POSIX). */
+
551  }
+
552 #endif
+
553 #if HAVE_SETCONSOLECTRLHANDLER
+
554  SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE);
+
555 #endif
+
556 }
+
557 
+
558 /* read a key without blocking */
+
559 static int read_key(void)
+
560 {
+
561  unsigned char ch;
+
562 #if HAVE_TERMIOS_H
+
563  int n = 1;
+
564  struct timeval tv;
+
565  fd_set rfds;
+
566 
+
567  FD_ZERO(&rfds);
+
568  FD_SET(0, &rfds);
+
569  tv.tv_sec = 0;
+
570  tv.tv_usec = 0;
+
571  n = select(1, &rfds, NULL, NULL, &tv);
+
572  if (n > 0) {
+
573  n = read(0, &ch, 1);
+
574  if (n == 1)
+
575  return ch;
+
576 
+
577  return n;
+
578  }
+
579 #elif HAVE_KBHIT
+
580 # if HAVE_PEEKNAMEDPIPE
+
581  static int is_pipe;
+
582  static HANDLE input_handle;
+
583  DWORD dw, nchars;
+
584  if(!input_handle){
+
585  input_handle = GetStdHandle(STD_INPUT_HANDLE);
+
586  is_pipe = !GetConsoleMode(input_handle, &dw);
+
587  }
+
588 
+
589  if (is_pipe) {
+
590  /* When running under a GUI, you will end here. */
+
591  if (!PeekNamedPipe(input_handle, NULL, 0, NULL, &nchars, NULL)) {
+
592  // input pipe may have been closed by the program that ran ffmpeg
+
593  return -1;
+
594  }
+
595  //Read it
+
596  if(nchars != 0) {
+
597  read(0, &ch, 1);
+
598  return ch;
+
599  }else{
+
600  return -1;
+
601  }
+
602  }
+
603 # endif
+
604  if(kbhit())
+
605  return(getch());
+
606 #endif
+
607  return -1;
+
608 }
+
609 
+
610 int decode_interrupt_cb(void *ctx);
+
611 
+
612 int decode_interrupt_cb(void *ctx)
+
613 {
+
614  return received_nb_signals > atomic_load(&transcode_init_done);
+
615 }
+
616 
+
617 __thread const AVIOInterruptCB int_cb = { decode_interrupt_cb, NULL };
+
618 
+
619 static void ffmpeg_cleanup(int ret)
+
620 {
+
621  int i, j;
+
622 
+
623  if (do_benchmark) {
+
624  int maxrss = getmaxrss() / 1024;
+
625  av_log(NULL, AV_LOG_INFO, "bench: maxrss=%ikB\n", maxrss);
+
626  }
+
627 
+
628  for (i = 0; i < nb_filtergraphs; i++) {
+
629  FilterGraph *fg = filtergraphs[i];
+
630  avfilter_graph_free(&fg->graph);
+
631  for (j = 0; j < fg->nb_inputs; j++) {
+
632  InputFilter *ifilter = fg->inputs[j];
+
633  struct InputStream *ist = ifilter->ist;
+
634 
+
635  while (av_fifo_size(ifilter->frame_queue)) {
+
636  AVFrame *frame;
+
637  av_fifo_generic_read(ifilter->frame_queue, &frame,
+
638  sizeof(frame), NULL);
+
639  av_frame_free(&frame);
+
640  }
+
641  av_fifo_freep(&ifilter->frame_queue);
+
642  if (ist->sub2video.sub_queue) {
+
643  while (av_fifo_size(ist->sub2video.sub_queue)) {
+
644  AVSubtitle sub;
+
645  av_fifo_generic_read(ist->sub2video.sub_queue,
+
646  &sub, sizeof(sub), NULL);
+
647  avsubtitle_free(&sub);
+
648  }
+
649  av_fifo_freep(&ist->sub2video.sub_queue);
+
650  }
+
651  av_buffer_unref(&ifilter->hw_frames_ctx);
+
652  av_freep(&ifilter->name);
+
653  av_freep(&fg->inputs[j]);
+
654  }
+
655  av_freep(&fg->inputs);
+
656  for (j = 0; j < fg->nb_outputs; j++) {
+
657  OutputFilter *ofilter = fg->outputs[j];
+
658 
+
659  avfilter_inout_free(&ofilter->out_tmp);
+
660  av_freep(&ofilter->name);
+
661  av_freep(&ofilter->formats);
+
662  av_freep(&ofilter->channel_layouts);
+
663  av_freep(&ofilter->sample_rates);
+
664  av_freep(&fg->outputs[j]);
+
665  }
+
666  av_freep(&fg->outputs);
+
667  av_freep(&fg->graph_desc);
+
668 
+
669  av_freep(&filtergraphs[i]);
+
670  }
+
671  av_freep(&filtergraphs);
+
672 
+
673  av_freep(&subtitle_out);
+
674 
+
675  /* close files */
+
676  for (i = 0; i < nb_output_files; i++) {
+
677  OutputFile *of = output_files[i];
+
678  AVFormatContext *s;
+
679  if (!of)
+
680  continue;
+
681  s = of->ctx;
+
682  if (s && s->oformat && !(s->oformat->flags & AVFMT_NOFILE))
+
683  avio_closep(&s->pb);
+
684  avformat_free_context(s);
+
685  av_dict_free(&of->opts);
+
686 
+
687  av_freep(&output_files[i]);
+
688  }
+
689  for (i = 0; i < nb_output_streams; i++) {
+ +
691 
+
692  if (!ost)
+
693  continue;
+
694 
+
695  av_bsf_free(&ost->bsf_ctx);
+
696 
+
697  av_frame_free(&ost->filtered_frame);
+
698  av_frame_free(&ost->last_frame);
+
699  av_packet_free(&ost->pkt);
+
700  av_dict_free(&ost->encoder_opts);
+
701 
+
702  av_freep(&ost->forced_keyframes);
+
703  av_expr_free(ost->forced_keyframes_pexpr);
+
704  av_freep(&ost->avfilter);
+
705  av_freep(&ost->logfile_prefix);
+
706 
+
707  av_freep(&ost->audio_channels_map);
+ +
709 
+
710  av_dict_free(&ost->sws_dict);
+
711  av_dict_free(&ost->swr_opts);
+
712 
+
713  avcodec_free_context(&ost->enc_ctx);
+
714  avcodec_parameters_free(&ost->ref_par);
+
715 
+
716  if (ost->muxing_queue) {
+
717  while (av_fifo_size(ost->muxing_queue)) {
+
718  AVPacket *pkt;
+
719  av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
+
720  av_packet_free(&pkt);
+
721  }
+
722  av_fifo_freep(&ost->muxing_queue);
+
723  }
+
724 
+
725  av_freep(&output_streams[i]);
+
726  }
+
727 #if HAVE_THREADS
+
728  free_input_threads();
+
729 #endif
+
730  for (i = 0; i < nb_input_files; i++) {
+
731  avformat_close_input(&input_files[i]->ctx);
+
732  av_packet_free(&input_files[i]->pkt);
+
733  av_freep(&input_files[i]);
+
734  }
+
735  for (i = 0; i < nb_input_streams; i++) {
+ +
737 
+
738  av_frame_free(&ist->decoded_frame);
+
739  av_frame_free(&ist->filter_frame);
+
740  av_packet_free(&ist->pkt);
+
741  av_dict_free(&ist->decoder_opts);
+
742  avsubtitle_free(&ist->prev_sub.subtitle);
+
743  av_frame_free(&ist->sub2video.frame);
+
744  av_freep(&ist->filters);
+
745  av_freep(&ist->hwaccel_device);
+
746  av_freep(&ist->dts_buffer);
+
747 
+
748  avcodec_free_context(&ist->dec_ctx);
+
749 
+
750  av_freep(&input_streams[i]);
+
751  }
+
752 
+
753  if (vstats_file) {
+
754  if (fclose(vstats_file))
+
755  av_log(NULL, AV_LOG_ERROR,
+
756  "Error closing vstats file, loss of information possible: %s\n",
+
757  av_err2str(AVERROR(errno)));
+
758  }
+
759  av_freep(&vstats_filename);
+
760 
+
761  av_freep(&input_streams);
+
762  av_freep(&input_files);
+
763  av_freep(&output_streams);
+
764  av_freep(&output_files);
+
765 
+
766  uninit_opts();
+
767 
+
768  avformat_network_deinit();
+
769 
+
770  if (received_sigterm) {
+
771  av_log(NULL, AV_LOG_INFO, "Exiting normally, received signal %d.\n",
+
772  (int) received_sigterm);
+
773  } else if (cancelRequested(globalSessionId)) {
+
774  av_log(NULL, AV_LOG_INFO, "Exiting normally, received cancel request.\n");
+
775  } else if (ret && atomic_load(&transcode_init_done)) {
+
776  av_log(NULL, AV_LOG_INFO, "Conversion failed!\n");
+
777  }
+
778  term_exit();
+
779  ffmpeg_exited = 1;
+
780 }
+
781 
+
782 void remove_avoptions(AVDictionary **a, AVDictionary *b)
+
783 {
+
784  AVDictionaryEntry *t = NULL;
+
785 
+
786  while ((t = av_dict_get(b, "", t, AV_DICT_IGNORE_SUFFIX))) {
+
787  av_dict_set(a, t->key, NULL, AV_DICT_MATCH_CASE);
+
788  }
+
789 }
+
790 
+
791 void assert_avoptions(AVDictionary *m)
+
792 {
+
793  AVDictionaryEntry *t;
+
794  if ((t = av_dict_get(m, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
+
795  av_log(NULL, AV_LOG_FATAL, "Option %s not found.\n", t->key);
+
796  exit_program(1);
+
797  }
+
798 }
+
799 
+
800 static void abort_codec_experimental(const AVCodec *c, int encoder)
+
801 {
+
802  exit_program(1);
+
803 }
+
804 
+
805 static void update_benchmark(const char *fmt, ...)
+
806 {
+
807  if (do_benchmark_all) {
+ +
809  va_list va;
+
810  char buf[1024];
+
811 
+
812  if (fmt) {
+
813  va_start(va, fmt);
+
814  vsnprintf(buf, sizeof(buf), fmt, va);
+
815  va_end(va);
+
816  av_log(NULL, AV_LOG_INFO,
+
817  "bench: %8" PRIu64 " user %8" PRIu64 " sys %8" PRIu64 " real %s \n",
+ + +
820  t.real_usec - current_time.real_usec, buf);
+
821  }
+
822  current_time = t;
+
823  }
+
824 }
+
825 
+ +
827 {
+
828  int i;
+
829  for (i = 0; i < nb_output_streams; i++) {
+
830  OutputStream *ost2 = output_streams[i];
+
831  ost2->finished |= ost == ost2 ? this_stream : others;
+
832  }
+
833 }
+
834 
+
835 static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
+
836 {
+
837  AVFormatContext *s = of->ctx;
+
838  AVStream *st = ost->st;
+
839  int ret;
+
840 
+
841  /*
+
842  * Audio encoders may split the packets -- #frames in != #packets out.
+
843  * But there is no reordering, so we can limit the number of output packets
+
844  * by simply dropping them here.
+
845  * Counting encoded video frames needs to be done separately because of
+
846  * reordering, see do_video_out().
+
847  * Do not count the packet when unqueued because it has been counted when queued.
+
848  */
+
849  if (!(st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->encoding_needed) && !unqueue) {
+
850  if (ost->frame_number >= ost->max_frames) {
+
851  av_packet_unref(pkt);
+
852  return;
+
853  }
+
854  ost->frame_number++;
+
855  }
+
856 
+
857  if (!of->header_written) {
+
858  AVPacket *tmp_pkt;
+
859  /* the muxer is not initialized yet, buffer the packet */
+
860  if (!av_fifo_space(ost->muxing_queue)) {
+
861  unsigned int are_we_over_size =
+ +
863  int new_size = are_we_over_size ?
+
864  FFMIN(2 * av_fifo_size(ost->muxing_queue),
+ +
866  2 * av_fifo_size(ost->muxing_queue);
+
867 
+
868  if (new_size <= av_fifo_size(ost->muxing_queue)) {
+
869  av_log(NULL, AV_LOG_ERROR,
+
870  "Too many packets buffered for output stream %d:%d.\n",
+
871  ost->file_index, ost->st->index);
+
872  exit_program(1);
+
873  }
+
874  ret = av_fifo_realloc2(ost->muxing_queue, new_size);
+
875  if (ret < 0)
+
876  exit_program(1);
+
877  }
+
878  ret = av_packet_make_refcounted(pkt);
+
879  if (ret < 0)
+
880  exit_program(1);
+
881  tmp_pkt = av_packet_alloc();
+
882  if (!tmp_pkt)
+
883  exit_program(1);
+
884  av_packet_move_ref(tmp_pkt, pkt);
+
885  ost->muxing_queue_data_size += tmp_pkt->size;
+
886  av_fifo_generic_write(ost->muxing_queue, &tmp_pkt, sizeof(tmp_pkt), NULL);
+
887  return;
+
888  }
+
889 
+
890  if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && video_sync_method == VSYNC_DROP) ||
+
891  (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && audio_sync_method < 0))
+
892  pkt->pts = pkt->dts = AV_NOPTS_VALUE;
+
893 
+
894  if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
+
895  int i;
+
896  uint8_t *sd = av_packet_get_side_data(pkt, AV_PKT_DATA_QUALITY_STATS,
+
897  NULL);
+
898  ost->quality = sd ? AV_RL32(sd) : -1;
+
899  ost->pict_type = sd ? sd[4] : AV_PICTURE_TYPE_NONE;
+
900 
+
901  for (i = 0; i<FF_ARRAY_ELEMS(ost->error); i++) {
+
902  if (sd && i < sd[5])
+
903  ost->error[i] = AV_RL64(sd + 8 + 8*i);
+
904  else
+
905  ost->error[i] = -1;
+
906  }
+
907 
+
908  if (ost->frame_rate.num && ost->is_cfr) {
+
909  if (pkt->duration > 0)
+
910  av_log(NULL, AV_LOG_WARNING, "Overriding packet duration by frame rate, this should not happen\n");
+
911  pkt->duration = av_rescale_q(1, av_inv_q(ost->frame_rate),
+
912  ost->mux_timebase);
+
913  }
+
914  }
+
915 
+
916  av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
+
917 
+
918  if (!(s->oformat->flags & AVFMT_NOTIMESTAMPS)) {
+
919  if (pkt->dts != AV_NOPTS_VALUE &&
+
920  pkt->pts != AV_NOPTS_VALUE &&
+
921  pkt->dts > pkt->pts) {
+
922  av_log(s, AV_LOG_WARNING, "Invalid DTS: %"PRId64" PTS: %"PRId64" in output stream %d:%d, replacing by guess\n",
+
923  pkt->dts, pkt->pts,
+
924  ost->file_index, ost->st->index);
+
925  pkt->pts =
+
926  pkt->dts = pkt->pts + pkt->dts + ost->last_mux_dts + 1
+
927  - FFMIN3(pkt->pts, pkt->dts, ost->last_mux_dts + 1)
+
928  - FFMAX3(pkt->pts, pkt->dts, ost->last_mux_dts + 1);
+
929  }
+
930  if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) &&
+
931  pkt->dts != AV_NOPTS_VALUE &&
+
932  !(st->codecpar->codec_id == AV_CODEC_ID_VP9 && ost->stream_copy) &&
+
933  ost->last_mux_dts != AV_NOPTS_VALUE) {
+
934  int64_t max = ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT);
+
935  if (pkt->dts < max) {
+
936  int loglevel = max - pkt->dts > 2 || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ? AV_LOG_WARNING : AV_LOG_DEBUG;
+
937  if (exit_on_error)
+
938  loglevel = AV_LOG_ERROR;
+
939  av_log(s, loglevel, "Non-monotonous DTS in output stream "
+
940  "%d:%d; previous: %"PRId64", current: %"PRId64"; ",
+
941  ost->file_index, ost->st->index, ost->last_mux_dts, pkt->dts);
+
942  if (exit_on_error) {
+
943  av_log(NULL, AV_LOG_FATAL, "aborting.\n");
+
944  exit_program(1);
+
945  }
+
946  av_log(s, loglevel, "changing to %"PRId64". This may result "
+
947  "in incorrect timestamps in the output file.\n",
+
948  max);
+
949  if (pkt->pts >= pkt->dts)
+
950  pkt->pts = FFMAX(pkt->pts, max);
+
951  pkt->dts = max;
+
952  }
+
953  }
+
954  }
+
955  ost->last_mux_dts = pkt->dts;
+
956 
+
957  ost->data_size += pkt->size;
+
958  ost->packets_written++;
+
959 
+
960  pkt->stream_index = ost->index;
+
961 
+
962  if (debug_ts) {
+
963  av_log(NULL, AV_LOG_INFO, "muxer <- type:%s "
+
964  "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s size:%d\n",
+
965  av_get_media_type_string(ost->enc_ctx->codec_type),
+
966  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->st->time_base),
+
967  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->st->time_base),
+
968  pkt->size
+
969  );
+
970  }
+
971 
+
972  ret = av_interleaved_write_frame(s, pkt);
+
973  if (ret < 0) {
+
974  print_error("av_interleaved_write_frame()", ret);
+ + +
977  }
+
978  av_packet_unref(pkt);
+
979 }
+
980 
+ +
982 {
+ +
984 
+ +
986  if (of->shortest) {
+
987  int64_t end = av_rescale_q(ost->sync_opts - ost->first_pts, ost->enc_ctx->time_base, AV_TIME_BASE_Q);
+
988  of->recording_time = FFMIN(of->recording_time, end);
+
989  }
+
990 }
+
991 
+
992 /*
+
993  * Send a single packet to the output, applying any bitstream filters
+
994  * associated with the output stream. This may result in any number
+
995  * of packets actually being written, depending on what bitstream
+
996  * filters are applied. The supplied packet is consumed and will be
+
997  * blank (as if newly-allocated) when this function returns.
+
998  *
+
999  * If eof is set, instead indicate EOF to all bitstream filters and
+
1000  * therefore flush any delayed packets to the output. A blank packet
+
1001  * must be supplied in this case.
+
1002  */
+
1003 static void output_packet(OutputFile *of, AVPacket *pkt,
+
1004  OutputStream *ost, int eof)
+
1005 {
+
1006  int ret = 0;
+
1007 
+
1008  /* apply the output bitstream filters */
+
1009  if (ost->bsf_ctx) {
+
1010  ret = av_bsf_send_packet(ost->bsf_ctx, eof ? NULL : pkt);
+
1011  if (ret < 0)
+
1012  goto finish;
+
1013  while ((ret = av_bsf_receive_packet(ost->bsf_ctx, pkt)) >= 0)
+
1014  write_packet(of, pkt, ost, 0);
+
1015  if (ret == AVERROR(EAGAIN))
+
1016  ret = 0;
+
1017  } else if (!eof)
+
1018  write_packet(of, pkt, ost, 0);
+
1019 
+
1020 finish:
+
1021  if (ret < 0 && ret != AVERROR_EOF) {
+
1022  av_log(NULL, AV_LOG_ERROR, "Error applying bitstream filters to an output "
+
1023  "packet for stream #%d:%d.\n", ost->file_index, ost->index);
+
1024  if(exit_on_error)
+
1025  exit_program(1);
+
1026  }
+
1027 }
+
1028 
+ +
1030 {
+ +
1032 
+
1033  if (of->recording_time != INT64_MAX &&
+
1034  av_compare_ts(ost->sync_opts - ost->first_pts, ost->enc_ctx->time_base, of->recording_time,
+
1035  AV_TIME_BASE_Q) >= 0) {
+ +
1037  return 0;
+
1038  }
+
1039  return 1;
+
1040 }
+
1041 
+
1042 static double adjust_frame_pts_to_encoder_tb(OutputFile *of, OutputStream *ost, AVFrame *frame)
+
1043 {
+
1044  double float_pts = AV_NOPTS_VALUE; // this is identical to frame.pts but with higher precision
+
1045  AVCodecContext *enc = ost->enc_ctx;
+
1046  if (!frame || frame->pts == AV_NOPTS_VALUE ||
+
1047  !enc || !ost->filter || !ost->filter->graph->graph)
+
1048  goto early_exit;
+
1049 
+
1050  {
+
1051  AVFilterContext *filter = ost->filter->filter;
+
1052 
+
1053  int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? 0 : of->start_time;
+
1054  AVRational filter_tb = av_buffersink_get_time_base(filter);
+
1055  AVRational tb = enc->time_base;
+
1056  int extra_bits = av_clip(29 - av_log2(tb.den), 0, 16);
+
1057 
+
1058  tb.den <<= extra_bits;
+
1059  float_pts =
+
1060  av_rescale_q(frame->pts, filter_tb, tb) -
+
1061  av_rescale_q(start_time, AV_TIME_BASE_Q, tb);
+
1062  float_pts /= 1 << extra_bits;
+
1063  // avoid exact midoints to reduce the chance of rounding differences, this can be removed in case the fps code is changed to work with integers
+
1064  float_pts += FFSIGN(float_pts) * 1.0 / (1<<17);
+
1065 
+
1066  frame->pts =
+
1067  av_rescale_q(frame->pts, filter_tb, enc->time_base) -
+
1068  av_rescale_q(start_time, AV_TIME_BASE_Q, enc->time_base);
+
1069  }
+
1070 
+
1071 early_exit:
+
1072 
+
1073  if (debug_ts) {
+
1074  av_log(NULL, AV_LOG_INFO, "filter -> pts:%s pts_time:%s exact:%f time_base:%d/%d\n",
+
1075  frame ? av_ts2str(frame->pts) : "NULL",
+
1076  frame ? av_ts2timestr(frame->pts, &enc->time_base) : "NULL",
+
1077  float_pts,
+
1078  enc ? enc->time_base.num : -1,
+
1079  enc ? enc->time_base.den : -1);
+
1080  }
+
1081 
+
1082  return float_pts;
+
1083 }
+
1084 
+
1085 static int init_output_stream(OutputStream *ost, AVFrame *frame, char *error, int error_len);
+
1086 
+
1087 static int init_output_stream_wrapper(OutputStream *ost, AVFrame *frame, unsigned int fatal)
+
1088 {
+
1089  int ret = AVERROR_BUG;
+
1090  char error[1024] = {0};
+
1091 
+
1092  if (ost->initialized)
+
1093  return 0;
+
1094 
+
1095  ret = init_output_stream(ost, frame, error, sizeof(error));
+
1096  if (ret < 0) {
+
1097  av_log(NULL, AV_LOG_ERROR, "Error initializing output stream %d:%d -- %s\n",
+
1098  ost->file_index, ost->index, error);
+
1099 
+
1100  if (fatal)
+
1101  exit_program(1);
+
1102  }
+
1103 
+
1104  return ret;
+
1105 }
+
1106 
+ +
1108  AVFrame *frame)
+
1109 {
+
1110  AVCodecContext *enc = ost->enc_ctx;
+
1111  AVPacket *pkt = ost->pkt;
+
1112  int ret;
+
1113 
+
1114  adjust_frame_pts_to_encoder_tb(of, ost, frame);
+
1115 
+
1116  if (!check_recording_time(ost))
+
1117  return;
+
1118 
+
1119  if (frame->pts == AV_NOPTS_VALUE || audio_sync_method < 0)
+
1120  frame->pts = ost->sync_opts;
+
1121  ost->sync_opts = frame->pts + frame->nb_samples;
+
1122  ost->samples_encoded += frame->nb_samples;
+
1123  ost->frames_encoded++;
+
1124 
+
1125  update_benchmark(NULL);
+
1126  if (debug_ts) {
+
1127  av_log(NULL, AV_LOG_INFO, "encoder <- type:audio "
+
1128  "frame_pts:%s frame_pts_time:%s time_base:%d/%d\n",
+
1129  av_ts2str(frame->pts), av_ts2timestr(frame->pts, &enc->time_base),
+
1130  enc->time_base.num, enc->time_base.den);
+
1131  }
+
1132 
+
1133  ret = avcodec_send_frame(enc, frame);
+
1134  if (ret < 0)
+
1135  goto error;
+
1136 
+
1137  while (1) {
+
1138  av_packet_unref(pkt);
+
1139  ret = avcodec_receive_packet(enc, pkt);
+
1140  if (ret == AVERROR(EAGAIN))
+
1141  break;
+
1142  if (ret < 0)
+
1143  goto error;
+
1144 
+
1145  update_benchmark("encode_audio %d.%d", ost->file_index, ost->index);
+
1146 
+
1147  av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
+
1148 
+
1149  if (debug_ts) {
+
1150  av_log(NULL, AV_LOG_INFO, "encoder -> type:audio "
+
1151  "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
+
1152  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
+
1153  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
+
1154  }
+
1155 
+
1156  output_packet(of, pkt, ost, 0);
+
1157  }
+
1158 
+
1159  return;
+
1160 error:
+
1161  av_log(NULL, AV_LOG_FATAL, "Audio encoding failed\n");
+
1162  exit_program(1);
+
1163 }
+
1164 
+
1165 static void do_subtitle_out(OutputFile *of,
+
1166  OutputStream *ost,
+
1167  AVSubtitle *sub)
+
1168 {
+
1169  int subtitle_out_max_size = 1024 * 1024;
+
1170  int subtitle_out_size, nb, i;
+
1171  AVCodecContext *enc;
+
1172  AVPacket *pkt = ost->pkt;
+
1173  int64_t pts;
+
1174 
+
1175  if (sub->pts == AV_NOPTS_VALUE) {
+
1176  av_log(NULL, AV_LOG_ERROR, "Subtitle packets must have a pts\n");
+
1177  if (exit_on_error)
+
1178  exit_program(1);
+
1179  return;
+
1180  }
+
1181 
+
1182  enc = ost->enc_ctx;
+
1183 
+
1184  if (!subtitle_out) {
+
1185  subtitle_out = av_malloc(subtitle_out_max_size);
+
1186  if (!subtitle_out) {
+
1187  av_log(NULL, AV_LOG_FATAL, "Failed to allocate subtitle_out\n");
+
1188  exit_program(1);
+
1189  }
+
1190  }
+
1191 
+
1192  /* Note: DVB subtitle need one packet to draw them and one other
+
1193  packet to clear them */
+
1194  /* XXX: signal it in the codec context ? */
+
1195  if (enc->codec_id == AV_CODEC_ID_DVB_SUBTITLE)
+
1196  nb = 2;
+
1197  else
+
1198  nb = 1;
+
1199 
+
1200  /* shift timestamp to honor -ss and make check_recording_time() work with -t */
+
1201  pts = sub->pts;
+
1202  if (output_files[ost->file_index]->start_time != AV_NOPTS_VALUE)
+ +
1204  for (i = 0; i < nb; i++) {
+
1205  unsigned save_num_rects = sub->num_rects;
+
1206 
+
1207  ost->sync_opts = av_rescale_q(pts, AV_TIME_BASE_Q, enc->time_base);
+
1208  if (!check_recording_time(ost))
+
1209  return;
+
1210 
+
1211  sub->pts = pts;
+
1212  // start_display_time is required to be 0
+
1213  sub->pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, AV_TIME_BASE_Q);
+
1214  sub->end_display_time -= sub->start_display_time;
+
1215  sub->start_display_time = 0;
+
1216  if (i == 1)
+
1217  sub->num_rects = 0;
+
1218 
+
1219  ost->frames_encoded++;
+
1220 
+
1221  subtitle_out_size = avcodec_encode_subtitle(enc, subtitle_out,
+
1222  subtitle_out_max_size, sub);
+
1223  if (i == 1)
+
1224  sub->num_rects = save_num_rects;
+
1225  if (subtitle_out_size < 0) {
+
1226  av_log(NULL, AV_LOG_FATAL, "Subtitle encoding failed\n");
+
1227  exit_program(1);
+
1228  }
+
1229 
+
1230  av_packet_unref(pkt);
+
1231  pkt->data = subtitle_out;
+
1232  pkt->size = subtitle_out_size;
+
1233  pkt->pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->mux_timebase);
+
1234  pkt->duration = av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
+
1235  if (enc->codec_id == AV_CODEC_ID_DVB_SUBTITLE) {
+
1236  /* XXX: the pts correction is handled here. Maybe handling
+
1237  it in the codec would be better */
+
1238  if (i == 0)
+
1239  pkt->pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
+
1240  else
+
1241  pkt->pts += av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
+
1242  }
+
1243  pkt->dts = pkt->pts;
+
1244  output_packet(of, pkt, ost, 0);
+
1245  }
+
1246 }
+
1247 
+
1248 static void do_video_out(OutputFile *of,
+
1249  OutputStream *ost,
+
1250  AVFrame *next_picture)
+
1251 {
+
1252  int ret, format_video_sync;
+
1253  AVPacket *pkt = ost->pkt;
+
1254  AVCodecContext *enc = ost->enc_ctx;
+
1255  AVRational frame_rate;
+
1256  int nb_frames, nb0_frames, i;
+
1257  double delta, delta0;
+
1258  double duration = 0;
+
1259  double sync_ipts = AV_NOPTS_VALUE;
+
1260  int frame_size = 0;
+
1261  InputStream *ist = NULL;
+
1262  AVFilterContext *filter = ost->filter->filter;
+
1263 
+
1264  init_output_stream_wrapper(ost, next_picture, 1);
+
1265  sync_ipts = adjust_frame_pts_to_encoder_tb(of, ost, next_picture);
+
1266 
+
1267  if (ost->source_index >= 0)
+ +
1269 
+
1270  frame_rate = av_buffersink_get_frame_rate(filter);
+
1271  if (frame_rate.num > 0 && frame_rate.den > 0)
+
1272  duration = 1/(av_q2d(frame_rate) * av_q2d(enc->time_base));
+
1273 
+
1274  if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
+
1275  duration = FFMIN(duration, 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base)));
+
1276 
+
1277  if (!ost->filters_script &&
+
1278  !ost->filters &&
+
1279  (nb_filtergraphs == 0 || !filtergraphs[0]->graph_desc) &&
+
1280  next_picture &&
+
1281  ist &&
+
1282  lrintf(next_picture->pkt_duration * av_q2d(ist->st->time_base) / av_q2d(enc->time_base)) > 0) {
+
1283  duration = lrintf(next_picture->pkt_duration * av_q2d(ist->st->time_base) / av_q2d(enc->time_base));
+
1284  }
+
1285 
+
1286  if (!next_picture) {
+
1287  //end, flushing
+
1288  nb0_frames = nb_frames = mid_pred(ost->last_nb0_frames[0],
+
1289  ost->last_nb0_frames[1],
+
1290  ost->last_nb0_frames[2]);
+
1291  } else {
+
1292  delta0 = sync_ipts - ost->sync_opts; // delta0 is the "drift" between the input frame (next_picture) and where it would fall in the output.
+
1293  delta = delta0 + duration;
+
1294 
+
1295  /* by default, we output a single frame */
+
1296  nb0_frames = 0; // tracks the number of times the PREVIOUS frame should be duplicated, mostly for variable framerate (VFR)
+
1297  nb_frames = 1;
+
1298 
+
1299  format_video_sync = video_sync_method;
+
1300  if (format_video_sync == VSYNC_AUTO) {
+
1301  if(!strcmp(of->ctx->oformat->name, "avi")) {
+
1302  format_video_sync = VSYNC_VFR;
+
1303  } else
+
1304  format_video_sync = (of->ctx->oformat->flags & AVFMT_VARIABLE_FPS) ? ((of->ctx->oformat->flags & AVFMT_NOTIMESTAMPS) ? VSYNC_PASSTHROUGH : VSYNC_VFR) : VSYNC_CFR;
+
1305  if ( ist
+
1306  && format_video_sync == VSYNC_CFR
+
1307  && input_files[ist->file_index]->ctx->nb_streams == 1
+
1308  && input_files[ist->file_index]->input_ts_offset == 0) {
+
1309  format_video_sync = VSYNC_VSCFR;
+
1310  }
+
1311  if (format_video_sync == VSYNC_CFR && copy_ts) {
+
1312  format_video_sync = VSYNC_VSCFR;
+
1313  }
+
1314  }
+
1315  ost->is_cfr = (format_video_sync == VSYNC_CFR || format_video_sync == VSYNC_VSCFR);
+
1316 
+
1317  if (delta0 < 0 &&
+
1318  delta > 0 &&
+
1319  format_video_sync != VSYNC_PASSTHROUGH &&
+
1320  format_video_sync != VSYNC_DROP) {
+
1321  if (delta0 < -0.6) {
+
1322  av_log(NULL, AV_LOG_VERBOSE, "Past duration %f too large\n", -delta0);
+
1323  } else
+
1324  av_log(NULL, AV_LOG_DEBUG, "Clipping frame in rate conversion by %f\n", -delta0);
+
1325  sync_ipts = ost->sync_opts;
+
1326  duration += delta0;
+
1327  delta0 = 0;
+
1328  }
+
1329 
+
1330  switch (format_video_sync) {
+
1331  case VSYNC_VSCFR:
+
1332  if (ost->frame_number == 0 && delta0 >= 0.5) {
+
1333  av_log(NULL, AV_LOG_DEBUG, "Not duplicating %d initial frames\n", (int)lrintf(delta0));
+
1334  delta = duration;
+
1335  delta0 = 0;
+
1336  ost->sync_opts = llrint(sync_ipts);
+
1337  }
+
1338  case VSYNC_CFR:
+
1339  // FIXME set to 0.5 after we fix some dts/pts bugs like in avidec.c
+
1340  if (frame_drop_threshold && delta < frame_drop_threshold && ost->frame_number) {
+
1341  nb_frames = 0;
+
1342  } else if (delta < -1.1)
+
1343  nb_frames = 0;
+
1344  else if (delta > 1.1) {
+
1345  nb_frames = lrintf(delta);
+
1346  if (delta0 > 1.1)
+
1347  nb0_frames = llrintf(delta0 - 0.6);
+
1348  }
+
1349  break;
+
1350  case VSYNC_VFR:
+
1351  if (delta <= -0.6)
+
1352  nb_frames = 0;
+
1353  else if (delta > 0.6)
+
1354  ost->sync_opts = llrint(sync_ipts);
+
1355  break;
+
1356  case VSYNC_DROP:
+
1357  case VSYNC_PASSTHROUGH:
+
1358  ost->sync_opts = llrint(sync_ipts);
+
1359  break;
+
1360  default:
+
1361  av_assert0(0);
+
1362  }
+
1363  }
+
1364 
+
1365  nb_frames = FFMIN(nb_frames, ost->max_frames - ost->frame_number);
+
1366  nb0_frames = FFMIN(nb0_frames, nb_frames);
+
1367 
+
1368  memmove(ost->last_nb0_frames + 1,
+ +
1370  sizeof(ost->last_nb0_frames[0]) * (FF_ARRAY_ELEMS(ost->last_nb0_frames) - 1));
+
1371  ost->last_nb0_frames[0] = nb0_frames;
+
1372 
+
1373  if (nb0_frames == 0 && ost->last_dropped) {
+
1374  nb_frames_drop++;
+
1375  av_log(NULL, AV_LOG_VERBOSE,
+
1376  "*** dropping frame %d from stream %d at ts %"PRId64"\n",
+
1377  ost->frame_number, ost->st->index, ost->last_frame->pts);
+
1378  }
+
1379  if (nb_frames > (nb0_frames && ost->last_dropped) + (nb_frames > nb0_frames)) {
+
1380  if (nb_frames > dts_error_threshold * 30) {
+
1381  av_log(NULL, AV_LOG_ERROR, "%d frame duplication too large, skipping\n", nb_frames - 1);
+
1382  nb_frames_drop++;
+
1383  return;
+
1384  }
+
1385  nb_frames_dup += nb_frames - (nb0_frames && ost->last_dropped) - (nb_frames > nb0_frames);
+
1386  av_log(NULL, AV_LOG_VERBOSE, "*** %d dup!\n", nb_frames - 1);
+
1387  if (nb_frames_dup > dup_warning) {
+
1388  av_log(NULL, AV_LOG_WARNING, "More than %d frames duplicated\n", dup_warning);
+
1389  dup_warning *= 10;
+
1390  }
+
1391  }
+
1392  ost->last_dropped = nb_frames == nb0_frames && next_picture;
+
1393  ost->dropped_keyframe = ost->last_dropped && next_picture && next_picture->key_frame;
+
1394 
+
1395  /* duplicates frame if needed */
+
1396  for (i = 0; i < nb_frames; i++) {
+
1397  AVFrame *in_picture;
+
1398  int forced_keyframe = 0;
+
1399  double pts_time;
+
1400 
+
1401  if (i < nb0_frames && ost->last_frame) {
+
1402  in_picture = ost->last_frame;
+
1403  } else
+
1404  in_picture = next_picture;
+
1405 
+
1406  if (!in_picture)
+
1407  return;
+
1408 
+
1409  in_picture->pts = ost->sync_opts;
+
1410 
+
1411  if (!check_recording_time(ost))
+
1412  return;
+
1413 
+
1414  in_picture->quality = enc->global_quality;
+
1415  in_picture->pict_type = 0;
+
1416 
+
1417  if (ost->forced_kf_ref_pts == AV_NOPTS_VALUE &&
+
1418  in_picture->pts != AV_NOPTS_VALUE)
+
1419  ost->forced_kf_ref_pts = in_picture->pts;
+
1420 
+
1421  pts_time = in_picture->pts != AV_NOPTS_VALUE ?
+
1422  (in_picture->pts - ost->forced_kf_ref_pts) * av_q2d(enc->time_base) : NAN;
+ +
1424  in_picture->pts >= ost->forced_kf_pts[ost->forced_kf_index]) {
+
1425  ost->forced_kf_index++;
+
1426  forced_keyframe = 1;
+
1427  } else if (ost->forced_keyframes_pexpr) {
+
1428  double res;
+ +
1430  res = av_expr_eval(ost->forced_keyframes_pexpr,
+ +
1432  ff_dlog(NULL, "force_key_frame: n:%f n_forced:%f prev_forced_n:%f t:%f prev_forced_t:%f -> res:%f\n",
+ + + + + +
1438  res);
+
1439  if (res) {
+
1440  forced_keyframe = 1;
+ + + + + +
1446  }
+
1447 
+ +
1449  } else if ( ost->forced_keyframes
+
1450  && !strncmp(ost->forced_keyframes, "source", 6)
+
1451  && in_picture->key_frame==1
+
1452  && !i) {
+
1453  forced_keyframe = 1;
+
1454  } else if ( ost->forced_keyframes
+
1455  && !strncmp(ost->forced_keyframes, "source_no_drop", 14)
+
1456  && !i) {
+
1457  forced_keyframe = (in_picture->key_frame == 1) || ost->dropped_keyframe;
+
1458  ost->dropped_keyframe = 0;
+
1459  }
+
1460 
+
1461  if (forced_keyframe) {
+
1462  in_picture->pict_type = AV_PICTURE_TYPE_I;
+
1463  av_log(NULL, AV_LOG_DEBUG, "Forced keyframe at time %f\n", pts_time);
+
1464  }
+
1465 
+
1466  update_benchmark(NULL);
+
1467  if (debug_ts) {
+
1468  av_log(NULL, AV_LOG_INFO, "encoder <- type:video "
+
1469  "frame_pts:%s frame_pts_time:%s time_base:%d/%d\n",
+
1470  av_ts2str(in_picture->pts), av_ts2timestr(in_picture->pts, &enc->time_base),
+
1471  enc->time_base.num, enc->time_base.den);
+
1472  }
+
1473 
+
1474  ost->frames_encoded++;
+
1475 
+
1476  ret = avcodec_send_frame(enc, in_picture);
+
1477  if (ret < 0)
+
1478  goto error;
+
1479  // Make sure Closed Captions will not be duplicated
+
1480  av_frame_remove_side_data(in_picture, AV_FRAME_DATA_A53_CC);
+
1481 
+
1482  while (1) {
+
1483  av_packet_unref(pkt);
+
1484  ret = avcodec_receive_packet(enc, pkt);
+
1485  update_benchmark("encode_video %d.%d", ost->file_index, ost->index);
+
1486  if (ret == AVERROR(EAGAIN))
+
1487  break;
+
1488  if (ret < 0)
+
1489  goto error;
+
1490 
+
1491  if (debug_ts) {
+
1492  av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
+
1493  "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
+
1494  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
+
1495  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
+
1496  }
+
1497 
+
1498  if (pkt->pts == AV_NOPTS_VALUE && !(enc->codec->capabilities & AV_CODEC_CAP_DELAY))
+
1499  pkt->pts = ost->sync_opts;
+
1500 
+
1501  av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
+
1502 
+
1503  if (debug_ts) {
+
1504  av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
+
1505  "pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
+
1506  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->mux_timebase),
+
1507  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->mux_timebase));
+
1508  }
+
1509 
+
1510  frame_size = pkt->size;
+
1511  output_packet(of, pkt, ost, 0);
+
1512 
+
1513  /* if two pass, output log */
+
1514  if (ost->logfile && enc->stats_out) {
+
1515  fprintf(ost->logfile, "%s", enc->stats_out);
+
1516  }
+
1517  }
+
1518  ost->sync_opts++;
+
1519  /*
+
1520  * For video, number of frames in == number of packets out.
+
1521  * But there may be reordering, so we can't throw away frames on encoder
+
1522  * flush, we need to limit them here, before they go into encoder.
+
1523  */
+
1524  ost->frame_number++;
+
1525 
+
1526  if (vstats_filename && frame_size)
+
1527  do_video_stats(ost, frame_size);
+
1528  }
+
1529 
+
1530  if (!ost->last_frame)
+
1531  ost->last_frame = av_frame_alloc();
+
1532  av_frame_unref(ost->last_frame);
+
1533  if (next_picture && ost->last_frame)
+
1534  av_frame_ref(ost->last_frame, next_picture);
+
1535  else
+
1536  av_frame_free(&ost->last_frame);
+
1537 
+
1538  return;
+
1539 error:
+
1540  av_log(NULL, AV_LOG_FATAL, "Video encoding failed\n");
+
1541  exit_program(1);
+
1542 }
+
1543 
+
1544 static double psnr(double d)
+
1545 {
+
1546  return -10.0 * log10(d);
+
1547 }
+
1548 
+
1549 static void do_video_stats(OutputStream *ost, int frame_size)
+
1550 {
+
1551  AVCodecContext *enc;
+
1552  int frame_number;
+
1553  double ti1, bitrate, avg_bitrate;
+
1554 
+
1555  /* this is executed just the first time do_video_stats is called */
+
1556  if (!vstats_file) {
+
1557  vstats_file = fopen(vstats_filename, "w");
+
1558  if (!vstats_file) {
+
1559  perror("fopen");
+
1560  exit_program(1);
+
1561  }
+
1562  }
+
1563 
+
1564  enc = ost->enc_ctx;
+
1565  if (enc->codec_type == AVMEDIA_TYPE_VIDEO) {
+
1566  frame_number = ost->st->nb_frames;
+
1567  if (vstats_version <= 1) {
+
1568  fprintf(vstats_file, "frame= %5d q= %2.1f ", frame_number,
+
1569  ost->quality / (float)FF_QP2LAMBDA);
+
1570  } else {
+
1571  fprintf(vstats_file, "out= %2d st= %2d frame= %5d q= %2.1f ", ost->file_index, ost->index, frame_number,
+
1572  ost->quality / (float)FF_QP2LAMBDA);
+
1573  }
+
1574 
+
1575  if (ost->error[0]>=0 && (enc->flags & AV_CODEC_FLAG_PSNR))
+
1576  fprintf(vstats_file, "PSNR= %6.2f ", psnr(ost->error[0] / (enc->width * enc->height * 255.0 * 255.0)));
+
1577 
+
1578  fprintf(vstats_file,"f_size= %6d ", frame_size);
+
1579  /* compute pts value */
+
1580  ti1 = av_stream_get_end_pts(ost->st) * av_q2d(ost->st->time_base);
+
1581  if (ti1 < 0.01)
+
1582  ti1 = 0.01;
+
1583 
+
1584  bitrate = (frame_size * 8) / av_q2d(enc->time_base) / 1000.0;
+
1585  avg_bitrate = (double)(ost->data_size * 8) / ti1 / 1000.0;
+
1586  fprintf(vstats_file, "s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s ",
+
1587  (double)ost->data_size / 1024, ti1, bitrate, avg_bitrate);
+
1588  fprintf(vstats_file, "type= %c\n", av_get_picture_type_char(ost->pict_type));
+
1589  }
+
1590 }
+
1591 
+ +
1593 {
+ +
1595  int i;
+
1596 
+ +
1598 
+
1599  if (of->shortest) {
+
1600  for (i = 0; i < of->ctx->nb_streams; i++)
+ +
1602  }
+
1603 }
+
1604 
+
1611 static int reap_filters(int flush)
+
1612 {
+
1613  AVFrame *filtered_frame = NULL;
+
1614  int i;
+
1615 
+
1616  /* Reap all buffers present in the buffer sinks */
+
1617  for (i = 0; i < nb_output_streams; i++) {
+ + +
1620  AVFilterContext *filter;
+
1621  AVCodecContext *enc = ost->enc_ctx;
+
1622  int ret = 0;
+
1623 
+
1624  if (!ost->filter || !ost->filter->graph->graph)
+
1625  continue;
+
1626  filter = ost->filter->filter;
+
1627 
+
1628  /*
+
1629  * Unlike video, with audio the audio frame size matters.
+
1630  * Currently we are fully reliant on the lavfi filter chain to
+
1631  * do the buffering deed for us, and thus the frame size parameter
+
1632  * needs to be set accordingly. Where does one get the required
+
1633  * frame size? From the initialized AVCodecContext of an audio
+
1634  * encoder. Thus, if we have gotten to an audio stream, initialize
+
1635  * the encoder earlier than receiving the first AVFrame.
+
1636  */
+
1637  if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_AUDIO)
+
1638  init_output_stream_wrapper(ost, NULL, 1);
+
1639 
+
1640  if (!ost->pkt && !(ost->pkt = av_packet_alloc())) {
+
1641  return AVERROR(ENOMEM);
+
1642  }
+
1643  if (!ost->filtered_frame && !(ost->filtered_frame = av_frame_alloc())) {
+
1644  return AVERROR(ENOMEM);
+
1645  }
+
1646  filtered_frame = ost->filtered_frame;
+
1647 
+
1648  while (1) {
+
1649  ret = av_buffersink_get_frame_flags(filter, filtered_frame,
+
1650  AV_BUFFERSINK_FLAG_NO_REQUEST);
+
1651  if (ret < 0) {
+
1652  if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) {
+
1653  av_log(NULL, AV_LOG_WARNING,
+
1654  "Error in av_buffersink_get_frame_flags(): %s\n", av_err2str(ret));
+
1655  } else if (flush && ret == AVERROR_EOF) {
+
1656  if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_VIDEO)
+
1657  do_video_out(of, ost, NULL);
+
1658  }
+
1659  break;
+
1660  }
+
1661  if (ost->finished) {
+
1662  av_frame_unref(filtered_frame);
+
1663  continue;
+
1664  }
+
1665 
+
1666  switch (av_buffersink_get_type(filter)) {
+
1667  case AVMEDIA_TYPE_VIDEO:
+
1668  if (!ost->frame_aspect_ratio.num)
+
1669  enc->sample_aspect_ratio = filtered_frame->sample_aspect_ratio;
+
1670 
+
1671  do_video_out(of, ost, filtered_frame);
+
1672  break;
+
1673  case AVMEDIA_TYPE_AUDIO:
+
1674  if (!(enc->codec->capabilities & AV_CODEC_CAP_PARAM_CHANGE) &&
+
1675  enc->channels != filtered_frame->channels) {
+
1676  av_log(NULL, AV_LOG_ERROR,
+
1677  "Audio filter graph output is not normalized and encoder does not support parameter changes\n");
+
1678  break;
+
1679  }
+
1680  do_audio_out(of, ost, filtered_frame);
+
1681  break;
+
1682  default:
+
1683  // TODO support subtitle filters
+
1684  av_assert0(0);
+
1685  }
+
1686 
+
1687  av_frame_unref(filtered_frame);
+
1688  }
+
1689  }
+
1690 
+
1691  return 0;
+
1692 }
+
1693 
+
1694 static void print_final_stats(int64_t total_size)
+
1695 {
+
1696  uint64_t video_size = 0, audio_size = 0, extra_size = 0, other_size = 0;
+
1697  uint64_t subtitle_size = 0;
+
1698  uint64_t data_size = 0;
+
1699  float percent = -1.0;
+
1700  int i, j;
+
1701  int pass1_used = 1;
+
1702 
+
1703  for (i = 0; i < nb_output_streams; i++) {
+ +
1705  switch (ost->enc_ctx->codec_type) {
+
1706  case AVMEDIA_TYPE_VIDEO: video_size += ost->data_size; break;
+
1707  case AVMEDIA_TYPE_AUDIO: audio_size += ost->data_size; break;
+
1708  case AVMEDIA_TYPE_SUBTITLE: subtitle_size += ost->data_size; break;
+
1709  default: other_size += ost->data_size; break;
+
1710  }
+
1711  extra_size += ost->enc_ctx->extradata_size;
+
1712  data_size += ost->data_size;
+
1713  if ( (ost->enc_ctx->flags & (AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2))
+
1714  != AV_CODEC_FLAG_PASS1)
+
1715  pass1_used = 0;
+
1716  }
+
1717 
+
1718  if (data_size && total_size>0 && total_size >= data_size)
+
1719  percent = 100.0 * (total_size - data_size) / data_size;
+
1720 
+
1721  av_log(NULL, AV_LOG_INFO, "video:%1.0fkB audio:%1.0fkB subtitle:%1.0fkB other streams:%1.0fkB global headers:%1.0fkB muxing overhead: ",
+
1722  video_size / 1024.0,
+
1723  audio_size / 1024.0,
+
1724  subtitle_size / 1024.0,
+
1725  other_size / 1024.0,
+
1726  extra_size / 1024.0);
+
1727  if (percent >= 0.0)
+
1728  av_log(NULL, AV_LOG_INFO, "%f%%", percent);
+
1729  else
+
1730  av_log(NULL, AV_LOG_INFO, "unknown");
+
1731  av_log(NULL, AV_LOG_INFO, "\n");
+
1732 
+
1733  /* print verbose per-stream stats */
+
1734  for (i = 0; i < nb_input_files; i++) {
+
1735  InputFile *f = input_files[i];
+
1736  uint64_t total_packets = 0, total_size = 0;
+
1737 
+
1738  av_log(NULL, AV_LOG_VERBOSE, "Input file #%d (%s):\n",
+
1739  i, f->ctx->url);
+
1740 
+
1741  for (j = 0; j < f->nb_streams; j++) {
+ +
1743  enum AVMediaType type = ist->dec_ctx->codec_type;
+
1744 
+
1745  total_size += ist->data_size;
+
1746  total_packets += ist->nb_packets;
+
1747 
+
1748  av_log(NULL, AV_LOG_VERBOSE, " Input stream #%d:%d (%s): ",
+
1749  i, j, media_type_string(type));
+
1750  av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" packets read (%"PRIu64" bytes); ",
+
1751  ist->nb_packets, ist->data_size);
+
1752 
+
1753  if (ist->decoding_needed) {
+
1754  av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" frames decoded",
+
1755  ist->frames_decoded);
+
1756  if (type == AVMEDIA_TYPE_AUDIO)
+
1757  av_log(NULL, AV_LOG_VERBOSE, " (%"PRIu64" samples)", ist->samples_decoded);
+
1758  av_log(NULL, AV_LOG_VERBOSE, "; ");
+
1759  }
+
1760 
+
1761  av_log(NULL, AV_LOG_VERBOSE, "\n");
+
1762  }
+
1763 
+
1764  av_log(NULL, AV_LOG_VERBOSE, " Total: %"PRIu64" packets (%"PRIu64" bytes) demuxed\n",
+
1765  total_packets, total_size);
+
1766  }
+
1767 
+
1768  for (i = 0; i < nb_output_files; i++) {
+
1769  OutputFile *of = output_files[i];
+
1770  uint64_t total_packets = 0, total_size = 0;
+
1771 
+
1772  av_log(NULL, AV_LOG_VERBOSE, "Output file #%d (%s):\n",
+
1773  i, of->ctx->url);
+
1774 
+
1775  for (j = 0; j < of->ctx->nb_streams; j++) {
+ +
1777  enum AVMediaType type = ost->enc_ctx->codec_type;
+
1778 
+
1779  total_size += ost->data_size;
+
1780  total_packets += ost->packets_written;
+
1781 
+
1782  av_log(NULL, AV_LOG_VERBOSE, " Output stream #%d:%d (%s): ",
+
1783  i, j, media_type_string(type));
+
1784  if (ost->encoding_needed) {
+
1785  av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" frames encoded",
+
1786  ost->frames_encoded);
+
1787  if (type == AVMEDIA_TYPE_AUDIO)
+
1788  av_log(NULL, AV_LOG_VERBOSE, " (%"PRIu64" samples)", ost->samples_encoded);
+
1789  av_log(NULL, AV_LOG_VERBOSE, "; ");
+
1790  }
+
1791 
+
1792  av_log(NULL, AV_LOG_VERBOSE, "%"PRIu64" packets muxed (%"PRIu64" bytes); ",
+ +
1794 
+
1795  av_log(NULL, AV_LOG_VERBOSE, "\n");
+
1796  }
+
1797 
+
1798  av_log(NULL, AV_LOG_VERBOSE, " Total: %"PRIu64" packets (%"PRIu64" bytes) muxed\n",
+
1799  total_packets, total_size);
+
1800  }
+
1801  if(video_size + data_size + audio_size + subtitle_size + extra_size == 0){
+
1802  av_log(NULL, AV_LOG_WARNING, "Output file is empty, nothing was encoded ");
+
1803  if (pass1_used) {
+
1804  av_log(NULL, AV_LOG_WARNING, "\n");
+
1805  } else {
+
1806  av_log(NULL, AV_LOG_WARNING, "(check -ss / -t / -frames parameters if used)\n");
+
1807  }
+
1808  }
+
1809 }
+
1810 
+
1811 static void forward_report(int is_last_report, int64_t timer_start, int64_t cur_time)
+
1812 {
+
1813  AVFormatContext *oc = NULL;
+
1814  AVCodecContext *enc = NULL;
+
1815  OutputStream *ost = NULL;
+
1816  int64_t pts = INT64_MIN + 1;
+
1817  int vid, i;
+
1818 
+
1819  int frame_number = 0;
+
1820  float fps = 0;
+
1821  float quality = 0;
+
1822  int64_t total_size = 0;
+
1823  int seconds = 0;
+
1824  double bitrate = 0.0;
+
1825  double speed = 0.0;
+
1826 
+
1827  float t = (cur_time-timer_start) / 1000000.0;
+
1828 
+
1829  oc = output_files[0]->ctx;
+
1830 
+
1831  // 1. calculate size
+
1832  total_size = avio_size(oc->pb);
+
1833  if (total_size <= 0) {
+
1834  total_size = avio_tell(oc->pb);
+
1835  }
+
1836 
+
1837  vid = 0;
+
1838  for (i = 0; i < nb_output_streams; i++) {
+
1839  ost = output_streams[i];
+
1840  enc = ost->enc_ctx;
+
1841 
+
1842  if (!ost->stream_copy) {
+
1843 
+
1844  // 2. extract quality
+
1845  quality = ost->quality / (float) FF_QP2LAMBDA;
+
1846  }
+
1847 
+
1848  if (!vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
+
1849 
+
1850  // 3. extract frame number
+
1851  frame_number = ost->frame_number;
+
1852 
+
1853  // 4. calculate fps
+
1854  fps = t > 1 ? frame_number / t : 0;
+
1855  }
+
1856 
+
1857  // 5. calculate time
+
1858  if (av_stream_get_end_pts(ost->st) != AV_NOPTS_VALUE)
+
1859  pts = FFMAX(pts, av_rescale_q(av_stream_get_end_pts(ost->st),
+
1860  ost->st->time_base, AV_TIME_BASE_Q));
+
1861 
+
1862  vid = 1;
+
1863  }
+
1864 
+
1865  // 6. calculate time, with microseconds to milliseconds conversion
+
1866  seconds = FFABS(pts) / 1000;
+
1867 
+
1868  // 7. calculating kbit/s value
+
1869  bitrate = pts && total_size >= 0 ? total_size * 8 / (pts / 1000.0) : -1;
+
1870 
+
1871  // 9. calculate processing speed = processed stream duration/operation duration
+
1872  speed = t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1;
+
1873 
+
1874  // FORWARD DATA
+
1875  if (report_callback != NULL) {
+
1876  report_callback(frame_number, fps, quality, total_size, seconds, bitrate, speed);
+
1877  }
+
1878 }
+
1879 
+
1880 static void print_report(int is_last_report, int64_t timer_start, int64_t cur_time)
+
1881 {
+
1882  AVBPrint buf, buf_script;
+
1883  OutputStream *ost;
+
1884  AVFormatContext *oc;
+
1885  int64_t total_size;
+
1886  AVCodecContext *enc;
+
1887  int frame_number, vid, i;
+
1888  double bitrate;
+
1889  double speed;
+
1890  int64_t pts = INT64_MIN + 1;
+
1891  int hours, mins, secs, us;
+
1892  const char *hours_sign;
+
1893  int ret;
+
1894  float t;
+
1895 
+
1896  if (!is_last_report) {
+
1897  if (last_time == -1) {
+
1898  last_time = cur_time;
+
1899  }
+
1900  if (((cur_time - last_time) < stats_period && !first_report) ||
+ +
1902  return;
+
1903  last_time = cur_time;
+
1904  }
+
1905 
+
1906  forward_report(is_last_report, timer_start, cur_time);
+
1907 
+
1908  if (!print_stats && !is_last_report && !progress_avio)
+
1909  return;
+
1910 
+
1911  t = (cur_time-timer_start) / 1000000.0;
+
1912 
+
1913 
+
1914  oc = output_files[0]->ctx;
+
1915 
+
1916  total_size = avio_size(oc->pb);
+
1917  if (total_size <= 0) // FIXME improve avio_size() so it works with non seekable output too
+
1918  total_size = avio_tell(oc->pb);
+
1919 
+
1920  vid = 0;
+
1921  av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
1922  av_bprint_init(&buf_script, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
1923  for (i = 0; i < nb_output_streams; i++) {
+
1924  float q = -1;
+
1925  ost = output_streams[i];
+
1926  enc = ost->enc_ctx;
+
1927  if (!ost->stream_copy)
+
1928  q = ost->quality / (float) FF_QP2LAMBDA;
+
1929 
+
1930  if (vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
+
1931  av_bprintf(&buf, "q=%2.1f ", q);
+
1932  av_bprintf(&buf_script, "stream_%d_%d_q=%.1f\n",
+
1933  ost->file_index, ost->index, q);
+
1934  }
+
1935  if (!vid && enc->codec_type == AVMEDIA_TYPE_VIDEO) {
+
1936  float fps;
+
1937 
+
1938  frame_number = ost->frame_number;
+
1939  fps = t > 1 ? frame_number / t : 0;
+
1940  av_bprintf(&buf, "frame=%5d fps=%3.*f q=%3.1f ",
+
1941  frame_number, fps < 9.95, fps, q);
+
1942  av_bprintf(&buf_script, "frame=%d\n", frame_number);
+
1943  av_bprintf(&buf_script, "fps=%.2f\n", fps);
+
1944  av_bprintf(&buf_script, "stream_%d_%d_q=%.1f\n",
+
1945  ost->file_index, ost->index, q);
+
1946  if (is_last_report)
+
1947  av_bprintf(&buf, "L");
+
1948  if (qp_hist) {
+
1949  int j;
+
1950  int qp = lrintf(q);
+
1951  if (qp >= 0 && qp < FF_ARRAY_ELEMS(qp_histogram))
+
1952  qp_histogram[qp]++;
+
1953  for (j = 0; j < 32; j++)
+
1954  av_bprintf(&buf, "%X", av_log2(qp_histogram[j] + 1));
+
1955  }
+
1956 
+
1957  if ((enc->flags & AV_CODEC_FLAG_PSNR) && (ost->pict_type != AV_PICTURE_TYPE_NONE || is_last_report)) {
+
1958  int j;
+
1959  double error, error_sum = 0;
+
1960  double scale, scale_sum = 0;
+
1961  double p;
+
1962  char type[3] = { 'Y','U','V' };
+
1963  av_bprintf(&buf, "PSNR=");
+
1964  for (j = 0; j < 3; j++) {
+
1965  if (is_last_report) {
+
1966  error = enc->error[j];
+
1967  scale = enc->width * enc->height * 255.0 * 255.0 * frame_number;
+
1968  } else {
+
1969  error = ost->error[j];
+
1970  scale = enc->width * enc->height * 255.0 * 255.0;
+
1971  }
+
1972  if (j)
+
1973  scale /= 4;
+
1974  error_sum += error;
+
1975  scale_sum += scale;
+
1976  p = psnr(error / scale);
+
1977  av_bprintf(&buf, "%c:%2.2f ", type[j], p);
+
1978  av_bprintf(&buf_script, "stream_%d_%d_psnr_%c=%2.2f\n",
+
1979  ost->file_index, ost->index, type[j] | 32, p);
+
1980  }
+
1981  p = psnr(error_sum / scale_sum);
+
1982  av_bprintf(&buf, "*:%2.2f ", psnr(error_sum / scale_sum));
+
1983  av_bprintf(&buf_script, "stream_%d_%d_psnr_all=%2.2f\n",
+
1984  ost->file_index, ost->index, p);
+
1985  }
+
1986  vid = 1;
+
1987  }
+
1988  /* compute min output value */
+
1989  if (av_stream_get_end_pts(ost->st) != AV_NOPTS_VALUE) {
+
1990  pts = FFMAX(pts, av_rescale_q(av_stream_get_end_pts(ost->st),
+
1991  ost->st->time_base, AV_TIME_BASE_Q));
+
1992  if (copy_ts) {
+
1993  if (copy_ts_first_pts == AV_NOPTS_VALUE && pts > 1)
+ +
1995  if (copy_ts_first_pts != AV_NOPTS_VALUE)
+ +
1997  }
+
1998  }
+
1999 
+
2000  if (is_last_report)
+ +
2002  }
+
2003 
+
2004  secs = FFABS(pts) / AV_TIME_BASE;
+
2005  us = FFABS(pts) % AV_TIME_BASE;
+
2006  mins = secs / 60;
+
2007  secs %= 60;
+
2008  hours = mins / 60;
+
2009  mins %= 60;
+
2010  hours_sign = (pts < 0) ? "-" : "";
+
2011 
+
2012  bitrate = pts && total_size >= 0 ? total_size * 8 / (pts / 1000.0) : -1;
+
2013  speed = t != 0.0 ? (double)pts / AV_TIME_BASE / t : -1;
+
2014 
+
2015  if (total_size < 0) av_bprintf(&buf, "size=N/A time=");
+
2016  else av_bprintf(&buf, "size=%8.0fkB time=", total_size / 1024.0);
+
2017  if (pts == AV_NOPTS_VALUE) {
+
2018  av_bprintf(&buf, "N/A ");
+
2019  } else {
+
2020  av_bprintf(&buf, "%s%02d:%02d:%02d.%02d ",
+
2021  hours_sign, hours, mins, secs, (100 * us) / AV_TIME_BASE);
+
2022  }
+
2023 
+
2024  if (bitrate < 0) {
+
2025  av_bprintf(&buf, "bitrate=N/A");
+
2026  av_bprintf(&buf_script, "bitrate=N/A\n");
+
2027  }else{
+
2028  av_bprintf(&buf, "bitrate=%6.1fkbits/s", bitrate);
+
2029  av_bprintf(&buf_script, "bitrate=%6.1fkbits/s\n", bitrate);
+
2030  }
+
2031 
+
2032  if (total_size < 0) av_bprintf(&buf_script, "total_size=N/A\n");
+
2033  else av_bprintf(&buf_script, "total_size=%"PRId64"\n", total_size);
+
2034  if (pts == AV_NOPTS_VALUE) {
+
2035  av_bprintf(&buf_script, "out_time_us=N/A\n");
+
2036  av_bprintf(&buf_script, "out_time_ms=N/A\n");
+
2037  av_bprintf(&buf_script, "out_time=N/A\n");
+
2038  } else {
+
2039  av_bprintf(&buf_script, "out_time_us=%"PRId64"\n", pts);
+
2040  av_bprintf(&buf_script, "out_time_ms=%"PRId64"\n", pts);
+
2041  av_bprintf(&buf_script, "out_time=%s%02d:%02d:%02d.%06d\n",
+
2042  hours_sign, hours, mins, secs, us);
+
2043  }
+
2044 
+ +
2046  av_bprintf(&buf, " dup=%d drop=%d", nb_frames_dup, nb_frames_drop);
+
2047  av_bprintf(&buf_script, "dup_frames=%d\n", nb_frames_dup);
+
2048  av_bprintf(&buf_script, "drop_frames=%d\n", nb_frames_drop);
+
2049 
+
2050  if (speed < 0) {
+
2051  av_bprintf(&buf, " speed=N/A");
+
2052  av_bprintf(&buf_script, "speed=N/A\n");
+
2053  } else {
+
2054  av_bprintf(&buf, " speed=%4.3gx", speed);
+
2055  av_bprintf(&buf_script, "speed=%4.3gx\n", speed);
+
2056  }
+
2057 
+
2058  if (print_stats || is_last_report) {
+
2059  const char end = is_last_report ? '\n' : '\r';
+
2060  if (print_stats==1 && AV_LOG_INFO > av_log_get_level()) {
+
2061  fprintf(stderr, "%s %c", buf.str, end);
+
2062  } else
+
2063  av_log(NULL, AV_LOG_INFO, "%s %c", buf.str, end);
+
2064 
+
2065  fflush(stderr);
+
2066  }
+
2067  av_bprint_finalize(&buf, NULL);
+
2068 
+
2069  if (progress_avio) {
+
2070  av_bprintf(&buf_script, "progress=%s\n",
+
2071  is_last_report ? "end" : "continue");
+
2072  avio_write(progress_avio, buf_script.str,
+
2073  FFMIN(buf_script.len, buf_script.size - 1));
+
2074  avio_flush(progress_avio);
+
2075  av_bprint_finalize(&buf_script, NULL);
+
2076  if (is_last_report) {
+
2077  if ((ret = avio_closep(&progress_avio)) < 0)
+
2078  av_log(NULL, AV_LOG_ERROR,
+
2079  "Error closing progress log, loss of information possible: %s\n", av_err2str(ret));
+
2080  }
+
2081  }
+
2082 
+
2083  first_report = 0;
+
2084 
+
2085  if (is_last_report)
+
2086  print_final_stats(total_size);
+
2087 }
+
2088 
+
2089 static void ifilter_parameters_from_codecpar(InputFilter *ifilter, AVCodecParameters *par)
+
2090 {
+
2091  // We never got any input. Set a fake format, which will
+
2092  // come from libavformat.
+
2093  ifilter->format = par->format;
+
2094  ifilter->sample_rate = par->sample_rate;
+
2095  ifilter->channels = par->channels;
+
2096  ifilter->channel_layout = par->channel_layout;
+
2097  ifilter->width = par->width;
+
2098  ifilter->height = par->height;
+
2099  ifilter->sample_aspect_ratio = par->sample_aspect_ratio;
+
2100 }
+
2101 
+
2102 static void flush_encoders(void)
+
2103 {
+
2104  int i, ret;
+
2105 
+
2106  for (i = 0; i < nb_output_streams; i++) {
+ +
2108  AVCodecContext *enc = ost->enc_ctx;
+ +
2110 
+
2111  if (!ost->encoding_needed)
+
2112  continue;
+
2113 
+
2114  // Try to enable encoding with no input frames.
+
2115  // Maybe we should just let encoding fail instead.
+
2116  if (!ost->initialized) {
+
2117  FilterGraph *fg = ost->filter->graph;
+
2118 
+
2119  av_log(NULL, AV_LOG_WARNING,
+
2120  "Finishing stream %d:%d without any data written to it.\n",
+
2121  ost->file_index, ost->st->index);
+
2122 
+
2123  if (ost->filter && !fg->graph) {
+
2124  int x;
+
2125  for (x = 0; x < fg->nb_inputs; x++) {
+
2126  InputFilter *ifilter = fg->inputs[x];
+
2127  if (ifilter->format < 0)
+
2128  ifilter_parameters_from_codecpar(ifilter, ifilter->ist->st->codecpar);
+
2129  }
+
2130 
+ +
2132  continue;
+
2133 
+
2134  ret = configure_filtergraph(fg);
+
2135  if (ret < 0) {
+
2136  av_log(NULL, AV_LOG_ERROR, "Error configuring filter graph\n");
+
2137  exit_program(1);
+
2138  }
+
2139 
+ +
2141  }
+
2142 
+
2143  init_output_stream_wrapper(ost, NULL, 1);
+
2144  }
+
2145 
+
2146  if (enc->codec_type != AVMEDIA_TYPE_VIDEO && enc->codec_type != AVMEDIA_TYPE_AUDIO)
+
2147  continue;
+
2148 
+
2149  for (;;) {
+
2150  const char *desc = NULL;
+
2151  AVPacket *pkt = ost->pkt;
+
2152  int pkt_size;
+
2153 
+
2154  switch (enc->codec_type) {
+
2155  case AVMEDIA_TYPE_AUDIO:
+
2156  desc = "audio";
+
2157  break;
+
2158  case AVMEDIA_TYPE_VIDEO:
+
2159  desc = "video";
+
2160  break;
+
2161  default:
+
2162  av_assert0(0);
+
2163  }
+
2164 
+
2165  update_benchmark(NULL);
+
2166 
+
2167  av_packet_unref(pkt);
+
2168  while ((ret = avcodec_receive_packet(enc, pkt)) == AVERROR(EAGAIN)) {
+
2169  ret = avcodec_send_frame(enc, NULL);
+
2170  if (ret < 0) {
+
2171  av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n",
+
2172  desc,
+
2173  av_err2str(ret));
+
2174  exit_program(1);
+
2175  }
+
2176  }
+
2177 
+
2178  update_benchmark("flush_%s %d.%d", desc, ost->file_index, ost->index);
+
2179  if (ret < 0 && ret != AVERROR_EOF) {
+
2180  av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n",
+
2181  desc,
+
2182  av_err2str(ret));
+
2183  exit_program(1);
+
2184  }
+
2185  if (ost->logfile && enc->stats_out) {
+
2186  fprintf(ost->logfile, "%s", enc->stats_out);
+
2187  }
+
2188  if (ret == AVERROR_EOF) {
+
2189  output_packet(of, pkt, ost, 1);
+
2190  break;
+
2191  }
+
2192  if (ost->finished & MUXER_FINISHED) {
+
2193  av_packet_unref(pkt);
+
2194  continue;
+
2195  }
+
2196  av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
+
2197  pkt_size = pkt->size;
+
2198  output_packet(of, pkt, ost, 0);
+
2199  if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO && vstats_filename) {
+
2200  do_video_stats(ost, pkt_size);
+
2201  }
+
2202  }
+
2203  }
+
2204 }
+
2205 
+
2206 /*
+
2207  * Check whether a packet from ist should be written into ost at this time
+
2208  */
+ +
2210 {
+ +
2212  int ist_index = input_files[ist->file_index]->ist_index + ist->st->index;
+
2213 
+
2214  if (ost->source_index != ist_index)
+
2215  return 0;
+
2216 
+
2217  if (ost->finished)
+
2218  return 0;
+
2219 
+
2220  if (of->start_time != AV_NOPTS_VALUE && ist->pts < of->start_time)
+
2221  return 0;
+
2222 
+
2223  return 1;
+
2224 }
+
2225 
+
2226 static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *pkt)
+
2227 {
+ +
2229  InputFile *f = input_files [ist->file_index];
+
2230  int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? 0 : of->start_time;
+
2231  int64_t ost_tb_start_time = av_rescale_q(start_time, AV_TIME_BASE_Q, ost->mux_timebase);
+
2232  AVPacket *opkt = ost->pkt;
+
2233 
+
2234  av_packet_unref(opkt);
+
2235  // EOF: flush output bitstream filters.
+
2236  if (!pkt) {
+
2237  output_packet(of, opkt, ost, 1);
+
2238  return;
+
2239  }
+
2240 
+
2241  if ((!ost->frame_number && !(pkt->flags & AV_PKT_FLAG_KEY)) &&
+ +
2243  return;
+
2244 
+
2245  if (!ost->frame_number && !ost->copy_prior_start) {
+
2246  int64_t comp_start = start_time;
+
2247  if (copy_ts && f->start_time != AV_NOPTS_VALUE)
+
2248  comp_start = FFMAX(start_time, f->start_time + f->ts_offset);
+
2249  if (pkt->pts == AV_NOPTS_VALUE ?
+
2250  ist->pts < comp_start :
+
2251  pkt->pts < av_rescale_q(comp_start, AV_TIME_BASE_Q, ist->st->time_base))
+
2252  return;
+
2253  }
+
2254 
+
2255  if (of->recording_time != INT64_MAX &&
+
2256  ist->pts >= of->recording_time + start_time) {
+ +
2258  return;
+
2259  }
+
2260 
+
2261  if (f->recording_time != INT64_MAX) {
+
2262  start_time = 0;
+
2263  if (copy_ts) {
+
2264  start_time += f->start_time != AV_NOPTS_VALUE ? f->start_time : 0;
+
2265  start_time += start_at_zero ? 0 : f->ctx->start_time;
+
2266  }
+
2267  if (ist->pts >= f->recording_time + start_time) {
+ +
2269  return;
+
2270  }
+
2271  }
+
2272 
+
2273  /* force the input stream PTS */
+
2274  if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO)
+
2275  ost->sync_opts++;
+
2276 
+
2277  if (av_packet_ref(opkt, pkt) < 0)
+
2278  exit_program(1);
+
2279 
+
2280  if (pkt->pts != AV_NOPTS_VALUE)
+
2281  opkt->pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time;
+
2282 
+
2283  if (pkt->dts == AV_NOPTS_VALUE) {
+
2284  opkt->dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase);
+
2285  } else if (ost->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+
2286  int duration = av_get_audio_frame_duration(ist->dec_ctx, pkt->size);
+
2287  if(!duration)
+
2288  duration = ist->dec_ctx->frame_size;
+
2289  opkt->dts = av_rescale_delta(ist->st->time_base, pkt->dts,
+
2290  (AVRational){1, ist->dec_ctx->sample_rate}, duration,
+
2291  &ist->filter_in_rescale_delta_last, ost->mux_timebase);
+
2292  /* dts will be set immediately afterwards to what pts is now */
+
2293  opkt->pts = opkt->dts - ost_tb_start_time;
+
2294  } else
+
2295  opkt->dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase);
+
2296  opkt->dts -= ost_tb_start_time;
+
2297 
+
2298  opkt->duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase);
+
2299 
+
2300  output_packet(of, opkt, ost, 0);
+
2301 }
+
2302 
+ +
2304 {
+
2305  AVCodecContext *dec = ist->dec_ctx;
+
2306 
+
2307  if (!dec->channel_layout) {
+
2308  char layout_name[256];
+
2309 
+
2310  if (dec->channels > ist->guess_layout_max)
+
2311  return 0;
+
2312  dec->channel_layout = av_get_default_channel_layout(dec->channels);
+
2313  if (!dec->channel_layout)
+
2314  return 0;
+
2315  av_get_channel_layout_string(layout_name, sizeof(layout_name),
+
2316  dec->channels, dec->channel_layout);
+
2317  av_log(NULL, AV_LOG_WARNING, "Guessed Channel Layout for Input Stream "
+
2318  "#%d.%d : %s\n", ist->file_index, ist->st->index, layout_name);
+
2319  }
+
2320  return 1;
+
2321 }
+
2322 
+ +
2324 {
+
2325  if (*got_output || ret<0)
+
2326  decode_error_stat[ret<0] ++;
+
2327 
+
2328  if (ret < 0 && exit_on_error)
+
2329  exit_program(1);
+
2330 
+
2331  if (*got_output && ist) {
+
2332  if (ist->decoded_frame->decode_error_flags || (ist->decoded_frame->flags & AV_FRAME_FLAG_CORRUPT)) {
+
2333  av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING,
+
2334  "%s: corrupt decoded frame in stream %d\n", input_files[ist->file_index]->ctx->url, ist->st->index);
+
2335  if (exit_on_error)
+
2336  exit_program(1);
+
2337  }
+
2338  }
+
2339 }
+
2340 
+
2341 // Filters can be configured only if the formats of all inputs are known.
+ +
2343 {
+
2344  int i;
+
2345  for (i = 0; i < fg->nb_inputs; i++) {
+
2346  if (fg->inputs[i]->format < 0 && (fg->inputs[i]->type == AVMEDIA_TYPE_AUDIO ||
+
2347  fg->inputs[i]->type == AVMEDIA_TYPE_VIDEO))
+
2348  return 0;
+
2349  }
+
2350  return 1;
+
2351 }
+
2352 
+
2353 static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame)
+
2354 {
+
2355  FilterGraph *fg = ifilter->graph;
+
2356  int need_reinit, ret, i;
+
2357 
+
2358  /* determine if the parameters for this input changed */
+
2359  need_reinit = ifilter->format != frame->format;
+
2360 
+
2361  switch (ifilter->ist->st->codecpar->codec_type) {
+
2362  case AVMEDIA_TYPE_AUDIO:
+
2363  need_reinit |= ifilter->sample_rate != frame->sample_rate ||
+
2364  ifilter->channels != frame->channels ||
+
2365  ifilter->channel_layout != frame->channel_layout;
+
2366  break;
+
2367  case AVMEDIA_TYPE_VIDEO:
+
2368  need_reinit |= ifilter->width != frame->width ||
+
2369  ifilter->height != frame->height;
+
2370  break;
+
2371  }
+
2372 
+
2373  if (!ifilter->ist->reinit_filters && fg->graph)
+
2374  need_reinit = 0;
+
2375 
+
2376  if (!!ifilter->hw_frames_ctx != !!frame->hw_frames_ctx ||
+
2377  (ifilter->hw_frames_ctx && ifilter->hw_frames_ctx->data != frame->hw_frames_ctx->data))
+
2378  need_reinit = 1;
+
2379 
+
2380  if (need_reinit) {
+
2381  ret = ifilter_parameters_from_frame(ifilter, frame);
+
2382  if (ret < 0)
+
2383  return ret;
+
2384  }
+
2385 
+
2386  /* (re)init the graph if possible, otherwise buffer the frame and return */
+
2387  if (need_reinit || !fg->graph) {
+
2388  for (i = 0; i < fg->nb_inputs; i++) {
+
2389  if (!ifilter_has_all_input_formats(fg)) {
+
2390  AVFrame *tmp = av_frame_clone(frame);
+
2391  if (!tmp)
+
2392  return AVERROR(ENOMEM);
+
2393  av_frame_unref(frame);
+
2394 
+
2395  if (!av_fifo_space(ifilter->frame_queue)) {
+
2396  ret = av_fifo_realloc2(ifilter->frame_queue, 2 * av_fifo_size(ifilter->frame_queue));
+
2397  if (ret < 0) {
+
2398  av_frame_free(&tmp);
+
2399  return ret;
+
2400  }
+
2401  }
+
2402  av_fifo_generic_write(ifilter->frame_queue, &tmp, sizeof(tmp), NULL);
+
2403  return 0;
+
2404  }
+
2405  }
+
2406 
+
2407  ret = reap_filters(1);
+
2408  if (ret < 0 && ret != AVERROR_EOF) {
+
2409  av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
+
2410  return ret;
+
2411  }
+
2412 
+
2413  ret = configure_filtergraph(fg);
+
2414  if (ret < 0) {
+
2415  av_log(NULL, AV_LOG_ERROR, "Error reinitializing filters!\n");
+
2416  return ret;
+
2417  }
+
2418  }
+
2419 
+
2420  ret = av_buffersrc_add_frame_flags(ifilter->filter, frame, AV_BUFFERSRC_FLAG_PUSH);
+
2421  if (ret < 0) {
+
2422  if (ret != AVERROR_EOF)
+
2423  av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
+
2424  return ret;
+
2425  }
+
2426 
+
2427  return 0;
+
2428 }
+
2429 
+
2430 static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
+
2431 {
+
2432  int ret = 0;
+
2433 
+
2434  ifilter->eof = 1;
+
2435 
+
2436  if (ifilter->filter) {
+
2437 
+
2438  /* THIS VALIDATION IS REQUIRED TO COMPLETE CANCELLATION */
+ +
2440  ret = av_buffersrc_close(ifilter->filter, pts, AV_BUFFERSRC_FLAG_PUSH);
+
2441  }
+
2442  if (ret < 0)
+
2443  return ret;
+
2444  } else {
+
2445  // the filtergraph was never configured
+
2446  if (ifilter->format < 0)
+
2447  ifilter_parameters_from_codecpar(ifilter, ifilter->ist->st->codecpar);
+
2448  if (ifilter->format < 0 && (ifilter->type == AVMEDIA_TYPE_AUDIO || ifilter->type == AVMEDIA_TYPE_VIDEO)) {
+
2449  av_log(NULL, AV_LOG_ERROR, "Cannot determine format of input stream %d:%d after EOF\n", ifilter->ist->file_index, ifilter->ist->st->index);
+
2450  return AVERROR_INVALIDDATA;
+
2451  }
+
2452  }
+
2453 
+
2454  return 0;
+
2455 }
+
2456 
+
2457 // This does not quite work like avcodec_decode_audio4/avcodec_decode_video2.
+
2458 // There is the following difference: if you got a frame, you must call
+
2459 // it again with pkt=NULL. pkt==NULL is treated differently from pkt->size==0
+
2460 // (pkt==NULL means get more output, pkt->size==0 is a flush/drain packet)
+
2461 static int decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
+
2462 {
+
2463  int ret;
+
2464 
+
2465  *got_frame = 0;
+
2466 
+
2467  if (pkt) {
+
2468  ret = avcodec_send_packet(avctx, pkt);
+
2469  // In particular, we don't expect AVERROR(EAGAIN), because we read all
+
2470  // decoded frames with avcodec_receive_frame() until done.
+
2471  if (ret < 0 && ret != AVERROR_EOF)
+
2472  return ret;
+
2473  }
+
2474 
+
2475  ret = avcodec_receive_frame(avctx, frame);
+
2476  if (ret < 0 && ret != AVERROR(EAGAIN))
+
2477  return ret;
+
2478  if (ret >= 0)
+
2479  *got_frame = 1;
+
2480 
+
2481  return 0;
+
2482 }
+
2483 
+ +
2485 {
+
2486  int i, ret;
+
2487  AVFrame *f;
+
2488 
+
2489  av_assert1(ist->nb_filters > 0); /* ensure ret is initialized */
+
2490  for (i = 0; i < ist->nb_filters; i++) {
+
2491  if (i < ist->nb_filters - 1) {
+
2492  f = ist->filter_frame;
+
2493  ret = av_frame_ref(f, decoded_frame);
+
2494  if (ret < 0)
+
2495  break;
+
2496  } else
+
2497  f = decoded_frame;
+
2498  ret = ifilter_send_frame(ist->filters[i], f);
+
2499  if (ret == AVERROR_EOF)
+
2500  ret = 0; /* ignore */
+
2501  if (ret < 0) {
+
2502  av_log(NULL, AV_LOG_ERROR,
+
2503  "Failed to inject frame into filter network: %s\n", av_err2str(ret));
+
2504  break;
+
2505  }
+
2506  }
+
2507  return ret;
+
2508 }
+
2509 
+
2510 static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output,
+
2511  int *decode_failed)
+
2512 {
+
2513  AVFrame *decoded_frame;
+
2514  AVCodecContext *avctx = ist->dec_ctx;
+
2515  int ret, err = 0;
+
2516  AVRational decoded_frame_tb;
+
2517 
+
2518  if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
+
2519  return AVERROR(ENOMEM);
+
2520  if (!ist->filter_frame && !(ist->filter_frame = av_frame_alloc()))
+
2521  return AVERROR(ENOMEM);
+
2522  decoded_frame = ist->decoded_frame;
+
2523 
+
2524  update_benchmark(NULL);
+
2525  ret = decode(avctx, decoded_frame, got_output, pkt);
+
2526  update_benchmark("decode_audio %d.%d", ist->file_index, ist->st->index);
+
2527  if (ret < 0)
+
2528  *decode_failed = 1;
+
2529 
+
2530  if (ret >= 0 && avctx->sample_rate <= 0) {
+
2531  av_log(avctx, AV_LOG_ERROR, "Sample rate %d invalid\n", avctx->sample_rate);
+
2532  ret = AVERROR_INVALIDDATA;
+
2533  }
+
2534 
+
2535  if (ret != AVERROR_EOF)
+ +
2537 
+
2538  if (!*got_output || ret < 0)
+
2539  return ret;
+
2540 
+
2541  ist->samples_decoded += decoded_frame->nb_samples;
+
2542  ist->frames_decoded++;
+
2543 
+
2544  /* increment next_dts to use for the case where the input stream does not
+
2545  have timestamps or there are multiple frames in the packet */
+
2546  ist->next_pts += ((int64_t)AV_TIME_BASE * decoded_frame->nb_samples) /
+
2547  avctx->sample_rate;
+
2548  ist->next_dts += ((int64_t)AV_TIME_BASE * decoded_frame->nb_samples) /
+
2549  avctx->sample_rate;
+
2550 
+
2551  if (decoded_frame->pts != AV_NOPTS_VALUE) {
+
2552  decoded_frame_tb = ist->st->time_base;
+
2553  } else if (pkt && pkt->pts != AV_NOPTS_VALUE) {
+
2554  decoded_frame->pts = pkt->pts;
+
2555  decoded_frame_tb = ist->st->time_base;
+
2556  }else {
+
2557  decoded_frame->pts = ist->dts;
+
2558  decoded_frame_tb = AV_TIME_BASE_Q;
+
2559  }
+
2560  if (decoded_frame->pts != AV_NOPTS_VALUE)
+
2561  decoded_frame->pts = av_rescale_delta(decoded_frame_tb, decoded_frame->pts,
+
2562  (AVRational){1, avctx->sample_rate}, decoded_frame->nb_samples, &ist->filter_in_rescale_delta_last,
+
2563  (AVRational){1, avctx->sample_rate});
+
2564  ist->nb_samples = decoded_frame->nb_samples;
+ +
2566 
+
2567  av_frame_unref(ist->filter_frame);
+
2568  av_frame_unref(decoded_frame);
+
2569  return err < 0 ? err : ret;
+
2570 }
+
2571 
+
2572 static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_t *duration_pts, int eof,
+
2573  int *decode_failed)
+
2574 {
+
2575  AVFrame *decoded_frame;
+
2576  int i, ret = 0, err = 0;
+
2577  int64_t best_effort_timestamp;
+
2578  int64_t dts = AV_NOPTS_VALUE;
+
2579 
+
2580  // With fate-indeo3-2, we're getting 0-sized packets before EOF for some
+
2581  // reason. This seems like a semi-critical bug. Don't trigger EOF, and
+
2582  // skip the packet.
+
2583  if (!eof && pkt && pkt->size == 0)
+
2584  return 0;
+
2585 
+
2586  if (!ist->decoded_frame && !(ist->decoded_frame = av_frame_alloc()))
+
2587  return AVERROR(ENOMEM);
+
2588  if (!ist->filter_frame && !(ist->filter_frame = av_frame_alloc()))
+
2589  return AVERROR(ENOMEM);
+
2590  decoded_frame = ist->decoded_frame;
+
2591  if (ist->dts != AV_NOPTS_VALUE)
+
2592  dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);
+
2593  if (pkt) {
+
2594  pkt->dts = dts; // ffmpeg.c probably shouldn't do this
+
2595  }
+
2596 
+
2597  // The old code used to set dts on the drain packet, which does not work
+
2598  // with the new API anymore.
+
2599  if (eof) {
+
2600  void *new = av_realloc_array(ist->dts_buffer, ist->nb_dts_buffer + 1, sizeof(ist->dts_buffer[0]));
+
2601  if (!new)
+
2602  return AVERROR(ENOMEM);
+
2603  ist->dts_buffer = new;
+
2604  ist->dts_buffer[ist->nb_dts_buffer++] = dts;
+
2605  }
+
2606 
+
2607  update_benchmark(NULL);
+
2608  ret = decode(ist->dec_ctx, decoded_frame, got_output, pkt);
+
2609  update_benchmark("decode_video %d.%d", ist->file_index, ist->st->index);
+
2610  if (ret < 0)
+
2611  *decode_failed = 1;
+
2612 
+
2613  // The following line may be required in some cases where there is no parser
+
2614  // or the parser does not has_b_frames correctly
+
2615  if (ist->st->codecpar->video_delay < ist->dec_ctx->has_b_frames) {
+
2616  if (ist->dec_ctx->codec_id == AV_CODEC_ID_H264) {
+
2617  ist->st->codecpar->video_delay = ist->dec_ctx->has_b_frames;
+
2618  } else
+
2619  av_log(ist->dec_ctx, AV_LOG_WARNING,
+
2620  "video_delay is larger in decoder than demuxer %d > %d.\n"
+
2621  "If you want to help, upload a sample "
+
2622  "of this file to https://streams.videolan.org/upload/ "
+
2623  "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)\n",
+
2624  ist->dec_ctx->has_b_frames,
+
2625  ist->st->codecpar->video_delay);
+
2626  }
+
2627 
+
2628  if (ret != AVERROR_EOF)
+ +
2630 
+
2631  if (*got_output && ret >= 0) {
+
2632  if (ist->dec_ctx->width != decoded_frame->width ||
+
2633  ist->dec_ctx->height != decoded_frame->height ||
+
2634  ist->dec_ctx->pix_fmt != decoded_frame->format) {
+
2635  av_log(NULL, AV_LOG_DEBUG, "Frame parameters mismatch context %d,%d,%d != %d,%d,%d\n",
+
2636  decoded_frame->width,
+
2637  decoded_frame->height,
+
2638  decoded_frame->format,
+
2639  ist->dec_ctx->width,
+
2640  ist->dec_ctx->height,
+
2641  ist->dec_ctx->pix_fmt);
+
2642  }
+
2643  }
+
2644 
+
2645  if (!*got_output || ret < 0)
+
2646  return ret;
+
2647 
+
2648  if(ist->top_field_first>=0)
+
2649  decoded_frame->top_field_first = ist->top_field_first;
+
2650 
+
2651  ist->frames_decoded++;
+
2652 
+
2653  if (ist->hwaccel_retrieve_data && decoded_frame->format == ist->hwaccel_pix_fmt) {
+
2654  err = ist->hwaccel_retrieve_data(ist->dec_ctx, decoded_frame);
+
2655  if (err < 0)
+
2656  goto fail;
+
2657  }
+
2658  ist->hwaccel_retrieved_pix_fmt = decoded_frame->format;
+
2659 
+
2660  best_effort_timestamp= decoded_frame->best_effort_timestamp;
+
2661  *duration_pts = decoded_frame->pkt_duration;
+
2662 
+
2663  if (ist->framerate.num)
+
2664  best_effort_timestamp = ist->cfr_next_pts++;
+
2665 
+
2666  if (eof && best_effort_timestamp == AV_NOPTS_VALUE && ist->nb_dts_buffer > 0) {
+
2667  best_effort_timestamp = ist->dts_buffer[0];
+
2668 
+
2669  for (i = 0; i < ist->nb_dts_buffer - 1; i++)
+
2670  ist->dts_buffer[i] = ist->dts_buffer[i + 1];
+
2671  ist->nb_dts_buffer--;
+
2672  }
+
2673 
+
2674  if(best_effort_timestamp != AV_NOPTS_VALUE) {
+
2675  int64_t ts = av_rescale_q(decoded_frame->pts = best_effort_timestamp, ist->st->time_base, AV_TIME_BASE_Q);
+
2676 
+
2677  if (ts != AV_NOPTS_VALUE)
+
2678  ist->next_pts = ist->pts = ts;
+
2679  }
+
2680 
+
2681  if (debug_ts) {
+
2682  av_log(NULL, AV_LOG_INFO, "decoder -> ist_index:%d type:video "
+
2683  "frame_pts:%s frame_pts_time:%s best_effort_ts:%"PRId64" best_effort_ts_time:%s keyframe:%d frame_type:%d time_base:%d/%d\n",
+
2684  ist->st->index, av_ts2str(decoded_frame->pts),
+
2685  av_ts2timestr(decoded_frame->pts, &ist->st->time_base),
+
2686  best_effort_timestamp,
+
2687  av_ts2timestr(best_effort_timestamp, &ist->st->time_base),
+
2688  decoded_frame->key_frame, decoded_frame->pict_type,
+
2689  ist->st->time_base.num, ist->st->time_base.den);
+
2690  }
+
2691 
+
2692  if (ist->st->sample_aspect_ratio.num)
+
2693  decoded_frame->sample_aspect_ratio = ist->st->sample_aspect_ratio;
+
2694 
+ +
2696 
+
2697 fail:
+
2698  av_frame_unref(ist->filter_frame);
+
2699  av_frame_unref(decoded_frame);
+
2700  return err < 0 ? err : ret;
+
2701 }
+
2702 
+
2703 static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output,
+
2704  int *decode_failed)
+
2705 {
+
2706  AVSubtitle subtitle;
+
2707  int free_sub = 1;
+
2708  int i, ret = avcodec_decode_subtitle2(ist->dec_ctx,
+
2709  &subtitle, got_output, pkt);
+
2710 
+ +
2712 
+
2713  if (ret < 0 || !*got_output) {
+
2714  *decode_failed = 1;
+
2715  if (!pkt->size)
+ +
2717  return ret;
+
2718  }
+
2719 
+
2720  if (ist->fix_sub_duration) {
+
2721  int end = 1;
+
2722  if (ist->prev_sub.got_output) {
+
2723  end = av_rescale(subtitle.pts - ist->prev_sub.subtitle.pts,
+
2724  1000, AV_TIME_BASE);
+
2725  if (end < ist->prev_sub.subtitle.end_display_time) {
+
2726  av_log(ist->dec_ctx, AV_LOG_DEBUG,
+
2727  "Subtitle duration reduced from %"PRId32" to %d%s\n",
+
2728  ist->prev_sub.subtitle.end_display_time, end,
+
2729  end <= 0 ? ", dropping it" : "");
+
2730  ist->prev_sub.subtitle.end_display_time = end;
+
2731  }
+
2732  }
+
2733  FFSWAP(int, *got_output, ist->prev_sub.got_output);
+
2734  FFSWAP(int, ret, ist->prev_sub.ret);
+
2735  FFSWAP(AVSubtitle, subtitle, ist->prev_sub.subtitle);
+
2736  if (end <= 0)
+
2737  goto out;
+
2738  }
+
2739 
+
2740  if (!*got_output)
+
2741  return ret;
+
2742 
+
2743  if (ist->sub2video.frame) {
+
2744  sub2video_update(ist, INT64_MIN, &subtitle);
+
2745  } else if (ist->nb_filters) {
+
2746  if (!ist->sub2video.sub_queue)
+
2747  ist->sub2video.sub_queue = av_fifo_alloc(8 * sizeof(AVSubtitle));
+
2748  if (!ist->sub2video.sub_queue)
+
2749  exit_program(1);
+
2750  if (!av_fifo_space(ist->sub2video.sub_queue)) {
+
2751  ret = av_fifo_realloc2(ist->sub2video.sub_queue, 2 * av_fifo_size(ist->sub2video.sub_queue));
+
2752  if (ret < 0)
+
2753  exit_program(1);
+
2754  }
+
2755  av_fifo_generic_write(ist->sub2video.sub_queue, &subtitle, sizeof(subtitle), NULL);
+
2756  free_sub = 0;
+
2757  }
+
2758 
+
2759  if (!subtitle.num_rects)
+
2760  goto out;
+
2761 
+
2762  ist->frames_decoded++;
+
2763 
+
2764  for (i = 0; i < nb_output_streams; i++) {
+ +
2766 
+
2767  if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
+
2768  exit_program(1);
+ +
2770  || ost->enc->type != AVMEDIA_TYPE_SUBTITLE)
+
2771  continue;
+
2772 
+ +
2774  }
+
2775 
+
2776 out:
+
2777  if (free_sub)
+
2778  avsubtitle_free(&subtitle);
+
2779  return ret;
+
2780 }
+
2781 
+ +
2783 {
+
2784  int i, ret;
+
2785  /* TODO keep pts also in stream time base to avoid converting back */
+
2786  int64_t pts = av_rescale_q_rnd(ist->pts, AV_TIME_BASE_Q, ist->st->time_base,
+
2787  AV_ROUND_NEAR_INF | AV_ROUND_PASS_MINMAX);
+
2788 
+
2789  for (i = 0; i < ist->nb_filters; i++) {
+
2790  ret = ifilter_send_eof(ist->filters[i], pts);
+
2791  if (ret < 0)
+
2792  return ret;
+
2793  }
+
2794  return 0;
+
2795 }
+
2796 
+
2797 /* pkt = NULL means EOF (needed to flush decoder buffers) */
+
2798 static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eof)
+
2799 {
+
2800  int ret = 0, i;
+
2801  int repeating = 0;
+
2802  int eof_reached = 0;
+
2803 
+
2804  AVPacket *avpkt;
+
2805 
+
2806  if (!ist->pkt && !(ist->pkt = av_packet_alloc()))
+
2807  return AVERROR(ENOMEM);
+
2808  avpkt = ist->pkt;
+
2809 
+
2810  if (!ist->saw_first_ts) {
+
2811  ist->first_dts =
+
2812  ist->dts = ist->st->avg_frame_rate.num ? - ist->dec_ctx->has_b_frames * AV_TIME_BASE / av_q2d(ist->st->avg_frame_rate) : 0;
+
2813  ist->pts = 0;
+
2814  if (pkt && pkt->pts != AV_NOPTS_VALUE && !ist->decoding_needed) {
+
2815  ist->first_dts =
+
2816  ist->dts += av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
+
2817  ist->pts = ist->dts; //unused but better to set it to a value thats not totally wrong
+
2818  }
+
2819  ist->saw_first_ts = 1;
+
2820  }
+
2821 
+
2822  if (ist->next_dts == AV_NOPTS_VALUE)
+
2823  ist->next_dts = ist->dts;
+
2824  if (ist->next_pts == AV_NOPTS_VALUE)
+
2825  ist->next_pts = ist->pts;
+
2826 
+
2827  if (pkt) {
+
2828  av_packet_unref(avpkt);
+
2829  ret = av_packet_ref(avpkt, pkt);
+
2830  if (ret < 0)
+
2831  return ret;
+
2832  }
+
2833 
+
2834  if (pkt && pkt->dts != AV_NOPTS_VALUE) {
+
2835  ist->next_dts = ist->dts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);
+
2836  if (ist->dec_ctx->codec_type != AVMEDIA_TYPE_VIDEO || !ist->decoding_needed)
+
2837  ist->next_pts = ist->pts = ist->dts;
+
2838  }
+
2839 
+
2840  // while we have more to decode or while the decoder did output something on EOF
+
2841  while (ist->decoding_needed) {
+
2842  int64_t duration_dts = 0;
+
2843  int64_t duration_pts = 0;
+
2844  int got_output = 0;
+
2845  int decode_failed = 0;
+
2846 
+
2847  ist->pts = ist->next_pts;
+
2848  ist->dts = ist->next_dts;
+
2849 
+
2850  switch (ist->dec_ctx->codec_type) {
+
2851  case AVMEDIA_TYPE_AUDIO:
+
2852  ret = decode_audio (ist, repeating ? NULL : avpkt, &got_output,
+
2853  &decode_failed);
+
2854  av_packet_unref(avpkt);
+
2855  break;
+
2856  case AVMEDIA_TYPE_VIDEO:
+
2857  ret = decode_video (ist, repeating ? NULL : avpkt, &got_output, &duration_pts, !pkt,
+
2858  &decode_failed);
+
2859  if (!repeating || !pkt || got_output) {
+
2860  if (pkt && pkt->duration) {
+
2861  duration_dts = av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q);
+
2862  } else if(ist->dec_ctx->framerate.num != 0 && ist->dec_ctx->framerate.den != 0) {
+
2863  int ticks= av_stream_get_parser(ist->st) ? av_stream_get_parser(ist->st)->repeat_pict+1 : ist->dec_ctx->ticks_per_frame;
+
2864  duration_dts = ((int64_t)AV_TIME_BASE *
+
2865  ist->dec_ctx->framerate.den * ticks) /
+
2866  ist->dec_ctx->framerate.num / ist->dec_ctx->ticks_per_frame;
+
2867  }
+
2868 
+
2869  if(ist->dts != AV_NOPTS_VALUE && duration_dts) {
+
2870  ist->next_dts += duration_dts;
+
2871  }else
+
2872  ist->next_dts = AV_NOPTS_VALUE;
+
2873  }
+
2874 
+
2875  if (got_output) {
+
2876  if (duration_pts > 0) {
+
2877  ist->next_pts += av_rescale_q(duration_pts, ist->st->time_base, AV_TIME_BASE_Q);
+
2878  } else {
+
2879  ist->next_pts += duration_dts;
+
2880  }
+
2881  }
+
2882  av_packet_unref(avpkt);
+
2883  break;
+
2884  case AVMEDIA_TYPE_SUBTITLE:
+
2885  if (repeating)
+
2886  break;
+
2887  ret = transcode_subtitles(ist, avpkt, &got_output, &decode_failed);
+
2888  if (!pkt && ret >= 0)
+
2889  ret = AVERROR_EOF;
+
2890  av_packet_unref(avpkt);
+
2891  break;
+
2892  default:
+
2893  return -1;
+
2894  }
+
2895 
+
2896  if (ret == AVERROR_EOF) {
+
2897  eof_reached = 1;
+
2898  break;
+
2899  }
+
2900 
+
2901  if (ret < 0) {
+
2902  if (decode_failed) {
+
2903  av_log(NULL, AV_LOG_ERROR, "Error while decoding stream #%d:%d: %s\n",
+
2904  ist->file_index, ist->st->index, av_err2str(ret));
+
2905  } else {
+
2906  av_log(NULL, AV_LOG_FATAL, "Error while processing the decoded "
+
2907  "data for stream #%d:%d\n", ist->file_index, ist->st->index);
+
2908  }
+
2909  if (!decode_failed || exit_on_error)
+
2910  exit_program(1);
+
2911  break;
+
2912  }
+
2913 
+
2914  if (got_output)
+
2915  ist->got_output = 1;
+
2916 
+
2917  if (!got_output)
+
2918  break;
+
2919 
+
2920  // During draining, we might get multiple output frames in this loop.
+
2921  // ffmpeg.c does not drain the filter chain on configuration changes,
+
2922  // which means if we send multiple frames at once to the filters, and
+
2923  // one of those frames changes configuration, the buffered frames will
+
2924  // be lost. This can upset certain FATE tests.
+
2925  // Decode only 1 frame per call on EOF to appease these FATE tests.
+
2926  // The ideal solution would be to rewrite decoding to use the new
+
2927  // decoding API in a better way.
+
2928  if (!pkt)
+
2929  break;
+
2930 
+
2931  repeating = 1;
+
2932  }
+
2933 
+
2934  /* after flushing, send an EOF on all the filter inputs attached to the stream */
+
2935  /* except when looping we need to flush but not to send an EOF */
+
2936  if (!pkt && ist->decoding_needed && eof_reached && !no_eof) {
+
2937  int ret = send_filter_eof(ist);
+
2938  if (ret < 0) {
+
2939  av_log(NULL, AV_LOG_FATAL, "Error marking filters as finished\n");
+
2940  exit_program(1);
+
2941  }
+
2942  }
+
2943 
+
2944  /* handle stream copy */
+
2945  if (!ist->decoding_needed && pkt) {
+
2946  ist->dts = ist->next_dts;
+
2947  switch (ist->dec_ctx->codec_type) {
+
2948  case AVMEDIA_TYPE_AUDIO:
+
2949  av_assert1(pkt->duration >= 0);
+
2950  if (ist->dec_ctx->sample_rate) {
+
2951  ist->next_dts += ((int64_t)AV_TIME_BASE * ist->dec_ctx->frame_size) /
+
2952  ist->dec_ctx->sample_rate;
+
2953  } else {
+
2954  ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q);
+
2955  }
+
2956  break;
+
2957  case AVMEDIA_TYPE_VIDEO:
+
2958  if (ist->framerate.num) {
+
2959  // TODO: Remove work-around for c99-to-c89 issue 7
+
2960  AVRational time_base_q = AV_TIME_BASE_Q;
+
2961  int64_t next_dts = av_rescale_q(ist->next_dts, time_base_q, av_inv_q(ist->framerate));
+
2962  ist->next_dts = av_rescale_q(next_dts + 1, av_inv_q(ist->framerate), time_base_q);
+
2963  } else if (pkt->duration) {
+
2964  ist->next_dts += av_rescale_q(pkt->duration, ist->st->time_base, AV_TIME_BASE_Q);
+
2965  } else if(ist->dec_ctx->framerate.num != 0) {
+
2966  int ticks= av_stream_get_parser(ist->st) ? av_stream_get_parser(ist->st)->repeat_pict + 1 : ist->dec_ctx->ticks_per_frame;
+
2967  ist->next_dts += ((int64_t)AV_TIME_BASE *
+
2968  ist->dec_ctx->framerate.den * ticks) /
+
2969  ist->dec_ctx->framerate.num / ist->dec_ctx->ticks_per_frame;
+
2970  }
+
2971  break;
+
2972  }
+
2973  ist->pts = ist->dts;
+
2974  ist->next_pts = ist->next_dts;
+
2975  }
+
2976  for (i = 0; i < nb_output_streams; i++) {
+ +
2978 
+
2979  if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
+
2980  exit_program(1);
+ +
2982  continue;
+
2983 
+
2984  do_streamcopy(ist, ost, pkt);
+
2985  }
+
2986 
+
2987  return !eof_reached;
+
2988 }
+
2989 
+
2990 static void print_sdp(void)
+
2991 {
+
2992  char sdp[16384];
+
2993  int i;
+
2994  int j;
+
2995  AVIOContext *sdp_pb;
+
2996  AVFormatContext **avc;
+
2997 
+
2998  for (i = 0; i < nb_output_files; i++) {
+
2999  if (!output_files[i]->header_written)
+
3000  return;
+
3001  }
+
3002 
+
3003  avc = av_malloc_array(nb_output_files, sizeof(*avc));
+
3004  if (!avc)
+
3005  exit_program(1);
+
3006  for (i = 0, j = 0; i < nb_output_files; i++) {
+
3007  if (!strcmp(output_files[i]->ctx->oformat->name, "rtp")) {
+
3008  avc[j] = output_files[i]->ctx;
+
3009  j++;
+
3010  }
+
3011  }
+
3012 
+
3013  if (!j)
+
3014  goto fail;
+
3015 
+
3016  av_sdp_create(avc, j, sdp, sizeof(sdp));
+
3017 
+
3018  if (!sdp_filename) {
+
3019  av_log(NULL, AV_LOG_STDERR, "SDP:\n%s\n", sdp);
+
3020  fflush(stdout);
+
3021  } else {
+
3022  if (avio_open2(&sdp_pb, sdp_filename, AVIO_FLAG_WRITE, &int_cb, NULL) < 0) {
+
3023  av_log(NULL, AV_LOG_ERROR, "Failed to open sdp file '%s'\n", sdp_filename);
+
3024  } else {
+
3025  avio_print(sdp_pb, sdp);
+
3026  avio_closep(&sdp_pb);
+
3027  av_freep(&sdp_filename);
+
3028  }
+
3029  }
+
3030 
+
3031 fail:
+
3032  av_freep(&avc);
+
3033 }
+
3034 
+
3035 static enum AVPixelFormat get_format(AVCodecContext *s, const enum AVPixelFormat *pix_fmts)
+
3036 {
+
3037  InputStream *ist = s->opaque;
+
3038  const enum AVPixelFormat *p;
+
3039  int ret;
+
3040 
+
3041  for (p = pix_fmts; *p != AV_PIX_FMT_NONE; p++) {
+
3042  const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(*p);
+
3043  const AVCodecHWConfig *config = NULL;
+
3044  int i;
+
3045 
+
3046  if (!(desc->flags & AV_PIX_FMT_FLAG_HWACCEL))
+
3047  break;
+
3048 
+
3049  if (ist->hwaccel_id == HWACCEL_GENERIC ||
+
3050  ist->hwaccel_id == HWACCEL_AUTO) {
+
3051  for (i = 0;; i++) {
+
3052  config = avcodec_get_hw_config(s->codec, i);
+
3053  if (!config)
+
3054  break;
+
3055  if (!(config->methods &
+
3056  AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX))
+
3057  continue;
+
3058  if (config->pix_fmt == *p)
+
3059  break;
+
3060  }
+
3061  }
+
3062  if (config) {
+
3063  if (config->device_type != ist->hwaccel_device_type) {
+
3064  // Different hwaccel offered, ignore.
+
3065  continue;
+
3066  }
+
3067 
+
3068  ret = hwaccel_decode_init(s);
+
3069  if (ret < 0) {
+
3070  if (ist->hwaccel_id == HWACCEL_GENERIC) {
+
3071  av_log(NULL, AV_LOG_FATAL,
+
3072  "%s hwaccel requested for input stream #%d:%d, "
+
3073  "but cannot be initialized.\n",
+
3074  av_hwdevice_get_type_name(config->device_type),
+
3075  ist->file_index, ist->st->index);
+
3076  return AV_PIX_FMT_NONE;
+
3077  }
+
3078  continue;
+
3079  }
+
3080  } else {
+
3081  const HWAccel *hwaccel = NULL;
+
3082  int i;
+
3083  for (i = 0; hwaccels[i].name; i++) {
+
3084  if (hwaccels[i].pix_fmt == *p) {
+
3085  hwaccel = &hwaccels[i];
+
3086  break;
+
3087  }
+
3088  }
+
3089  if (!hwaccel) {
+
3090  // No hwaccel supporting this pixfmt.
+
3091  continue;
+
3092  }
+
3093  if (hwaccel->id != ist->hwaccel_id) {
+
3094  // Does not match requested hwaccel.
+
3095  continue;
+
3096  }
+
3097 
+
3098  ret = hwaccel->init(s);
+
3099  if (ret < 0) {
+
3100  av_log(NULL, AV_LOG_FATAL,
+
3101  "%s hwaccel requested for input stream #%d:%d, "
+
3102  "but cannot be initialized.\n", hwaccel->name,
+
3103  ist->file_index, ist->st->index);
+
3104  return AV_PIX_FMT_NONE;
+
3105  }
+
3106  }
+
3107 
+
3108  if (ist->hw_frames_ctx) {
+
3109  s->hw_frames_ctx = av_buffer_ref(ist->hw_frames_ctx);
+
3110  if (!s->hw_frames_ctx)
+
3111  return AV_PIX_FMT_NONE;
+
3112  }
+
3113 
+
3114  ist->hwaccel_pix_fmt = *p;
+
3115  break;
+
3116  }
+
3117 
+
3118  return *p;
+
3119 }
+
3120 
+
3121 static int get_buffer(AVCodecContext *s, AVFrame *frame, int flags)
+
3122 {
+
3123  InputStream *ist = s->opaque;
+
3124 
+
3125  if (ist->hwaccel_get_buffer && frame->format == ist->hwaccel_pix_fmt)
+
3126  return ist->hwaccel_get_buffer(s, frame, flags);
+
3127 
+
3128  return avcodec_default_get_buffer2(s, frame, flags);
+
3129 }
+
3130 
+
3131 static int init_input_stream(int ist_index, char *error, int error_len)
+
3132 {
+
3133  int ret;
+
3134  InputStream *ist = input_streams[ist_index];
+
3135 
+
3136  if (ist->decoding_needed) {
+
3137  const AVCodec *codec = ist->dec;
+
3138  if (!codec) {
+
3139  snprintf(error, error_len, "Decoder (codec %s) not found for input stream #%d:%d",
+
3140  avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
+
3141  return AVERROR(EINVAL);
+
3142  }
+
3143 
+
3144  ist->dec_ctx->opaque = ist;
+
3145  ist->dec_ctx->get_format = get_format;
+
3146  ist->dec_ctx->get_buffer2 = get_buffer;
+
3147 #if LIBAVCODEC_VERSION_MAJOR < 60
+
3148 FF_DISABLE_DEPRECATION_WARNINGS
+
3149  ist->dec_ctx->thread_safe_callbacks = 1;
+
3150 FF_ENABLE_DEPRECATION_WARNINGS
+
3151 #endif
+
3152 
+
3153  if (ist->dec_ctx->codec_id == AV_CODEC_ID_DVB_SUBTITLE &&
+
3154  (ist->decoding_needed & DECODING_FOR_OST)) {
+
3155  av_dict_set(&ist->decoder_opts, "compute_edt", "1", AV_DICT_DONT_OVERWRITE);
+
3156  if (ist->decoding_needed & DECODING_FOR_FILTER)
+
3157  av_log(NULL, AV_LOG_WARNING, "Warning using DVB subtitles for filtering and output at the same time is not fully supported, also see -compute_edt [0|1]\n");
+
3158  }
+
3159 
+
3160  av_dict_set(&ist->decoder_opts, "sub_text_format", "ass", AV_DICT_DONT_OVERWRITE);
+
3161 
+
3162  /* Useful for subtitles retiming by lavf (FIXME), skipping samples in
+
3163  * audio, and video decoders such as cuvid or mediacodec */
+
3164  ist->dec_ctx->pkt_timebase = ist->st->time_base;
+
3165 
+
3166  if (!av_dict_get(ist->decoder_opts, "threads", NULL, 0))
+
3167  av_dict_set(&ist->decoder_opts, "threads", "auto", 0);
+
3168  /* Attached pics are sparse, therefore we would not want to delay their decoding till EOF. */
+
3169  if (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC)
+
3170  av_dict_set(&ist->decoder_opts, "threads", "1", 0);
+
3171 
+ +
3173  if (ret < 0) {
+
3174  snprintf(error, error_len, "Device setup failed for "
+
3175  "decoder on input stream #%d:%d : %s",
+
3176  ist->file_index, ist->st->index, av_err2str(ret));
+
3177  return ret;
+
3178  }
+
3179 
+
3180  if ((ret = avcodec_open2(ist->dec_ctx, codec, &ist->decoder_opts)) < 0) {
+
3181  if (ret == AVERROR_EXPERIMENTAL)
+
3182  abort_codec_experimental(codec, 0);
+
3183 
+
3184  snprintf(error, error_len,
+
3185  "Error while opening decoder for input stream "
+
3186  "#%d:%d : %s",
+
3187  ist->file_index, ist->st->index, av_err2str(ret));
+
3188  return ret;
+
3189  }
+
3190  assert_avoptions(ist->decoder_opts);
+
3191  }
+
3192 
+
3193  ist->next_pts = AV_NOPTS_VALUE;
+
3194  ist->next_dts = AV_NOPTS_VALUE;
+
3195 
+
3196  return 0;
+
3197 }
+
3198 
+ +
3200 {
+
3201  if (ost->source_index >= 0)
+
3202  return input_streams[ost->source_index];
+
3203  return NULL;
+
3204 }
+
3205 
+
3206 static int compare_int64(const void *a, const void *b)
+
3207 {
+
3208  return FFDIFFSIGN(*(const int64_t *)a, *(const int64_t *)b);
+
3209 }
+
3210 
+
3211 /* open the muxer when all the streams are initialized */
+ +
3213 {
+
3214  int ret, i;
+
3215 
+
3216  for (i = 0; i < of->ctx->nb_streams; i++) {
+ +
3218  if (!ost->initialized)
+
3219  return 0;
+
3220  }
+
3221 
+
3222  of->ctx->interrupt_callback = int_cb;
+
3223 
+
3224  ret = avformat_write_header(of->ctx, &of->opts);
+
3225  if (ret < 0) {
+
3226  av_log(NULL, AV_LOG_ERROR,
+
3227  "Could not write header for output file #%d "
+
3228  "(incorrect codec parameters ?): %s\n",
+
3229  file_index, av_err2str(ret));
+
3230  return ret;
+
3231  }
+
3232  //assert_avoptions(of->opts);
+
3233  of->header_written = 1;
+
3234 
+
3235  av_dump_format(of->ctx, file_index, of->ctx->url, 1);
+
3236  nb_output_dumped++;
+
3237 
+
3238  if (sdp_filename || want_sdp)
+
3239  print_sdp();
+
3240 
+
3241  /* flush the muxing queues */
+
3242  for (i = 0; i < of->ctx->nb_streams; i++) {
+ +
3244 
+
3245  /* try to improve muxing time_base (only possible if nothing has been written yet) */
+
3246  if (!av_fifo_size(ost->muxing_queue))
+
3247  ost->mux_timebase = ost->st->time_base;
+
3248 
+
3249  while (av_fifo_size(ost->muxing_queue)) {
+
3250  AVPacket *pkt;
+
3251  av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
+
3252  ost->muxing_queue_data_size -= pkt->size;
+
3253  write_packet(of, pkt, ost, 1);
+
3254  av_packet_free(&pkt);
+
3255  }
+
3256  }
+
3257 
+
3258  return 0;
+
3259 }
+
3260 
+ +
3262 {
+
3263  AVBSFContext *ctx = ost->bsf_ctx;
+
3264  int ret;
+
3265 
+
3266  if (!ctx)
+
3267  return 0;
+
3268 
+
3269  ret = avcodec_parameters_copy(ctx->par_in, ost->st->codecpar);
+
3270  if (ret < 0)
+
3271  return ret;
+
3272 
+
3273  ctx->time_base_in = ost->st->time_base;
+
3274 
+
3275  ret = av_bsf_init(ctx);
+
3276  if (ret < 0) {
+
3277  av_log(NULL, AV_LOG_ERROR, "Error initializing bitstream filter: %s\n",
+
3278  ctx->filter->name);
+
3279  return ret;
+
3280  }
+
3281 
+
3282  ret = avcodec_parameters_copy(ost->st->codecpar, ctx->par_out);
+
3283  if (ret < 0)
+
3284  return ret;
+
3285 
+
3286  ost->st->time_base = ctx->time_base_out;
+
3287 
+
3288  return 0;
+
3289 }
+
3290 
+ +
3292 {
+ + +
3295  AVCodecParameters *par_dst = ost->st->codecpar;
+
3296  AVCodecParameters *par_src = ost->ref_par;
+
3297  AVRational sar;
+
3298  int i, ret;
+
3299  uint32_t codec_tag = par_dst->codec_tag;
+
3300 
+
3301  av_assert0(ist && !ost->filter);
+
3302 
+
3303  ret = avcodec_parameters_to_context(ost->enc_ctx, ist->st->codecpar);
+
3304  if (ret >= 0)
+
3305  ret = av_opt_set_dict(ost->enc_ctx, &ost->encoder_opts);
+
3306  if (ret < 0) {
+
3307  av_log(NULL, AV_LOG_FATAL,
+
3308  "Error setting up codec context options.\n");
+
3309  return ret;
+
3310  }
+
3311 
+
3312  ret = avcodec_parameters_from_context(par_src, ost->enc_ctx);
+
3313  if (ret < 0) {
+
3314  av_log(NULL, AV_LOG_FATAL,
+
3315  "Error getting reference codec parameters.\n");
+
3316  return ret;
+
3317  }
+
3318 
+
3319  if (!codec_tag) {
+
3320  unsigned int codec_tag_tmp;
+
3321  if (!of->ctx->oformat->codec_tag ||
+
3322  av_codec_get_id (of->ctx->oformat->codec_tag, par_src->codec_tag) == par_src->codec_id ||
+
3323  !av_codec_get_tag2(of->ctx->oformat->codec_tag, par_src->codec_id, &codec_tag_tmp))
+
3324  codec_tag = par_src->codec_tag;
+
3325  }
+
3326 
+
3327  ret = avcodec_parameters_copy(par_dst, par_src);
+
3328  if (ret < 0)
+
3329  return ret;
+
3330 
+
3331  par_dst->codec_tag = codec_tag;
+
3332 
+
3333  if (!ost->frame_rate.num)
+
3334  ost->frame_rate = ist->framerate;
+
3335 
+
3336  if (ost->frame_rate.num)
+
3337  ost->st->avg_frame_rate = ost->frame_rate;
+
3338  else
+
3339  ost->st->avg_frame_rate = ist->st->avg_frame_rate;
+
3340 
+
3341  ret = avformat_transfer_internal_stream_timing_info(of->ctx->oformat, ost->st, ist->st, copy_tb);
+
3342  if (ret < 0)
+
3343  return ret;
+
3344 
+
3345  // copy timebase while removing common factors
+
3346  if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0) {
+
3347  if (ost->frame_rate.num)
+
3348  ost->st->time_base = av_inv_q(ost->frame_rate);
+
3349  else
+
3350  ost->st->time_base = av_add_q(av_stream_get_codec_timebase(ost->st), (AVRational){0, 1});
+
3351  }
+
3352 
+
3353  // copy estimated duration as a hint to the muxer
+
3354  if (ost->st->duration <= 0 && ist->st->duration > 0)
+
3355  ost->st->duration = av_rescale_q(ist->st->duration, ist->st->time_base, ost->st->time_base);
+
3356 
+
3357  // copy disposition
+
3358  ost->st->disposition = ist->st->disposition;
+
3359 
+
3360  if (ist->st->nb_side_data) {
+
3361  for (i = 0; i < ist->st->nb_side_data; i++) {
+
3362  const AVPacketSideData *sd_src = &ist->st->side_data[i];
+
3363  uint8_t *dst_data;
+
3364 
+
3365  dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
+
3366  if (!dst_data)
+
3367  return AVERROR(ENOMEM);
+
3368  memcpy(dst_data, sd_src->data, sd_src->size);
+
3369  }
+
3370  }
+
3371 
+
3372  if (ost->rotate_overridden) {
+
3373  uint8_t *sd = av_stream_new_side_data(ost->st, AV_PKT_DATA_DISPLAYMATRIX,
+
3374  sizeof(int32_t) * 9);
+
3375  if (sd)
+
3376  av_display_rotation_set((int32_t *)sd, -ost->rotate_override_value);
+
3377  }
+
3378 
+
3379  switch (par_dst->codec_type) {
+
3380  case AVMEDIA_TYPE_AUDIO:
+
3381  if (audio_volume != 256) {
+
3382  av_log(NULL, AV_LOG_FATAL, "-acodec copy and -vol are incompatible (frames are not decoded)\n");
+
3383  exit_program(1);
+
3384  }
+
3385  if((par_dst->block_align == 1 || par_dst->block_align == 1152 || par_dst->block_align == 576) && par_dst->codec_id == AV_CODEC_ID_MP3)
+
3386  par_dst->block_align= 0;
+
3387  if(par_dst->codec_id == AV_CODEC_ID_AC3)
+
3388  par_dst->block_align= 0;
+
3389  break;
+
3390  case AVMEDIA_TYPE_VIDEO:
+
3391  if (ost->frame_aspect_ratio.num) { // overridden by the -aspect cli option
+
3392  sar =
+
3393  av_mul_q(ost->frame_aspect_ratio,
+
3394  (AVRational){ par_dst->height, par_dst->width });
+
3395  av_log(NULL, AV_LOG_WARNING, "Overriding aspect ratio "
+
3396  "with stream copy may produce invalid files\n");
+
3397  }
+
3398  else if (ist->st->sample_aspect_ratio.num)
+
3399  sar = ist->st->sample_aspect_ratio;
+
3400  else
+
3401  sar = par_src->sample_aspect_ratio;
+
3402  ost->st->sample_aspect_ratio = par_dst->sample_aspect_ratio = sar;
+
3403  ost->st->avg_frame_rate = ist->st->avg_frame_rate;
+
3404  ost->st->r_frame_rate = ist->st->r_frame_rate;
+
3405  break;
+
3406  }
+
3407 
+
3408  ost->mux_timebase = ist->st->time_base;
+
3409 
+
3410  return 0;
+
3411 }
+
3412 
+ +
3414 {
+
3415  AVDictionaryEntry *e;
+
3416 
+
3417  uint8_t *encoder_string;
+
3418  int encoder_string_len;
+
3419  int format_flags = 0;
+
3420  int codec_flags = ost->enc_ctx->flags;
+
3421 
+
3422  if (av_dict_get(ost->st->metadata, "encoder", NULL, 0))
+
3423  return;
+
3424 
+
3425  e = av_dict_get(of->opts, "fflags", NULL, 0);
+
3426  if (e) {
+
3427  const AVOption *o = av_opt_find(of->ctx, "fflags", NULL, 0, 0);
+
3428  if (!o)
+
3429  return;
+
3430  av_opt_eval_flags(of->ctx, o, e->value, &format_flags);
+
3431  }
+
3432  e = av_dict_get(ost->encoder_opts, "flags", NULL, 0);
+
3433  if (e) {
+
3434  const AVOption *o = av_opt_find(ost->enc_ctx, "flags", NULL, 0, 0);
+
3435  if (!o)
+
3436  return;
+
3437  av_opt_eval_flags(ost->enc_ctx, o, e->value, &codec_flags);
+
3438  }
+
3439 
+
3440  encoder_string_len = sizeof(LIBAVCODEC_IDENT) + strlen(ost->enc->name) + 2;
+
3441  encoder_string = av_mallocz(encoder_string_len);
+
3442  if (!encoder_string)
+
3443  exit_program(1);
+
3444 
+
3445  if (!(format_flags & AVFMT_FLAG_BITEXACT) && !(codec_flags & AV_CODEC_FLAG_BITEXACT))
+
3446  av_strlcpy(encoder_string, LIBAVCODEC_IDENT " ", encoder_string_len);
+
3447  else
+
3448  av_strlcpy(encoder_string, "Lavc ", encoder_string_len);
+
3449  av_strlcat(encoder_string, ost->enc->name, encoder_string_len);
+
3450  av_dict_set(&ost->st->metadata, "encoder", encoder_string,
+
3451  AV_DICT_DONT_STRDUP_VAL | AV_DICT_DONT_OVERWRITE);
+
3452 }
+
3453 
+ +
3455  AVCodecContext *avctx)
+
3456 {
+
3457  char *p;
+
3458  int n = 1, i, size, index = 0;
+
3459  int64_t t, *pts;
+
3460 
+
3461  for (p = kf; *p; p++)
+
3462  if (*p == ',')
+
3463  n++;
+
3464  size = n;
+
3465  pts = av_malloc_array(size, sizeof(*pts));
+
3466  if (!pts) {
+
3467  av_log(NULL, AV_LOG_FATAL, "Could not allocate forced key frames array.\n");
+
3468  exit_program(1);
+
3469  }
+
3470 
+
3471  p = kf;
+
3472  for (i = 0; i < n; i++) {
+
3473  char *next = strchr(p, ',');
+
3474 
+
3475  if (next)
+
3476  *next++ = 0;
+
3477 
+
3478  if (!memcmp(p, "chapters", 8)) {
+
3479 
+
3480  AVFormatContext *avf = output_files[ost->file_index]->ctx;
+
3481  int j;
+
3482 
+
3483  if (avf->nb_chapters > INT_MAX - size ||
+
3484  !(pts = av_realloc_f(pts, size += avf->nb_chapters - 1,
+
3485  sizeof(*pts)))) {
+
3486  av_log(NULL, AV_LOG_FATAL,
+
3487  "Could not allocate forced key frames array.\n");
+
3488  exit_program(1);
+
3489  }
+
3490  t = p[8] ? parse_time_or_die("force_key_frames", p + 8, 1) : 0;
+
3491  t = av_rescale_q(t, AV_TIME_BASE_Q, avctx->time_base);
+
3492 
+
3493  for (j = 0; j < avf->nb_chapters; j++) {
+
3494  AVChapter *c = avf->chapters[j];
+
3495  av_assert1(index < size);
+
3496  pts[index++] = av_rescale_q(c->start, c->time_base,
+
3497  avctx->time_base) + t;
+
3498  }
+
3499 
+
3500  } else {
+
3501 
+
3502  t = parse_time_or_die("force_key_frames", p, 1);
+
3503  av_assert1(index < size);
+
3504  pts[index++] = av_rescale_q(t, AV_TIME_BASE_Q, avctx->time_base);
+
3505 
+
3506  }
+
3507 
+
3508  p = next;
+
3509  }
+
3510 
+
3511  av_assert0(index == size);
+
3512  qsort(pts, size, sizeof(*pts), compare_int64);
+
3513  ost->forced_kf_count = size;
+
3514  ost->forced_kf_pts = pts;
+
3515 }
+
3516 
+
3517 static void init_encoder_time_base(OutputStream *ost, AVRational default_time_base)
+
3518 {
+ +
3520  AVCodecContext *enc_ctx = ost->enc_ctx;
+
3521  AVFormatContext *oc;
+
3522 
+
3523  if (ost->enc_timebase.num > 0) {
+
3524  enc_ctx->time_base = ost->enc_timebase;
+
3525  return;
+
3526  }
+
3527 
+
3528  if (ost->enc_timebase.num < 0) {
+
3529  if (ist) {
+
3530  enc_ctx->time_base = ist->st->time_base;
+
3531  return;
+
3532  }
+
3533 
+
3534  oc = output_files[ost->file_index]->ctx;
+
3535  av_log(oc, AV_LOG_WARNING, "Input stream data not available, using default time base\n");
+
3536  }
+
3537 
+
3538  enc_ctx->time_base = default_time_base;
+
3539 }
+
3540 
+
3541 static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
+
3542 {
+ +
3544  AVCodecContext *enc_ctx = ost->enc_ctx;
+
3545  AVCodecContext *dec_ctx = NULL;
+
3546  AVFormatContext *oc = output_files[ost->file_index]->ctx;
+
3547  int j, ret;
+
3548 
+ +
3550 
+
3551  // Muxers use AV_PKT_DATA_DISPLAYMATRIX to signal rotation. On the other
+
3552  // hand, the legacy API makes demuxers set "rotate" metadata entries,
+
3553  // which have to be filtered out to prevent leaking them to output files.
+
3554  av_dict_set(&ost->st->metadata, "rotate", NULL, 0);
+
3555 
+
3556  if (ist) {
+
3557  ost->st->disposition = ist->st->disposition;
+
3558 
+
3559  dec_ctx = ist->dec_ctx;
+
3560 
+
3561  enc_ctx->chroma_sample_location = dec_ctx->chroma_sample_location;
+
3562  } else {
+
3563  for (j = 0; j < oc->nb_streams; j++) {
+
3564  AVStream *st = oc->streams[j];
+
3565  if (st != ost->st && st->codecpar->codec_type == ost->st->codecpar->codec_type)
+
3566  break;
+
3567  }
+
3568  if (j == oc->nb_streams)
+
3569  if (ost->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO ||
+
3570  ost->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
+
3571  ost->st->disposition = AV_DISPOSITION_DEFAULT;
+
3572  }
+
3573 
+
3574  if (enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO) {
+
3575  if (!ost->frame_rate.num)
+
3576  ost->frame_rate = av_buffersink_get_frame_rate(ost->filter->filter);
+
3577  if (ist && !ost->frame_rate.num)
+
3578  ost->frame_rate = ist->framerate;
+
3579  if (ist && !ost->frame_rate.num)
+
3580  ost->frame_rate = ist->st->r_frame_rate;
+
3581  if (ist && !ost->frame_rate.num && !ost->max_frame_rate.num) {
+
3582  ost->frame_rate = (AVRational){25, 1};
+
3583  av_log(NULL, AV_LOG_WARNING,
+
3584  "No information "
+
3585  "about the input framerate is available. Falling "
+
3586  "back to a default value of 25fps for output stream #%d:%d. Use the -r option "
+
3587  "if you want a different framerate.\n",
+
3588  ost->file_index, ost->index);
+
3589  }
+
3590 
+
3591  if (ost->max_frame_rate.num &&
+
3592  (av_q2d(ost->frame_rate) > av_q2d(ost->max_frame_rate) ||
+
3593  !ost->frame_rate.den))
+ +
3595 
+
3596  if (ost->enc->supported_framerates && !ost->force_fps) {
+
3597  int idx = av_find_nearest_q_idx(ost->frame_rate, ost->enc->supported_framerates);
+
3598  ost->frame_rate = ost->enc->supported_framerates[idx];
+
3599  }
+
3600  // reduce frame rate for mpeg4 to be within the spec limits
+
3601  if (enc_ctx->codec_id == AV_CODEC_ID_MPEG4) {
+
3602  av_reduce(&ost->frame_rate.num, &ost->frame_rate.den,
+
3603  ost->frame_rate.num, ost->frame_rate.den, 65535);
+
3604  }
+
3605  }
+
3606 
+
3607  switch (enc_ctx->codec_type) {
+
3608  case AVMEDIA_TYPE_AUDIO:
+
3609  enc_ctx->sample_fmt = av_buffersink_get_format(ost->filter->filter);
+
3610  if (dec_ctx)
+
3611  enc_ctx->bits_per_raw_sample = FFMIN(dec_ctx->bits_per_raw_sample,
+
3612  av_get_bytes_per_sample(enc_ctx->sample_fmt) << 3);
+
3613  enc_ctx->sample_rate = av_buffersink_get_sample_rate(ost->filter->filter);
+
3614  enc_ctx->channel_layout = av_buffersink_get_channel_layout(ost->filter->filter);
+
3615  enc_ctx->channels = av_buffersink_get_channels(ost->filter->filter);
+
3616 
+
3617  init_encoder_time_base(ost, av_make_q(1, enc_ctx->sample_rate));
+
3618  break;
+
3619 
+
3620  case AVMEDIA_TYPE_VIDEO:
+ +
3622 
+
3623  if (!(enc_ctx->time_base.num && enc_ctx->time_base.den))
+
3624  enc_ctx->time_base = av_buffersink_get_time_base(ost->filter->filter);
+
3625  if ( av_q2d(enc_ctx->time_base) < 0.001 && video_sync_method != VSYNC_PASSTHROUGH
+
3626  && (video_sync_method == VSYNC_CFR || video_sync_method == VSYNC_VSCFR || (video_sync_method == VSYNC_AUTO && !(oc->oformat->flags & AVFMT_VARIABLE_FPS)))){
+
3627  av_log(oc, AV_LOG_WARNING, "Frame rate very high for a muxer not efficiently supporting it.\n"
+
3628  "Please consider specifying a lower framerate, a different muxer or -vsync 2\n");
+
3629  }
+
3630 
+
3631  enc_ctx->width = av_buffersink_get_w(ost->filter->filter);
+
3632  enc_ctx->height = av_buffersink_get_h(ost->filter->filter);
+
3633  enc_ctx->sample_aspect_ratio = ost->st->sample_aspect_ratio =
+
3634  ost->frame_aspect_ratio.num ? // overridden by the -aspect cli option
+
3635  av_mul_q(ost->frame_aspect_ratio, (AVRational){ enc_ctx->height, enc_ctx->width }) :
+
3636  av_buffersink_get_sample_aspect_ratio(ost->filter->filter);
+
3637 
+
3638  enc_ctx->pix_fmt = av_buffersink_get_format(ost->filter->filter);
+
3639  if (dec_ctx)
+
3640  enc_ctx->bits_per_raw_sample = FFMIN(dec_ctx->bits_per_raw_sample,
+
3641  av_pix_fmt_desc_get(enc_ctx->pix_fmt)->comp[0].depth);
+
3642 
+
3643  if (frame) {
+
3644  enc_ctx->color_range = frame->color_range;
+
3645  enc_ctx->color_primaries = frame->color_primaries;
+
3646  enc_ctx->color_trc = frame->color_trc;
+
3647  enc_ctx->colorspace = frame->colorspace;
+
3648  enc_ctx->chroma_sample_location = frame->chroma_location;
+
3649  }
+
3650 
+
3651  enc_ctx->framerate = ost->frame_rate;
+
3652 
+
3653  ost->st->avg_frame_rate = ost->frame_rate;
+
3654 
+
3655  if (!dec_ctx ||
+
3656  enc_ctx->width != dec_ctx->width ||
+
3657  enc_ctx->height != dec_ctx->height ||
+
3658  enc_ctx->pix_fmt != dec_ctx->pix_fmt) {
+
3659  enc_ctx->bits_per_raw_sample = frame_bits_per_raw_sample;
+
3660  }
+
3661 
+
3662  // Field order: autodetection
+
3663  if (frame) {
+
3664  if (enc_ctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
+
3665  ost->top_field_first >= 0)
+
3666  frame->top_field_first = !!ost->top_field_first;
+
3667 
+
3668  if (frame->interlaced_frame) {
+
3669  if (enc_ctx->codec->id == AV_CODEC_ID_MJPEG)
+
3670  enc_ctx->field_order = frame->top_field_first ? AV_FIELD_TT:AV_FIELD_BB;
+
3671  else
+
3672  enc_ctx->field_order = frame->top_field_first ? AV_FIELD_TB:AV_FIELD_BT;
+
3673  } else
+
3674  enc_ctx->field_order = AV_FIELD_PROGRESSIVE;
+
3675  }
+
3676 
+
3677  // Field order: override
+
3678  if (ost->top_field_first == 0) {
+
3679  enc_ctx->field_order = AV_FIELD_BB;
+
3680  } else if (ost->top_field_first == 1) {
+
3681  enc_ctx->field_order = AV_FIELD_TT;
+
3682  }
+
3683 
+
3684  if (ost->forced_keyframes) {
+
3685  if (!strncmp(ost->forced_keyframes, "expr:", 5)) {
+
3686  ret = av_expr_parse(&ost->forced_keyframes_pexpr, ost->forced_keyframes+5,
+
3687  forced_keyframes_const_names, NULL, NULL, NULL, NULL, 0, NULL);
+
3688  if (ret < 0) {
+
3689  av_log(NULL, AV_LOG_ERROR,
+
3690  "Invalid force_key_frames expression '%s'\n", ost->forced_keyframes+5);
+
3691  return ret;
+
3692  }
+ + + + +
3697 
+
3698  // Don't parse the 'forced_keyframes' in case of 'keep-source-keyframes',
+
3699  // parse it only for static kf timings
+
3700  } else if(strncmp(ost->forced_keyframes, "source", 6)) {
+ +
3702  }
+
3703  }
+
3704  break;
+
3705  case AVMEDIA_TYPE_SUBTITLE:
+
3706  enc_ctx->time_base = AV_TIME_BASE_Q;
+
3707  if (!enc_ctx->width) {
+
3708  enc_ctx->width = input_streams[ost->source_index]->st->codecpar->width;
+
3709  enc_ctx->height = input_streams[ost->source_index]->st->codecpar->height;
+
3710  }
+
3711  break;
+
3712  case AVMEDIA_TYPE_DATA:
+
3713  break;
+
3714  default:
+
3715  abort();
+
3716  break;
+
3717  }
+
3718 
+
3719  ost->mux_timebase = enc_ctx->time_base;
+
3720 
+
3721  return 0;
+
3722 }
+
3723 
+
3724 static int init_output_stream(OutputStream *ost, AVFrame *frame, char *error, int error_len)
+
3725 {
+
3726  int ret = 0;
+
3727 
+
3728  if (ost->encoding_needed) {
+
3729  const AVCodec *codec = ost->enc;
+
3730  AVCodecContext *dec = NULL;
+
3731  InputStream *ist;
+
3732 
+
3733  ret = init_output_stream_encode(ost, frame);
+
3734  if (ret < 0)
+
3735  return ret;
+
3736 
+
3737  if ((ist = get_input_stream(ost)))
+
3738  dec = ist->dec_ctx;
+
3739  if (dec && dec->subtitle_header) {
+
3740  /* ASS code assumes this buffer is null terminated so add extra byte. */
+
3741  ost->enc_ctx->subtitle_header = av_mallocz(dec->subtitle_header_size + 1);
+
3742  if (!ost->enc_ctx->subtitle_header)
+
3743  return AVERROR(ENOMEM);
+
3744  memcpy(ost->enc_ctx->subtitle_header, dec->subtitle_header, dec->subtitle_header_size);
+
3745  ost->enc_ctx->subtitle_header_size = dec->subtitle_header_size;
+
3746  }
+
3747  if (!av_dict_get(ost->encoder_opts, "threads", NULL, 0))
+
3748  av_dict_set(&ost->encoder_opts, "threads", "auto", 0);
+
3749  if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
+
3750  !codec->defaults &&
+
3751  !av_dict_get(ost->encoder_opts, "b", NULL, 0) &&
+
3752  !av_dict_get(ost->encoder_opts, "ab", NULL, 0))
+
3753  av_dict_set(&ost->encoder_opts, "b", "128000", 0);
+
3754 
+ +
3756  if (ret < 0) {
+
3757  snprintf(error, error_len, "Device setup failed for "
+
3758  "encoder on output stream #%d:%d : %s",
+
3759  ost->file_index, ost->index, av_err2str(ret));
+
3760  return ret;
+
3761  }
+
3762 
+
3763  if (ist && ist->dec->type == AVMEDIA_TYPE_SUBTITLE && ost->enc->type == AVMEDIA_TYPE_SUBTITLE) {
+
3764  int input_props = 0, output_props = 0;
+
3765  AVCodecDescriptor const *input_descriptor =
+
3766  avcodec_descriptor_get(dec->codec_id);
+
3767  AVCodecDescriptor const *output_descriptor =
+
3768  avcodec_descriptor_get(ost->enc_ctx->codec_id);
+
3769  if (input_descriptor)
+
3770  input_props = input_descriptor->props & (AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB);
+
3771  if (output_descriptor)
+
3772  output_props = output_descriptor->props & (AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB);
+
3773  if (input_props && output_props && input_props != output_props) {
+
3774  snprintf(error, error_len,
+
3775  "Subtitle encoding currently only possible from text to text "
+
3776  "or bitmap to bitmap");
+
3777  return AVERROR_INVALIDDATA;
+
3778  }
+
3779  }
+
3780 
+
3781  if ((ret = avcodec_open2(ost->enc_ctx, codec, &ost->encoder_opts)) < 0) {
+
3782  if (ret == AVERROR_EXPERIMENTAL)
+
3783  abort_codec_experimental(codec, 1);
+
3784  snprintf(error, error_len,
+
3785  "Error while opening encoder for output stream #%d:%d - "
+
3786  "maybe incorrect parameters such as bit_rate, rate, width or height",
+
3787  ost->file_index, ost->index);
+
3788  return ret;
+
3789  }
+
3790  if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
+
3791  !(ost->enc->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
+
3792  av_buffersink_set_frame_size(ost->filter->filter,
+
3793  ost->enc_ctx->frame_size);
+ +
3795  if (ost->enc_ctx->bit_rate && ost->enc_ctx->bit_rate < 1000 &&
+
3796  ost->enc_ctx->codec_id != AV_CODEC_ID_CODEC2 /* don't complain about 700 bit/s modes */)
+
3797  av_log(NULL, AV_LOG_WARNING, "The bitrate parameter is set too low."
+
3798  " It takes bits/s as argument, not kbits/s\n");
+
3799 
+
3800  ret = avcodec_parameters_from_context(ost->st->codecpar, ost->enc_ctx);
+
3801  if (ret < 0) {
+
3802  av_log(NULL, AV_LOG_FATAL,
+
3803  "Error initializing the output stream codec context.\n");
+
3804  exit_program(1);
+
3805  }
+
3806 
+
3807  if (ost->enc_ctx->nb_coded_side_data) {
+
3808  int i;
+
3809 
+
3810  for (i = 0; i < ost->enc_ctx->nb_coded_side_data; i++) {
+
3811  const AVPacketSideData *sd_src = &ost->enc_ctx->coded_side_data[i];
+
3812  uint8_t *dst_data;
+
3813 
+
3814  dst_data = av_stream_new_side_data(ost->st, sd_src->type, sd_src->size);
+
3815  if (!dst_data)
+
3816  return AVERROR(ENOMEM);
+
3817  memcpy(dst_data, sd_src->data, sd_src->size);
+
3818  }
+
3819  }
+
3820 
+
3821  /*
+
3822  * Add global input side data. For now this is naive, and copies it
+
3823  * from the input stream's global side data. All side data should
+
3824  * really be funneled over AVFrame and libavfilter, then added back to
+
3825  * packet side data, and then potentially using the first packet for
+
3826  * global side data.
+
3827  */
+
3828  if (ist) {
+
3829  int i;
+
3830  for (i = 0; i < ist->st->nb_side_data; i++) {
+
3831  AVPacketSideData *sd = &ist->st->side_data[i];
+
3832  if (sd->type != AV_PKT_DATA_CPB_PROPERTIES) {
+
3833  uint8_t *dst = av_stream_new_side_data(ost->st, sd->type, sd->size);
+
3834  if (!dst)
+
3835  return AVERROR(ENOMEM);
+
3836  memcpy(dst, sd->data, sd->size);
+
3837  if (ist->autorotate && sd->type == AV_PKT_DATA_DISPLAYMATRIX)
+
3838  av_display_rotation_set((uint32_t *)dst, 0);
+
3839  }
+
3840  }
+
3841  }
+
3842 
+
3843  // copy timebase while removing common factors
+
3844  if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0)
+
3845  ost->st->time_base = av_add_q(ost->enc_ctx->time_base, (AVRational){0, 1});
+
3846 
+
3847  // copy estimated duration as a hint to the muxer
+
3848  if (ost->st->duration <= 0 && ist && ist->st->duration > 0)
+
3849  ost->st->duration = av_rescale_q(ist->st->duration, ist->st->time_base, ost->st->time_base);
+
3850  } else if (ost->stream_copy) {
+ +
3852  if (ret < 0)
+
3853  return ret;
+
3854  }
+
3855 
+
3856  // parse user provided disposition, and update stream values
+
3857  if (ost->disposition) {
+
3858  static const AVOption opts[] = {
+
3859  { "disposition" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, (double)INT64_MAX, .unit = "flags" },
+
3860  { "default" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEFAULT }, .unit = "flags" },
+
3861  { "dub" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DUB }, .unit = "flags" },
+
3862  { "original" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ORIGINAL }, .unit = "flags" },
+
3863  { "comment" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_COMMENT }, .unit = "flags" },
+
3864  { "lyrics" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_LYRICS }, .unit = "flags" },
+
3865  { "karaoke" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_KARAOKE }, .unit = "flags" },
+
3866  { "forced" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_FORCED }, .unit = "flags" },
+
3867  { "hearing_impaired" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_HEARING_IMPAIRED }, .unit = "flags" },
+
3868  { "visual_impaired" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_VISUAL_IMPAIRED }, .unit = "flags" },
+
3869  { "clean_effects" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "flags" },
+
3870  { "attached_pic" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ATTACHED_PIC }, .unit = "flags" },
+
3871  { "captions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "flags" },
+
3872  { "descriptions" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "flags" },
+
3873  { "dependent" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "flags" },
+
3874  { "metadata" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "flags" },
+
3875  { NULL },
+
3876  };
+
3877  static const AVClass class = {
+
3878  .class_name = "",
+
3879  .item_name = av_default_item_name,
+
3880  .option = opts,
+
3881  .version = LIBAVUTIL_VERSION_INT,
+
3882  };
+
3883  const AVClass *pclass = &class;
+
3884 
+
3885  ret = av_opt_eval_flags(&pclass, &opts[0], ost->disposition, &ost->st->disposition);
+
3886  if (ret < 0)
+
3887  return ret;
+
3888  }
+
3889 
+
3890  /* initialize bitstream filters for the output stream
+
3891  * needs to be done here, because the codec id for streamcopy is not
+
3892  * known until now */
+
3893  ret = init_output_bsfs(ost);
+
3894  if (ret < 0)
+
3895  return ret;
+
3896 
+
3897  ost->initialized = 1;
+
3898 
+ +
3900  if (ret < 0)
+
3901  return ret;
+
3902 
+
3903  return ret;
+
3904 }
+
3905 
+
3906 static void report_new_stream(int input_index, AVPacket *pkt)
+
3907 {
+
3908  InputFile *file = input_files[input_index];
+
3909  AVStream *st = file->ctx->streams[pkt->stream_index];
+
3910 
+
3911  if (pkt->stream_index < file->nb_streams_warn)
+
3912  return;
+
3913  av_log(file->ctx, AV_LOG_WARNING,
+
3914  "New %s stream %d:%d at pos:%"PRId64" and DTS:%ss\n",
+
3915  av_get_media_type_string(st->codecpar->codec_type),
+
3916  input_index, pkt->stream_index,
+
3917  pkt->pos, av_ts2timestr(pkt->dts, &st->time_base));
+
3918  file->nb_streams_warn = pkt->stream_index + 1;
+
3919 }
+
3920 
+
3921 static int transcode_init(void)
+
3922 {
+
3923  int ret = 0, i, j, k;
+
3924  AVFormatContext *oc;
+
3925  OutputStream *ost;
+
3926  InputStream *ist;
+
3927  char error[1024] = {0};
+
3928 
+
3929  for (i = 0; i < nb_filtergraphs; i++) {
+
3930  FilterGraph *fg = filtergraphs[i];
+
3931  for (j = 0; j < fg->nb_outputs; j++) {
+
3932  OutputFilter *ofilter = fg->outputs[j];
+
3933  if (!ofilter->ost || ofilter->ost->source_index >= 0)
+
3934  continue;
+
3935  if (fg->nb_inputs != 1)
+
3936  continue;
+
3937  for (k = nb_input_streams-1; k >= 0 ; k--)
+
3938  if (fg->inputs[0]->ist == input_streams[k])
+
3939  break;
+
3940  ofilter->ost->source_index = k;
+
3941  }
+
3942  }
+
3943 
+
3944  /* init framerate emulation */
+
3945  for (i = 0; i < nb_input_files; i++) {
+
3946  InputFile *ifile = input_files[i];
+
3947  if (ifile->readrate || ifile->rate_emu)
+
3948  for (j = 0; j < ifile->nb_streams; j++)
+
3949  input_streams[j + ifile->ist_index]->start = av_gettime_relative();
+
3950  }
+
3951 
+
3952  /* init input streams */
+
3953  for (i = 0; i < nb_input_streams; i++)
+
3954  if ((ret = init_input_stream(i, error, sizeof(error))) < 0) {
+
3955  for (i = 0; i < nb_output_streams; i++) {
+
3956  ost = output_streams[i];
+
3957  avcodec_close(ost->enc_ctx);
+
3958  }
+
3959  goto dump_format;
+
3960  }
+
3961 
+
3962  /*
+
3963  * initialize stream copy and subtitle/data streams.
+
3964  * Encoded AVFrame based streams will get initialized as follows:
+
3965  * - when the first AVFrame is received in do_video_out
+
3966  * - just before the first AVFrame is received in either transcode_step
+
3967  * or reap_filters due to us requiring the filter chain buffer sink
+
3968  * to be configured with the correct audio frame size, which is only
+
3969  * known after the encoder is initialized.
+
3970  */
+
3971  for (i = 0; i < nb_output_streams; i++) {
+
3972  if (!output_streams[i]->stream_copy &&
+
3973  (output_streams[i]->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
+
3974  output_streams[i]->enc_ctx->codec_type == AVMEDIA_TYPE_AUDIO))
+
3975  continue;
+
3976 
+
3977  ret = init_output_stream_wrapper(output_streams[i], NULL, 0);
+
3978  if (ret < 0)
+
3979  goto dump_format;
+
3980  }
+
3981 
+
3982  /* discard unused programs */
+
3983  for (i = 0; i < nb_input_files; i++) {
+
3984  InputFile *ifile = input_files[i];
+
3985  for (j = 0; j < ifile->ctx->nb_programs; j++) {
+
3986  AVProgram *p = ifile->ctx->programs[j];
+
3987  int discard = AVDISCARD_ALL;
+
3988 
+
3989  for (k = 0; k < p->nb_stream_indexes; k++)
+
3990  if (!input_streams[ifile->ist_index + p->stream_index[k]]->discard) {
+
3991  discard = AVDISCARD_DEFAULT;
+
3992  break;
+
3993  }
+
3994  p->discard = discard;
+
3995  }
+
3996  }
+
3997 
+
3998  /* write headers for files with no streams */
+
3999  for (i = 0; i < nb_output_files; i++) {
+
4000  oc = output_files[i]->ctx;
+
4001  if (oc->oformat->flags & AVFMT_NOSTREAMS && oc->nb_streams == 0) {
+
4002  ret = check_init_output_file(output_files[i], i);
+
4003  if (ret < 0)
+
4004  goto dump_format;
+
4005  }
+
4006  }
+
4007 
+
4008  dump_format:
+
4009  /* dump the stream mapping */
+
4010  av_log(NULL, AV_LOG_INFO, "Stream mapping:\n");
+
4011  for (i = 0; i < nb_input_streams; i++) {
+
4012  ist = input_streams[i];
+
4013 
+
4014  for (j = 0; j < ist->nb_filters; j++) {
+
4015  if (!filtergraph_is_simple(ist->filters[j]->graph)) {
+
4016  av_log(NULL, AV_LOG_INFO, " Stream #%d:%d (%s) -> %s",
+
4017  ist->file_index, ist->st->index, ist->dec ? ist->dec->name : "?",
+
4018  ist->filters[j]->name);
+
4019  if (nb_filtergraphs > 1)
+
4020  av_log(NULL, AV_LOG_INFO, " (graph %d)", ist->filters[j]->graph->index);
+
4021  av_log(NULL, AV_LOG_INFO, "\n");
+
4022  }
+
4023  }
+
4024  }
+
4025 
+
4026  for (i = 0; i < nb_output_streams; i++) {
+
4027  ost = output_streams[i];
+
4028 
+
4029  if (ost->attachment_filename) {
+
4030  /* an attached file */
+
4031  av_log(NULL, AV_LOG_INFO, " File %s -> Stream #%d:%d\n",
+ +
4033  continue;
+
4034  }
+
4035 
+ +
4037  /* output from a complex graph */
+
4038  av_log(NULL, AV_LOG_INFO, " %s", ost->filter->name);
+
4039  if (nb_filtergraphs > 1)
+
4040  av_log(NULL, AV_LOG_INFO, " (graph %d)", ost->filter->graph->index);
+
4041 
+
4042  av_log(NULL, AV_LOG_INFO, " -> Stream #%d:%d (%s)\n", ost->file_index,
+
4043  ost->index, ost->enc ? ost->enc->name : "?");
+
4044  continue;
+
4045  }
+
4046 
+
4047  av_log(NULL, AV_LOG_INFO, " Stream #%d:%d -> #%d:%d",
+ +
4049  input_streams[ost->source_index]->st->index,
+
4050  ost->file_index,
+
4051  ost->index);
+ +
4053  av_log(NULL, AV_LOG_INFO, " [sync #%d:%d]",
+ +
4055  ost->sync_ist->st->index);
+
4056  if (ost->stream_copy)
+
4057  av_log(NULL, AV_LOG_INFO, " (copy)");
+
4058  else {
+
4059  const AVCodec *in_codec = input_streams[ost->source_index]->dec;
+
4060  const AVCodec *out_codec = ost->enc;
+
4061  const char *decoder_name = "?";
+
4062  const char *in_codec_name = "?";
+
4063  const char *encoder_name = "?";
+
4064  const char *out_codec_name = "?";
+
4065  const AVCodecDescriptor *desc;
+
4066 
+
4067  if (in_codec) {
+
4068  decoder_name = in_codec->name;
+
4069  desc = avcodec_descriptor_get(in_codec->id);
+
4070  if (desc)
+
4071  in_codec_name = desc->name;
+
4072  if (!strcmp(decoder_name, in_codec_name))
+
4073  decoder_name = "native";
+
4074  }
+
4075 
+
4076  if (out_codec) {
+
4077  encoder_name = out_codec->name;
+
4078  desc = avcodec_descriptor_get(out_codec->id);
+
4079  if (desc)
+
4080  out_codec_name = desc->name;
+
4081  if (!strcmp(encoder_name, out_codec_name))
+
4082  encoder_name = "native";
+
4083  }
+
4084 
+
4085  av_log(NULL, AV_LOG_INFO, " (%s (%s) -> %s (%s))",
+
4086  in_codec_name, decoder_name,
+
4087  out_codec_name, encoder_name);
+
4088  }
+
4089  av_log(NULL, AV_LOG_INFO, "\n");
+
4090  }
+
4091 
+
4092  if (ret) {
+
4093  av_log(NULL, AV_LOG_ERROR, "%s\n", error);
+
4094  return ret;
+
4095  }
+
4096 
+
4097  atomic_store(&transcode_init_done, 1);
+
4098 
+
4099  return 0;
+
4100 }
+
4101 
+
4102 /* Return 1 if there remain streams where more output is wanted, 0 otherwise. */
+
4103 static int need_output(void)
+
4104 {
+
4105  int i;
+
4106 
+
4107  for (i = 0; i < nb_output_streams; i++) {
+ + +
4110  AVFormatContext *os = output_files[ost->file_index]->ctx;
+
4111 
+
4112  if (ost->finished ||
+
4113  (os->pb && avio_tell(os->pb) >= of->limit_filesize))
+
4114  continue;
+
4115  if (ost->frame_number >= ost->max_frames) {
+
4116  int j;
+
4117  for (j = 0; j < of->ctx->nb_streams; j++)
+ +
4119  continue;
+
4120  }
+
4121 
+
4122  return 1;
+
4123  }
+
4124 
+
4125  return 0;
+
4126 }
+
4127 
+ +
4134 {
+
4135  int i;
+
4136  int64_t opts_min = INT64_MAX;
+
4137  OutputStream *ost_min = NULL;
+
4138 
+
4139  for (i = 0; i < nb_output_streams; i++) {
+ +
4141  int64_t opts = ost->last_mux_dts == AV_NOPTS_VALUE ? INT64_MIN :
+
4142  av_rescale_q(ost->last_mux_dts, ost->st->time_base,
+
4143  AV_TIME_BASE_Q);
+
4144  if (ost->last_mux_dts == AV_NOPTS_VALUE)
+
4145  av_log(NULL, AV_LOG_DEBUG,
+
4146  "cur_dts is invalid st:%d (%d) [init:%d i_done:%d finish:%d] (this is harmless if it occurs once at the start per stream)\n",
+
4147  ost->st->index, ost->st->id, ost->initialized, ost->inputs_done, ost->finished);
+
4148 
+
4149  if (!ost->initialized && !ost->inputs_done)
+
4150  return ost->unavailable ? NULL : ost;
+
4151 
+
4152  if (!ost->finished && opts < opts_min) {
+
4153  opts_min = opts;
+
4154  ost_min = ost->unavailable ? NULL : ost;
+
4155  }
+
4156  }
+
4157  return ost_min;
+
4158 }
+
4159 
+
4160 static void set_tty_echo(int on)
+
4161 {
+
4162 #if HAVE_TERMIOS_H
+
4163  struct termios tty;
+
4164  if (tcgetattr(0, &tty) == 0) {
+
4165  if (on) tty.c_lflag |= ECHO;
+
4166  else tty.c_lflag &= ~ECHO;
+
4167  tcsetattr(0, TCSANOW, &tty);
+
4168  }
+
4169 #endif
+
4170 }
+
4171 
+
4172 static int check_keyboard_interaction(int64_t cur_time)
+
4173 {
+
4174  int i, ret, key;
+
4175  if (received_nb_signals)
+
4176  return AVERROR_EXIT;
+
4177  /* read_key() returns 0 on EOF */
+
4178  if(cur_time - keyboard_last_time >= 100000 && !run_as_daemon){
+
4179  key = read_key();
+
4180  keyboard_last_time = cur_time;
+
4181  }else
+
4182  key = -1;
+
4183  if (key == 'q')
+
4184  return AVERROR_EXIT;
+
4185  if (key == '+') av_log_set_level(av_log_get_level()+10);
+
4186  if (key == '-') av_log_set_level(av_log_get_level()-10);
+
4187  if (key == 's') qp_hist ^= 1;
+
4188  if (key == 'h'){
+
4189  if (do_hex_dump){
+
4190  do_hex_dump = do_pkt_dump = 0;
+
4191  } else if(do_pkt_dump){
+
4192  do_hex_dump = 1;
+
4193  } else
+
4194  do_pkt_dump = 1;
+
4195  av_log_set_level(AV_LOG_DEBUG);
+
4196  }
+
4197  if (key == 'c' || key == 'C'){
+
4198  char buf[4096], target[64], command[256], arg[256] = {0};
+
4199  double time;
+
4200  int k, n = 0;
+
4201  fprintf(stderr, "\nEnter command: <target>|all <time>|-1 <command>[ <argument>]\n");
+
4202  i = 0;
+
4203  set_tty_echo(1);
+
4204  while ((k = read_key()) != '\n' && k != '\r' && i < sizeof(buf)-1)
+
4205  if (k > 0)
+
4206  buf[i++] = k;
+
4207  buf[i] = 0;
+
4208  set_tty_echo(0);
+
4209  fprintf(stderr, "\n");
+
4210  if (k > 0 &&
+
4211  (n = sscanf(buf, "%63[^ ] %lf %255[^ ] %255[^\n]", target, &time, command, arg)) >= 3) {
+
4212  av_log(NULL, AV_LOG_DEBUG, "Processing command target:%s time:%f command:%s arg:%s",
+
4213  target, time, command, arg);
+
4214  for (i = 0; i < nb_filtergraphs; i++) {
+
4215  FilterGraph *fg = filtergraphs[i];
+
4216  if (fg->graph) {
+
4217  if (time < 0) {
+
4218  ret = avfilter_graph_send_command(fg->graph, target, command, arg, buf, sizeof(buf),
+
4219  key == 'c' ? AVFILTER_CMD_FLAG_ONE : 0);
+
4220  fprintf(stderr, "Command reply for stream %d: ret:%d res:\n%s", i, ret, buf);
+
4221  } else if (key == 'c') {
+
4222  fprintf(stderr, "Queuing commands only on filters supporting the specific command is unsupported\n");
+
4223  ret = AVERROR_PATCHWELCOME;
+
4224  } else {
+
4225  ret = avfilter_graph_queue_command(fg->graph, target, command, arg, 0, time);
+
4226  if (ret < 0)
+
4227  fprintf(stderr, "Queuing command failed with error %s\n", av_err2str(ret));
+
4228  }
+
4229  }
+
4230  }
+
4231  } else {
+
4232  av_log(NULL, AV_LOG_ERROR,
+
4233  "Parse error, at least 3 arguments were expected, "
+
4234  "only %d given in string '%s'\n", n, buf);
+
4235  }
+
4236  }
+
4237  if (key == 'd' || key == 'D'){
+
4238  int debug=0;
+
4239  if(key == 'D') {
+
4240  debug = input_streams[0]->dec_ctx->debug << 1;
+
4241  if(!debug) debug = 1;
+
4242  while (debug & FF_DEBUG_DCT_COEFF) //unsupported, would just crash
+
4243  debug += debug;
+
4244  }else{
+
4245  char buf[32];
+
4246  int k = 0;
+
4247  i = 0;
+
4248  set_tty_echo(1);
+
4249  while ((k = read_key()) != '\n' && k != '\r' && i < sizeof(buf)-1)
+
4250  if (k > 0)
+
4251  buf[i++] = k;
+
4252  buf[i] = 0;
+
4253  set_tty_echo(0);
+
4254  fprintf(stderr, "\n");
+
4255  if (k <= 0 || sscanf(buf, "%d", &debug)!=1)
+
4256  fprintf(stderr,"error parsing debug value\n");
+
4257  }
+
4258  for(i=0;i<nb_input_streams;i++) {
+
4259  input_streams[i]->dec_ctx->debug = debug;
+
4260  }
+
4261  for(i=0;i<nb_output_streams;i++) {
+ +
4263  ost->enc_ctx->debug = debug;
+
4264  }
+
4265  if(debug) av_log_set_level(AV_LOG_DEBUG);
+
4266  fprintf(stderr,"debug=%d\n", debug);
+
4267  }
+
4268  if (key == '?'){
+
4269  fprintf(stderr, "key function\n"
+
4270  "? show this help\n"
+
4271  "+ increase verbosity\n"
+
4272  "- decrease verbosity\n"
+
4273  "c Send command to first matching filter supporting it\n"
+
4274  "C Send/Queue command to all matching filters\n"
+
4275  "D cycle through available debug modes\n"
+
4276  "h dump packets/hex press to cycle through the 3 states\n"
+
4277  "q quit\n"
+
4278  "s Show QP histogram\n"
+
4279  );
+
4280  }
+
4281  return 0;
+
4282 }
+
4283 
+
4284 #if HAVE_THREADS
+
4285 static void *input_thread(void *arg)
+
4286 {
+
4287  InputFile *f = arg;
+
4288  AVPacket *pkt = f->pkt, *queue_pkt;
+
4289  unsigned flags = f->non_blocking ? AV_THREAD_MESSAGE_NONBLOCK : 0;
+
4290  int ret = 0;
+
4291 
+
4292  while (1) {
+
4293  ret = av_read_frame(f->ctx, pkt);
+
4294 
+
4295  if (ret == AVERROR(EAGAIN)) {
+
4296  av_usleep(10000);
+
4297  continue;
+
4298  }
+
4299  if (ret < 0) {
+
4300  av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
+
4301  break;
+
4302  }
+
4303  queue_pkt = av_packet_alloc();
+
4304  if (!queue_pkt) {
+
4305  av_packet_unref(pkt);
+
4306  av_thread_message_queue_set_err_recv(f->in_thread_queue, AVERROR(ENOMEM));
+
4307  break;
+
4308  }
+
4309  av_packet_move_ref(queue_pkt, pkt);
+
4310  ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
+
4311  if (flags && ret == AVERROR(EAGAIN)) {
+
4312  flags = 0;
+
4313  ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
+
4314  av_log(f->ctx, AV_LOG_WARNING,
+
4315  "Thread message queue blocking; consider raising the "
+
4316  "thread_queue_size option (current value: %d)\n",
+
4317  f->thread_queue_size);
+
4318  }
+
4319  if (ret < 0) {
+
4320  if (ret != AVERROR_EOF)
+
4321  av_log(f->ctx, AV_LOG_ERROR,
+
4322  "Unable to send packet to main thread: %s\n",
+
4323  av_err2str(ret));
+
4324  av_packet_free(&queue_pkt);
+
4325  av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
+
4326  break;
+
4327  }
+
4328  }
+
4329 
+
4330  return NULL;
+
4331 }
+
4332 
+
4333 static void free_input_thread(int i)
+
4334 {
+
4335  InputFile *f = input_files[i];
+
4336  AVPacket *pkt;
+
4337 
+
4338  if (!f || !f->in_thread_queue)
+
4339  return;
+
4340  av_thread_message_queue_set_err_send(f->in_thread_queue, AVERROR_EOF);
+
4341  while (av_thread_message_queue_recv(f->in_thread_queue, &pkt, 0) >= 0)
+
4342  av_packet_free(&pkt);
+
4343 
+
4344  pthread_join(f->thread, NULL);
+
4345  f->joined = 1;
+
4346  av_thread_message_queue_free(&f->in_thread_queue);
+
4347 }
+
4348 
+
4349 static void free_input_threads(void)
+
4350 {
+
4351  int i;
+
4352 
+
4353  for (i = 0; i < nb_input_files; i++)
+
4354  free_input_thread(i);
+
4355 }
+
4356 
+
4357 static int init_input_thread(int i)
+
4358 {
+
4359  int ret;
+
4360  InputFile *f = input_files[i];
+
4361 
+
4362  if (f->thread_queue_size < 0)
+
4363  f->thread_queue_size = (nb_input_files > 1 ? 8 : 0);
+
4364  if (!f->thread_queue_size)
+
4365  return 0;
+
4366 
+
4367  if (f->ctx->pb ? !f->ctx->pb->seekable :
+
4368  strcmp(f->ctx->iformat->name, "lavfi"))
+
4369  f->non_blocking = 1;
+
4370  ret = av_thread_message_queue_alloc(&f->in_thread_queue,
+
4371  f->thread_queue_size, sizeof(f->pkt));
+
4372  if (ret < 0)
+
4373  return ret;
+
4374 
+
4375  if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) {
+
4376  av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret));
+
4377  av_thread_message_queue_free(&f->in_thread_queue);
+
4378  return AVERROR(ret);
+
4379  }
+
4380 
+
4381  return 0;
+
4382 }
+
4383 
+
4384 static int init_input_threads(void)
+
4385 {
+
4386  int i, ret;
+
4387 
+
4388  for (i = 0; i < nb_input_files; i++) {
+
4389  ret = init_input_thread(i);
+
4390  if (ret < 0)
+
4391  return ret;
+
4392  }
+
4393  return 0;
+
4394 }
+
4395 
+
4396 static int get_input_packet_mt(InputFile *f, AVPacket **pkt)
+
4397 {
+
4398  return av_thread_message_queue_recv(f->in_thread_queue, pkt,
+
4399  f->non_blocking ?
+
4400  AV_THREAD_MESSAGE_NONBLOCK : 0);
+
4401 }
+
4402 #endif
+
4403 
+
4404 static int get_input_packet(InputFile *f, AVPacket **pkt)
+
4405 {
+
4406  if (f->readrate || f->rate_emu) {
+
4407  int i;
+
4408  int64_t file_start = copy_ts * (
+
4409  (f->ctx->start_time != AV_NOPTS_VALUE ? f->ctx->start_time * !start_at_zero : 0) +
+
4410  (f->start_time != AV_NOPTS_VALUE ? f->start_time : 0)
+
4411  );
+
4412  float scale = f->rate_emu ? 1.0 : f->readrate;
+
4413  for (i = 0; i < f->nb_streams; i++) {
+ +
4415  int64_t stream_ts_offset, pts, now;
+
4416  if (!ist->nb_packets || (ist->decoding_needed && !ist->got_output)) continue;
+
4417  stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
+
4418  pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
+
4419  now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
+
4420  if (pts > now)
+
4421  return AVERROR(EAGAIN);
+
4422  }
+
4423  }
+
4424 
+
4425 #if HAVE_THREADS
+
4426  if (f->thread_queue_size)
+
4427  return get_input_packet_mt(f, pkt);
+
4428 #endif
+
4429  *pkt = f->pkt;
+
4430  return av_read_frame(f->ctx, *pkt);
+
4431 }
+
4432 
+
4433 static int got_eagain(void)
+
4434 {
+
4435  int i;
+
4436  for (i = 0; i < nb_output_streams; i++)
+
4437  if (output_streams[i]->unavailable)
+
4438  return 1;
+
4439  return 0;
+
4440 }
+
4441 
+
4442 static void reset_eagain(void)
+
4443 {
+
4444  int i;
+
4445  for (i = 0; i < nb_input_files; i++)
+
4446  input_files[i]->eagain = 0;
+
4447  for (i = 0; i < nb_output_streams; i++)
+
4448  output_streams[i]->unavailable = 0;
+
4449 }
+
4450 
+
4451 // set duration to max(tmp, duration) in a proper time base and return duration's time_base
+
4452 static AVRational duration_max(int64_t tmp, int64_t *duration, AVRational tmp_time_base,
+
4453  AVRational time_base)
+
4454 {
+
4455  int ret;
+
4456 
+
4457  if (!*duration) {
+
4458  *duration = tmp;
+
4459  return tmp_time_base;
+
4460  }
+
4461 
+
4462  ret = av_compare_ts(*duration, time_base, tmp, tmp_time_base);
+
4463  if (ret < 0) {
+
4464  *duration = tmp;
+
4465  return tmp_time_base;
+
4466  }
+
4467 
+
4468  return time_base;
+
4469 }
+
4470 
+
4471 static int seek_to_start(InputFile *ifile, AVFormatContext *is)
+
4472 {
+
4473  InputStream *ist;
+
4474  AVCodecContext *avctx;
+
4475  int i, ret, has_audio = 0;
+
4476  int64_t duration = 0;
+
4477 
+
4478  ret = avformat_seek_file(is, -1, INT64_MIN, is->start_time, is->start_time, 0);
+
4479  if (ret < 0)
+
4480  return ret;
+
4481 
+
4482  for (i = 0; i < ifile->nb_streams; i++) {
+
4483  ist = input_streams[ifile->ist_index + i];
+
4484  avctx = ist->dec_ctx;
+
4485 
+
4486  /* duration is the length of the last frame in a stream
+
4487  * when audio stream is present we don't care about
+
4488  * last video frame length because it's not defined exactly */
+
4489  if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && ist->nb_samples)
+
4490  has_audio = 1;
+
4491  }
+
4492 
+
4493  for (i = 0; i < ifile->nb_streams; i++) {
+
4494  ist = input_streams[ifile->ist_index + i];
+
4495  avctx = ist->dec_ctx;
+
4496 
+
4497  if (has_audio) {
+
4498  if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && ist->nb_samples) {
+
4499  AVRational sample_rate = {1, avctx->sample_rate};
+
4500 
+
4501  duration = av_rescale_q(ist->nb_samples, sample_rate, ist->st->time_base);
+
4502  } else {
+
4503  continue;
+
4504  }
+
4505  } else {
+
4506  if (ist->framerate.num) {
+
4507  duration = av_rescale_q(1, av_inv_q(ist->framerate), ist->st->time_base);
+
4508  } else if (ist->st->avg_frame_rate.num) {
+
4509  duration = av_rescale_q(1, av_inv_q(ist->st->avg_frame_rate), ist->st->time_base);
+
4510  } else {
+
4511  duration = 1;
+
4512  }
+
4513  }
+
4514  if (!ifile->duration)
+
4515  ifile->time_base = ist->st->time_base;
+
4516  /* the total duration of the stream, max_pts - min_pts is
+
4517  * the duration of the stream without the last frame */
+
4518  if (ist->max_pts > ist->min_pts && ist->max_pts - (uint64_t)ist->min_pts < INT64_MAX - duration)
+
4519  duration += ist->max_pts - ist->min_pts;
+
4520  ifile->time_base = duration_max(duration, &ifile->duration, ist->st->time_base,
+
4521  ifile->time_base);
+
4522  }
+
4523 
+
4524  if (ifile->loop > 0)
+
4525  ifile->loop--;
+
4526 
+
4527  return ret;
+
4528 }
+
4529 
+
4530 /*
+
4531  * Return
+
4532  * - 0 -- one packet was read and processed
+
4533  * - AVERROR(EAGAIN) -- no packets were available for selected file,
+
4534  * this function should be called again
+
4535  * - AVERROR_EOF -- this function should not be called again
+
4536  */
+
4537 static int process_input(int file_index)
+
4538 {
+
4539  InputFile *ifile = input_files[file_index];
+
4540  AVFormatContext *is;
+
4541  InputStream *ist;
+
4542  AVPacket *pkt;
+
4543  int ret, thread_ret, i, j;
+
4544  int64_t duration;
+
4545  int64_t pkt_dts;
+
4546  int disable_discontinuity_correction = copy_ts;
+
4547 
+
4548  is = ifile->ctx;
+
4549  ret = get_input_packet(ifile, &pkt);
+
4550 
+
4551  if (ret == AVERROR(EAGAIN)) {
+
4552  ifile->eagain = 1;
+
4553  return ret;
+
4554  }
+
4555  if (ret < 0 && ifile->loop) {
+
4556  AVCodecContext *avctx;
+
4557  for (i = 0; i < ifile->nb_streams; i++) {
+
4558  ist = input_streams[ifile->ist_index + i];
+
4559  avctx = ist->dec_ctx;
+
4560  if (ist->decoding_needed) {
+
4561  ret = process_input_packet(ist, NULL, 1);
+
4562  if (ret>0)
+
4563  return 0;
+
4564  avcodec_flush_buffers(avctx);
+
4565  }
+
4566  }
+
4567 #if HAVE_THREADS
+
4568  free_input_thread(file_index);
+
4569 #endif
+
4570  ret = seek_to_start(ifile, is);
+
4571 #if HAVE_THREADS
+
4572  thread_ret = init_input_thread(file_index);
+
4573  if (thread_ret < 0)
+
4574  return thread_ret;
+
4575 #endif
+
4576  if (ret < 0)
+
4577  av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n");
+
4578  else
+
4579  ret = get_input_packet(ifile, &pkt);
+
4580  if (ret == AVERROR(EAGAIN)) {
+
4581  ifile->eagain = 1;
+
4582  return ret;
+
4583  }
+
4584  }
+
4585  if (ret < 0) {
+
4586  if (ret != AVERROR_EOF) {
+
4587  print_error(is->url, ret);
+
4588  if (exit_on_error)
+
4589  exit_program(1);
+
4590  }
+
4591 
+
4592  for (i = 0; i < ifile->nb_streams; i++) {
+
4593  ist = input_streams[ifile->ist_index + i];
+
4594  if (ist->decoding_needed) {
+
4595  ret = process_input_packet(ist, NULL, 0);
+
4596  if (ret>0)
+
4597  return 0;
+
4598  }
+
4599 
+
4600  /* mark all outputs that don't go through lavfi as finished */
+
4601  for (j = 0; j < nb_output_streams; j++) {
+ +
4603 
+
4604  if (ost->source_index == ifile->ist_index + i &&
+
4605  (ost->stream_copy || ost->enc->type == AVMEDIA_TYPE_SUBTITLE))
+ +
4607  }
+
4608  }
+
4609 
+
4610  ifile->eof_reached = 1;
+
4611  return AVERROR(EAGAIN);
+
4612  }
+
4613 
+
4614  reset_eagain();
+
4615 
+
4616  if (do_pkt_dump) {
+
4617  av_pkt_dump_log2(NULL, AV_LOG_INFO, pkt, do_hex_dump,
+
4618  is->streams[pkt->stream_index]);
+
4619  }
+
4620  /* the following test is needed in case new streams appear
+
4621  dynamically in stream : we ignore them */
+
4622  if (pkt->stream_index >= ifile->nb_streams) {
+
4623  report_new_stream(file_index, pkt);
+
4624  goto discard_packet;
+
4625  }
+
4626 
+
4627  ist = input_streams[ifile->ist_index + pkt->stream_index];
+
4628 
+
4629  ist->data_size += pkt->size;
+
4630  ist->nb_packets++;
+
4631 
+
4632  if (ist->discard)
+
4633  goto discard_packet;
+
4634 
+
4635  if (pkt->flags & AV_PKT_FLAG_CORRUPT) {
+
4636  av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING,
+
4637  "%s: corrupt input packet in stream %d\n", is->url, pkt->stream_index);
+
4638  if (exit_on_error)
+
4639  exit_program(1);
+
4640  }
+
4641 
+
4642  if (debug_ts) {
+
4643  av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s "
+
4644  "next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
+
4645  ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
+
4646  av_ts2str(ist->next_dts), av_ts2timestr(ist->next_dts, &AV_TIME_BASE_Q),
+
4647  av_ts2str(ist->next_pts), av_ts2timestr(ist->next_pts, &AV_TIME_BASE_Q),
+
4648  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
+
4649  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
+
4650  av_ts2str(input_files[ist->file_index]->ts_offset),
+
4651  av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
+
4652  }
+
4653 
+
4654  if(!ist->wrap_correction_done && is->start_time != AV_NOPTS_VALUE && ist->st->pts_wrap_bits < 64){
+
4655  int64_t stime, stime2;
+
4656  // Correcting starttime based on the enabled streams
+
4657  // FIXME this ideally should be done before the first use of starttime but we do not know which are the enabled streams at that point.
+
4658  // so we instead do it here as part of discontinuity handling
+
4659  if ( ist->next_dts == AV_NOPTS_VALUE
+
4660  && ifile->ts_offset == -is->start_time
+
4661  && (is->iformat->flags & AVFMT_TS_DISCONT)) {
+
4662  int64_t new_start_time = INT64_MAX;
+
4663  for (i=0; i<is->nb_streams; i++) {
+
4664  AVStream *st = is->streams[i];
+
4665  if(st->discard == AVDISCARD_ALL || st->start_time == AV_NOPTS_VALUE)
+
4666  continue;
+
4667  new_start_time = FFMIN(new_start_time, av_rescale_q(st->start_time, st->time_base, AV_TIME_BASE_Q));
+
4668  }
+
4669  if (new_start_time > is->start_time) {
+
4670  av_log(is, AV_LOG_VERBOSE, "Correcting start time by %"PRId64"\n", new_start_time - is->start_time);
+
4671  ifile->ts_offset = -new_start_time;
+
4672  }
+
4673  }
+
4674 
+
4675  stime = av_rescale_q(is->start_time, AV_TIME_BASE_Q, ist->st->time_base);
+
4676  stime2= stime + (1ULL<<ist->st->pts_wrap_bits);
+
4677  ist->wrap_correction_done = 1;
+
4678 
+
4679  if(stime2 > stime && pkt->dts != AV_NOPTS_VALUE && pkt->dts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
+
4680  pkt->dts -= 1ULL<<ist->st->pts_wrap_bits;
+
4681  ist->wrap_correction_done = 0;
+
4682  }
+
4683  if(stime2 > stime && pkt->pts != AV_NOPTS_VALUE && pkt->pts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
+
4684  pkt->pts -= 1ULL<<ist->st->pts_wrap_bits;
+
4685  ist->wrap_correction_done = 0;
+
4686  }
+
4687  }
+
4688 
+
4689  /* add the stream-global side data to the first packet */
+
4690  if (ist->nb_packets == 1) {
+
4691  for (i = 0; i < ist->st->nb_side_data; i++) {
+
4692  AVPacketSideData *src_sd = &ist->st->side_data[i];
+
4693  uint8_t *dst_data;
+
4694 
+
4695  if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
+
4696  continue;
+
4697 
+
4698  if (av_packet_get_side_data(pkt, src_sd->type, NULL))
+
4699  continue;
+
4700 
+
4701  dst_data = av_packet_new_side_data(pkt, src_sd->type, src_sd->size);
+
4702  if (!dst_data)
+
4703  exit_program(1);
+
4704 
+
4705  memcpy(dst_data, src_sd->data, src_sd->size);
+
4706  }
+
4707  }
+
4708 
+
4709  if (pkt->dts != AV_NOPTS_VALUE)
+
4710  pkt->dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
+
4711  if (pkt->pts != AV_NOPTS_VALUE)
+
4712  pkt->pts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
+
4713 
+
4714  if (pkt->pts != AV_NOPTS_VALUE)
+
4715  pkt->pts *= ist->ts_scale;
+
4716  if (pkt->dts != AV_NOPTS_VALUE)
+
4717  pkt->dts *= ist->ts_scale;
+
4718 
+
4719  pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+
4720  if ((ist->dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
+
4721  ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
+
4722  pkt_dts != AV_NOPTS_VALUE && ist->next_dts == AV_NOPTS_VALUE && !copy_ts
+
4723  && (is->iformat->flags & AVFMT_TS_DISCONT) && ifile->last_ts != AV_NOPTS_VALUE) {
+
4724  int64_t delta = pkt_dts - ifile->last_ts;
+
4725  if (delta < -1LL*dts_delta_threshold*AV_TIME_BASE ||
+
4726  delta > 1LL*dts_delta_threshold*AV_TIME_BASE){
+
4727  ifile->ts_offset -= delta;
+
4728  av_log(NULL, AV_LOG_DEBUG,
+
4729  "Inter stream timestamp discontinuity %"PRId64", new offset= %"PRId64"\n",
+
4730  delta, ifile->ts_offset);
+
4731  pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
+
4732  if (pkt->pts != AV_NOPTS_VALUE)
+
4733  pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
+
4734  }
+
4735  }
+
4736 
+
4737  duration = av_rescale_q(ifile->duration, ifile->time_base, ist->st->time_base);
+
4738  if (pkt->pts != AV_NOPTS_VALUE) {
+
4739  pkt->pts += duration;
+
4740  ist->max_pts = FFMAX(pkt->pts, ist->max_pts);
+
4741  ist->min_pts = FFMIN(pkt->pts, ist->min_pts);
+
4742  }
+
4743 
+
4744  if (pkt->dts != AV_NOPTS_VALUE)
+
4745  pkt->dts += duration;
+
4746 
+
4747  pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+
4748 
+
4749  if (copy_ts && pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
+
4750  (is->iformat->flags & AVFMT_TS_DISCONT) && ist->st->pts_wrap_bits < 60) {
+
4751  int64_t wrap_dts = av_rescale_q_rnd(pkt->dts + (1LL<<ist->st->pts_wrap_bits),
+
4752  ist->st->time_base, AV_TIME_BASE_Q,
+
4753  AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+
4754  if (FFABS(wrap_dts - ist->next_dts) < FFABS(pkt_dts - ist->next_dts)/10)
+
4755  disable_discontinuity_correction = 0;
+
4756  }
+
4757 
+
4758  if ((ist->dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
+
4759  ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
+
4760  pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
+
4761  !disable_discontinuity_correction) {
+
4762  int64_t delta = pkt_dts - ist->next_dts;
+
4763  if (is->iformat->flags & AVFMT_TS_DISCONT) {
+
4764  if (delta < -1LL*dts_delta_threshold*AV_TIME_BASE ||
+
4765  delta > 1LL*dts_delta_threshold*AV_TIME_BASE ||
+
4766  pkt_dts + AV_TIME_BASE/10 < FFMAX(ist->pts, ist->dts)) {
+
4767  ifile->ts_offset -= delta;
+
4768  av_log(NULL, AV_LOG_DEBUG,
+
4769  "timestamp discontinuity for stream #%d:%d "
+
4770  "(id=%d, type=%s): %"PRId64", new offset= %"PRId64"\n",
+
4771  ist->file_index, ist->st->index, ist->st->id,
+
4772  av_get_media_type_string(ist->dec_ctx->codec_type),
+
4773  delta, ifile->ts_offset);
+
4774  pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
+
4775  if (pkt->pts != AV_NOPTS_VALUE)
+
4776  pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
+
4777  }
+
4778  } else {
+
4779  if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
+
4780  delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
+
4781  av_log(NULL, AV_LOG_WARNING, "DTS %"PRId64", next:%"PRId64" st:%d invalid dropping\n", pkt->dts, ist->next_dts, pkt->stream_index);
+
4782  pkt->dts = AV_NOPTS_VALUE;
+
4783  }
+
4784  if (pkt->pts != AV_NOPTS_VALUE){
+
4785  int64_t pkt_pts = av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
+
4786  delta = pkt_pts - ist->next_dts;
+
4787  if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
+
4788  delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
+
4789  av_log(NULL, AV_LOG_WARNING, "PTS %"PRId64", next:%"PRId64" invalid dropping st:%d\n", pkt->pts, ist->next_dts, pkt->stream_index);
+
4790  pkt->pts = AV_NOPTS_VALUE;
+
4791  }
+
4792  }
+
4793  }
+
4794  }
+
4795 
+
4796  if (pkt->dts != AV_NOPTS_VALUE)
+
4797  ifile->last_ts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);
+
4798 
+
4799  if (debug_ts) {
+
4800  av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
+
4801  ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
+
4802  av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
+
4803  av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
+
4804  av_ts2str(input_files[ist->file_index]->ts_offset),
+
4805  av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
+
4806  }
+
4807 
+
4808  sub2video_heartbeat(ist, pkt->pts);
+
4809 
+
4810  process_input_packet(ist, pkt, 0);
+
4811 
+
4812 discard_packet:
+
4813 #if HAVE_THREADS
+
4814  if (ifile->thread_queue_size)
+
4815  av_packet_free(&pkt);
+
4816  else
+
4817 #endif
+
4818  av_packet_unref(pkt);
+
4819 
+
4820  return 0;
+
4821 }
+
4822 
+ +
4831 {
+
4832  int i, ret;
+
4833  int nb_requests, nb_requests_max = 0;
+
4834  InputFilter *ifilter;
+
4835  InputStream *ist;
+
4836 
+
4837  *best_ist = NULL;
+
4838  ret = avfilter_graph_request_oldest(graph->graph);
+
4839  if (ret >= 0)
+
4840  return reap_filters(0);
+
4841 
+
4842  if (ret == AVERROR_EOF) {
+
4843  ret = reap_filters(1);
+
4844  for (i = 0; i < graph->nb_outputs; i++)
+
4845  close_output_stream(graph->outputs[i]->ost);
+
4846  return ret;
+
4847  }
+
4848  if (ret != AVERROR(EAGAIN))
+
4849  return ret;
+
4850 
+
4851  for (i = 0; i < graph->nb_inputs; i++) {
+
4852  ifilter = graph->inputs[i];
+
4853  ist = ifilter->ist;
+
4854  if (input_files[ist->file_index]->eagain ||
+
4855  input_files[ist->file_index]->eof_reached)
+
4856  continue;
+
4857  nb_requests = av_buffersrc_get_nb_failed_requests(ifilter->filter);
+
4858  if (nb_requests > nb_requests_max) {
+
4859  nb_requests_max = nb_requests;
+
4860  *best_ist = ist;
+
4861  }
+
4862  }
+
4863 
+
4864  if (!*best_ist)
+
4865  for (i = 0; i < graph->nb_outputs; i++)
+
4866  graph->outputs[i]->ost->unavailable = 1;
+
4867 
+
4868  return 0;
+
4869 }
+
4870 
+
4876 static int transcode_step(void)
+
4877 {
+
4878  OutputStream *ost;
+
4879  InputStream *ist = NULL;
+
4880  int ret;
+
4881 
+
4882  ost = choose_output();
+
4883  if (!ost) {
+
4884  if (got_eagain()) {
+
4885  reset_eagain();
+
4886  av_usleep(10000);
+
4887  return 0;
+
4888  }
+
4889  av_log(NULL, AV_LOG_VERBOSE, "No more inputs to read from, finishing.\n");
+
4890  return AVERROR_EOF;
+
4891  }
+
4892 
+
4893  if (ost->filter && !ost->filter->graph->graph) {
+ + +
4896  if (ret < 0) {
+
4897  av_log(NULL, AV_LOG_ERROR, "Error reinitializing filters!\n");
+
4898  return ret;
+
4899  }
+
4900  }
+
4901  }
+
4902 
+
4903  if (ost->filter && ost->filter->graph->graph) {
+
4904  /*
+
4905  * Similar case to the early audio initialization in reap_filters.
+
4906  * Audio is special in ffmpeg.c currently as we depend on lavfi's
+
4907  * audio frame buffering/creation to get the output audio frame size
+
4908  * in samples correct. The audio frame size for the filter chain is
+
4909  * configured during the output stream initialization.
+
4910  *
+
4911  * Apparently avfilter_graph_request_oldest (called in
+
4912  * transcode_from_filter just down the line) peeks. Peeking already
+
4913  * puts one frame "ready to be given out", which means that any
+
4914  * update in filter buffer sink configuration afterwards will not
+
4915  * help us. And yes, even if it would be utilized,
+
4916  * av_buffersink_get_samples is affected, as it internally utilizes
+
4917  * the same early exit for peeked frames.
+
4918  *
+
4919  * In other words, if avfilter_graph_request_oldest would not make
+
4920  * further filter chain configuration or usage of
+
4921  * av_buffersink_get_samples useless (by just causing the return
+
4922  * of the peeked AVFrame as-is), we could get rid of this additional
+
4923  * early encoder initialization.
+
4924  */
+
4925  if (av_buffersink_get_type(ost->filter->filter) == AVMEDIA_TYPE_AUDIO)
+
4926  init_output_stream_wrapper(ost, NULL, 1);
+
4927 
+
4928  if ((ret = transcode_from_filter(ost->filter->graph, &ist)) < 0)
+
4929  return ret;
+
4930  if (!ist)
+
4931  return 0;
+
4932  } else if (ost->filter) {
+
4933  int i;
+
4934  for (i = 0; i < ost->filter->graph->nb_inputs; i++) {
+
4935  InputFilter *ifilter = ost->filter->graph->inputs[i];
+
4936  if (!ifilter->ist->got_output && !input_files[ifilter->ist->file_index]->eof_reached) {
+
4937  ist = ifilter->ist;
+
4938  break;
+
4939  }
+
4940  }
+
4941  if (!ist) {
+
4942  ost->inputs_done = 1;
+
4943  return 0;
+
4944  }
+
4945  } else {
+
4946  av_assert0(ost->source_index >= 0);
+ +
4948  }
+
4949 
+
4950  ret = process_input(ist->file_index);
+
4951  if (ret == AVERROR(EAGAIN)) {
+
4952  if (input_files[ist->file_index]->eagain)
+
4953  ost->unavailable = 1;
+
4954  return 0;
+
4955  }
+
4956 
+
4957  if (ret < 0)
+
4958  return ret == AVERROR_EOF ? 0 : ret;
+
4959 
+
4960  return reap_filters(0);
+
4961 }
+
4962 
+
4963 /*
+
4964  * The following code is the main loop of the file converter
+
4965  */
+
4966 static int transcode(void)
+
4967 {
+
4968  int ret, i;
+
4969  AVFormatContext *os;
+
4970  OutputStream *ost;
+
4971  InputStream *ist;
+
4972  int64_t timer_start;
+
4973  int64_t total_packets_written = 0;
+
4974 
+
4975  ret = transcode_init();
+
4976  if (ret < 0)
+
4977  goto fail;
+
4978 
+
4979  if (stdin_interaction) {
+
4980  av_log(NULL, AV_LOG_INFO, "Press [q] to stop, [?] for help\n");
+
4981  }
+
4982 
+
4983  timer_start = av_gettime_relative();
+
4984 
+
4985 #if HAVE_THREADS
+
4986  if ((ret = init_input_threads()) < 0)
+
4987  goto fail;
+
4988 #endif
+
4989 
+ +
4991  int64_t cur_time= av_gettime_relative();
+
4992 
+
4993  /* if 'q' pressed, exits */
+
4994  if (stdin_interaction)
+
4995  if (check_keyboard_interaction(cur_time) < 0)
+
4996  break;
+
4997 
+
4998  /* check if there's any stream where output is still needed */
+
4999  if (!need_output()) {
+
5000  av_log(NULL, AV_LOG_VERBOSE, "No more output streams to write to, finishing.\n");
+
5001  break;
+
5002  }
+
5003 
+
5004  ret = transcode_step();
+
5005  if (ret < 0 && ret != AVERROR_EOF) {
+
5006  av_log(NULL, AV_LOG_ERROR, "Error while filtering: %s\n", av_err2str(ret));
+
5007  break;
+
5008  }
+
5009 
+
5010  /* dump report by using the output first video and audio streams */
+
5011  print_report(0, timer_start, cur_time);
+
5012  }
+
5013 #if HAVE_THREADS
+
5014  free_input_threads();
+
5015 #endif
+
5016 
+
5017  /* at the end of stream, we must flush the decoder buffers */
+
5018  for (i = 0; i < nb_input_streams; i++) {
+
5019  ist = input_streams[i];
+
5020  if (!input_files[ist->file_index]->eof_reached) {
+
5021  process_input_packet(ist, NULL, 0);
+
5022  }
+
5023  }
+
5024  flush_encoders();
+
5025 
+
5026  term_exit();
+
5027 
+
5028  /* write the trailer if needed and close file */
+
5029  for (i = 0; i < nb_output_files; i++) {
+
5030  os = output_files[i]->ctx;
+
5031  if (!output_files[i]->header_written) {
+
5032  av_log(NULL, AV_LOG_ERROR,
+
5033  "Nothing was written into output file %d (%s), because "
+
5034  "at least one of its streams received no packets.\n",
+
5035  i, os->url);
+
5036  continue;
+
5037  }
+
5038  if ((ret = av_write_trailer(os)) < 0) {
+
5039  av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", os->url, av_err2str(ret));
+
5040  if (exit_on_error)
+
5041  exit_program(1);
+
5042  }
+
5043  }
+
5044 
+
5045  /* dump report by using the first video and audio streams */
+
5046  print_report(1, timer_start, av_gettime_relative());
+
5047 
+
5048  /* close each encoder */
+
5049  for (i = 0; i < nb_output_streams; i++) {
+
5050  ost = output_streams[i];
+
5051  if (ost->encoding_needed) {
+
5052  av_freep(&ost->enc_ctx->stats_in);
+
5053  }
+
5054  total_packets_written += ost->packets_written;
+ +
5056  av_log(NULL, AV_LOG_FATAL, "Empty output on stream %d.\n", i);
+
5057  exit_program(1);
+
5058  }
+
5059  }
+
5060 
+
5061  if (!total_packets_written && (abort_on_flags & ABORT_ON_FLAG_EMPTY_OUTPUT)) {
+
5062  av_log(NULL, AV_LOG_FATAL, "Empty output\n");
+
5063  exit_program(1);
+
5064  }
+
5065 
+
5066  /* close each decoder */
+
5067  for (i = 0; i < nb_input_streams; i++) {
+
5068  ist = input_streams[i];
+
5069  if (ist->decoding_needed) {
+
5070  avcodec_close(ist->dec_ctx);
+
5071  if (ist->hwaccel_uninit)
+
5072  ist->hwaccel_uninit(ist->dec_ctx);
+
5073  }
+
5074  }
+
5075 
+ +
5077 
+
5078  /* finished ! */
+
5079  ret = 0;
+
5080 
+
5081  fail:
+
5082 #if HAVE_THREADS
+
5083  free_input_threads();
+
5084 #endif
+
5085 
+
5086  if (output_streams) {
+
5087  for (i = 0; i < nb_output_streams; i++) {
+
5088  ost = output_streams[i];
+
5089  if (ost) {
+
5090  if (ost->logfile) {
+
5091  if (fclose(ost->logfile))
+
5092  av_log(NULL, AV_LOG_ERROR,
+
5093  "Error closing logfile, loss of information possible: %s\n",
+
5094  av_err2str(AVERROR(errno)));
+
5095  ost->logfile = NULL;
+
5096  }
+
5097  av_freep(&ost->forced_kf_pts);
+
5098  av_freep(&ost->apad);
+
5099  av_freep(&ost->disposition);
+
5100  av_dict_free(&ost->encoder_opts);
+
5101  av_dict_free(&ost->sws_dict);
+
5102  av_dict_free(&ost->swr_opts);
+
5103  av_dict_free(&ost->resample_opts);
+
5104  }
+
5105  }
+
5106  }
+
5107  return ret;
+
5108 }
+
5109 
+ +
5111 {
+
5112  BenchmarkTimeStamps time_stamps = { av_gettime_relative() };
+
5113 #if HAVE_GETRUSAGE
+
5114  struct rusage rusage;
+
5115 
+
5116  getrusage(RUSAGE_SELF, &rusage);
+
5117  time_stamps.user_usec =
+
5118  (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec;
+
5119  time_stamps.sys_usec =
+
5120  (rusage.ru_stime.tv_sec * 1000000LL) + rusage.ru_stime.tv_usec;
+
5121 #elif HAVE_GETPROCESSTIMES
+
5122  HANDLE proc;
+
5123  FILETIME c, e, k, u;
+
5124  proc = GetCurrentProcess();
+
5125  GetProcessTimes(proc, &c, &e, &k, &u);
+
5126  time_stamps.user_usec =
+
5127  ((int64_t)u.dwHighDateTime << 32 | u.dwLowDateTime) / 10;
+
5128  time_stamps.sys_usec =
+
5129  ((int64_t)k.dwHighDateTime << 32 | k.dwLowDateTime) / 10;
+
5130 #else
+
5131  time_stamps.user_usec = time_stamps.sys_usec = 0;
+
5132 #endif
+
5133  return time_stamps;
+
5134 }
+
5135 
+
5136 static int64_t getmaxrss(void)
+
5137 {
+
5138 #if HAVE_GETRUSAGE && HAVE_STRUCT_RUSAGE_RU_MAXRSS
+
5139  struct rusage rusage;
+
5140  getrusage(RUSAGE_SELF, &rusage);
+
5141  return (int64_t)rusage.ru_maxrss * 1024;
+
5142 #elif HAVE_GETPROCESSMEMORYINFO
+
5143  HANDLE proc;
+
5144  PROCESS_MEMORY_COUNTERS memcounters;
+
5145  proc = GetCurrentProcess();
+
5146  memcounters.cb = sizeof(memcounters);
+
5147  GetProcessMemoryInfo(proc, &memcounters, sizeof(memcounters));
+
5148  return memcounters.PeakPagefileUsage;
+
5149 #else
+
5150  return 0;
+
5151 #endif
+
5152 }
+
5153 
+
5154 static void log_callback_null(void *ptr, int level, const char *fmt, va_list vl)
+
5155 {
+
5156 }
+
5157 
+ + +
5160  longjmp_value = 0;
+
5161  received_sigterm = 0;
+
5162  received_nb_signals = 0;
+
5163  ffmpeg_exited = 0;
+
5164  copy_ts_first_pts = AV_NOPTS_VALUE;
+
5165 
+
5166  run_as_daemon = 0;
+
5167  nb_frames_dup = 0;
+
5168  dup_warning = 1000;
+
5169  nb_frames_drop = 0;
+
5170  nb_output_dumped = 0;
+
5171 
+
5172  want_sdp = 1;
+
5173 
+
5174  progress_avio = NULL;
+
5175 
+
5176  input_streams = NULL;
+
5177  nb_input_streams = 0;
+
5178  input_files = NULL;
+
5179  nb_input_files = 0;
+
5180 
+
5181  output_streams = NULL;
+
5182  nb_output_streams = 0;
+
5183  output_files = NULL;
+
5184  nb_output_files = 0;
+
5185 
+
5186  filtergraphs = NULL;
+
5187  nb_filtergraphs = 0;
+
5188 
+
5189  last_time = -1;
+
5190  keyboard_last_time = 0;
+
5191  first_report = 1;
+
5192 }
+
5193 
+
5194 void set_report_callback(void (*callback)(int, float, float, int64_t, int, double, double))
+
5195 {
+
5196  report_callback = callback;
+
5197 }
+
5198 
+
5199 void cancel_operation(long id)
+
5200 {
+
5201  if (id == 0) {
+
5202  sigterm_handler(SIGINT);
+
5203  } else {
+
5204  cancelSession(id);
+
5205  }
+
5206 }
+
5207 
+
5208 __thread OptionDef *ffmpeg_options = NULL;
+
5209 
+
5210 int ffmpeg_execute(int argc, char **argv)
+
5211 {
+
5212  char _program_name[] = "ffmpeg";
+
5213  program_name = (char*)&_program_name;
+
5214  program_birth_year = 2000;
+
5215 
+
5216  #define OFFSET(x) offsetof(OptionsContext, x)
+
5217  OptionDef options[] = {
+
5218 
+
5219  /* main options */
+
5220  { "L", OPT_EXIT, { .func_arg = show_license }, "show license" },
+
5221  { "h", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
5222  { "?", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
5223  { "help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
5224  { "-help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
5225  { "version", OPT_EXIT, { .func_arg = show_version }, "show version" },
+
5226  { "buildconf", OPT_EXIT, { .func_arg = show_buildconf }, "show build configuration" },
+
5227  { "formats", OPT_EXIT, { .func_arg = show_formats }, "show available formats" },
+
5228  { "muxers", OPT_EXIT, { .func_arg = show_muxers }, "show available muxers" },
+
5229  { "demuxers", OPT_EXIT, { .func_arg = show_demuxers }, "show available demuxers" },
+
5230  { "devices", OPT_EXIT, { .func_arg = show_devices }, "show available devices" },
+
5231  { "codecs", OPT_EXIT, { .func_arg = show_codecs }, "show available codecs" },
+
5232  { "decoders", OPT_EXIT, { .func_arg = show_decoders }, "show available decoders" },
+
5233  { "encoders", OPT_EXIT, { .func_arg = show_encoders }, "show available encoders" },
+
5234  { "bsfs", OPT_EXIT, { .func_arg = show_bsfs }, "show available bit stream filters" },
+
5235  { "protocols", OPT_EXIT, { .func_arg = show_protocols }, "show available protocols" },
+
5236  { "filters", OPT_EXIT, { .func_arg = show_filters }, "show available filters" },
+
5237  { "pix_fmts", OPT_EXIT, { .func_arg = show_pix_fmts }, "show available pixel formats" },
+
5238  { "layouts", OPT_EXIT, { .func_arg = show_layouts }, "show standard channel layouts" },
+
5239  { "sample_fmts", OPT_EXIT, { .func_arg = show_sample_fmts }, "show available audio sample formats" },
+
5240  { "colors", OPT_EXIT, { .func_arg = show_colors }, "show available color names" },
+
5241  { "loglevel", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" },
+
5242  { "v", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" },
+
5243  { "report", 0, { .func_arg = opt_report }, "generate a report" },
+
5244  { "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
+
5245  { "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
+
5246  { "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
+
5247  { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
+
5248 
+
5249  #if CONFIG_AVDEVICE
+
5250  { "sources" , OPT_EXIT | HAS_ARG, { .func_arg = show_sources },
+
5251  "list sources of the input device", "device" },
+
5252  { "sinks" , OPT_EXIT | HAS_ARG, { .func_arg = show_sinks },
+
5253  "list sinks of the output device", "device" },
+
5254  #endif
+
5255 
+
5256  { "f", HAS_ARG | OPT_STRING | OPT_OFFSET |
+
5257  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(format) },
+
5258  "force format", "fmt" },
+
5259  { "y", OPT_BOOL, { &file_overwrite },
+
5260  "overwrite output files" },
+
5261  { "n", OPT_BOOL, { &no_file_overwrite },
+
5262  "never overwrite output files" },
+
5263  { "ignore_unknown", OPT_BOOL, { &ignore_unknown_streams },
+
5264  "Ignore unknown stream types" },
+
5265  { "copy_unknown", OPT_BOOL | OPT_EXPERT, { &copy_unknown_streams },
+
5266  "Copy unknown stream types" },
+
5267  { "c", HAS_ARG | OPT_STRING | OPT_SPEC |
+
5268  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(codec_names) },
+
5269  "codec name", "codec" },
+
5270  { "codec", HAS_ARG | OPT_STRING | OPT_SPEC |
+
5271  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(codec_names) },
+
5272  "codec name", "codec" },
+
5273  { "pre", HAS_ARG | OPT_STRING | OPT_SPEC |
+
5274  OPT_OUTPUT, { .off = OFFSET(presets) },
+
5275  "preset name", "preset" },
+
5276  { "map", HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5277  OPT_OUTPUT, { .func_arg = opt_map },
+
5278  "set input stream mapping",
+
5279  "[-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]" },
+
5280  { "map_channel", HAS_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_map_channel },
+
5281  "map an audio channel from one stream to another", "file.stream.channel[:syncfile.syncstream]" },
+
5282  { "map_metadata", HAS_ARG | OPT_STRING | OPT_SPEC |
+
5283  OPT_OUTPUT, { .off = OFFSET(metadata_map) },
+
5284  "set metadata information of outfile from infile",
+
5285  "outfile[,metadata]:infile[,metadata]" },
+
5286  { "map_chapters", HAS_ARG | OPT_INT | OPT_EXPERT | OPT_OFFSET |
+
5287  OPT_OUTPUT, { .off = OFFSET(chapters_input_file) },
+
5288  "set chapters mapping", "input_file_index" },
+
5289  { "t", HAS_ARG | OPT_TIME | OPT_OFFSET |
+
5290  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(recording_time) },
+
5291  "record or transcode \"duration\" seconds of audio/video",
+
5292  "duration" },
+
5293  { "to", HAS_ARG | OPT_TIME | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(stop_time) },
+
5294  "record or transcode stop time", "time_stop" },
+
5295  { "fs", HAS_ARG | OPT_INT64 | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(limit_filesize) },
+
5296  "set the limit file size in bytes", "limit_size" },
+
5297  { "ss", HAS_ARG | OPT_TIME | OPT_OFFSET |
+
5298  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(start_time) },
+
5299  "set the start time offset", "time_off" },
+
5300  { "sseof", HAS_ARG | OPT_TIME | OPT_OFFSET |
+
5301  OPT_INPUT, { .off = OFFSET(start_time_eof) },
+
5302  "set the start time offset relative to EOF", "time_off" },
+
5303  { "seek_timestamp", HAS_ARG | OPT_INT | OPT_OFFSET |
+
5304  OPT_INPUT, { .off = OFFSET(seek_timestamp) },
+
5305  "enable/disable seeking by timestamp with -ss" },
+
5306  { "accurate_seek", OPT_BOOL | OPT_OFFSET | OPT_EXPERT |
+
5307  OPT_INPUT, { .off = OFFSET(accurate_seek) },
+
5308  "enable/disable accurate seeking with -ss" },
+
5309  { "itsoffset", HAS_ARG | OPT_TIME | OPT_OFFSET |
+
5310  OPT_EXPERT | OPT_INPUT, { .off = OFFSET(input_ts_offset) },
+
5311  "set the input ts offset", "time_off" },
+
5312  { "itsscale", HAS_ARG | OPT_DOUBLE | OPT_SPEC |
+
5313  OPT_EXPERT | OPT_INPUT, { .off = OFFSET(ts_scale) },
+
5314  "set the input ts scale", "scale" },
+
5315  { "timestamp", HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_recording_timestamp },
+
5316  "set the recording timestamp ('now' to set the current time)", "time" },
+
5317  { "metadata", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(metadata) },
+
5318  "add metadata", "string=string" },
+
5319  { "program", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(program) },
+
5320  "add program with specified streams", "title=string:st=number..." },
+
5321  { "dframes", HAS_ARG | OPT_PERFILE | OPT_EXPERT |
+
5322  OPT_OUTPUT, { .func_arg = opt_data_frames },
+
5323  "set the number of data frames to output", "number" },
+
5324  { "benchmark", OPT_BOOL | OPT_EXPERT, { &do_benchmark },
+
5325  "add timings for benchmarking" },
+
5326  { "benchmark_all", OPT_BOOL | OPT_EXPERT, { &do_benchmark_all },
+
5327  "add timings for each task" },
+
5328  { "progress", HAS_ARG | OPT_EXPERT, { .func_arg = opt_progress },
+
5329  "write program-readable progress information", "url" },
+
5330  { "stdin", OPT_BOOL | OPT_EXPERT, { &stdin_interaction },
+
5331  "enable or disable interaction on standard input" },
+
5332  { "timelimit", HAS_ARG | OPT_EXPERT, { .func_arg = opt_timelimit },
+
5333  "set max runtime in seconds in CPU user time", "limit" },
+
5334  { "dump", OPT_BOOL | OPT_EXPERT, { &do_pkt_dump },
+
5335  "dump each input packet" },
+
5336  { "hex", OPT_BOOL | OPT_EXPERT, { &do_hex_dump },
+
5337  "when dumping packets, also dump the payload" },
+
5338  { "re", OPT_BOOL | OPT_EXPERT | OPT_OFFSET |
+
5339  OPT_INPUT, { .off = OFFSET(rate_emu) },
+
5340  "read input at native frame rate", "" },
+
5341  { "target", HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_target },
+
5342  "specify target file type (\"vcd\", \"svcd\", \"dvd\", \"dv\" or \"dv50\" "
+
5343  "with optional prefixes \"pal-\", \"ntsc-\" or \"film-\")", "type" },
+
5344  { "vsync", HAS_ARG | OPT_EXPERT, { .func_arg = opt_vsync },
+
5345  "video sync method", "" },
+
5346  { "frame_drop_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &frame_drop_threshold },
+
5347  "frame drop threshold", "" },
+
5348  { "async", HAS_ARG | OPT_INT | OPT_EXPERT, { &audio_sync_method },
+
5349  "audio sync method", "" },
+
5350  { "adrift_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &audio_drift_threshold },
+
5351  "audio drift threshold", "threshold" },
+
5352  { "copyts", OPT_BOOL | OPT_EXPERT, { &copy_ts },
+
5353  "copy timestamps" },
+
5354  { "start_at_zero", OPT_BOOL | OPT_EXPERT, { &start_at_zero },
+
5355  "shift input timestamps to start at 0 when using copyts" },
+
5356  { "copytb", HAS_ARG | OPT_INT | OPT_EXPERT, { &copy_tb },
+
5357  "copy input stream time base when stream copying", "mode" },
+
5358  { "start_at_zero", OPT_BOOL | OPT_EXPERT, { &start_at_zero },
+
5359  "shift input timestamps to start at 0 when using copyts" },
+
5360  { "copytb", HAS_ARG | OPT_INT | OPT_EXPERT, { &copy_tb },
+
5361  "copy input stream time base when stream copying", "mode" },
+
5362  { "shortest", OPT_BOOL | OPT_EXPERT | OPT_OFFSET |
+
5363  OPT_OUTPUT, { .off = OFFSET(shortest) },
+
5364  "finish encoding within shortest input" },
+
5365  { "bitexact", OPT_BOOL | OPT_EXPERT | OPT_OFFSET |
+
5366  OPT_OUTPUT | OPT_INPUT, { .off = OFFSET(bitexact) },
+
5367  "bitexact mode" },
+
5368  { "apad", OPT_STRING | HAS_ARG | OPT_SPEC |
+
5369  OPT_OUTPUT, { .off = OFFSET(apad) },
+
5370  "audio pad", "" },
+
5371  { "dts_delta_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &dts_delta_threshold },
+
5372  "timestamp discontinuity delta threshold", "threshold" },
+
5373  { "dts_error_threshold", HAS_ARG | OPT_FLOAT | OPT_EXPERT, { &dts_error_threshold },
+
5374  "timestamp error delta threshold", "threshold" },
+
5375  { "xerror", OPT_BOOL | OPT_EXPERT, { &exit_on_error },
+
5376  "exit on error", "error" },
+
5377  { "abort_on", HAS_ARG | OPT_EXPERT, { .func_arg = opt_abort_on },
+
5378  "abort on the specified condition flags", "flags" },
+
5379  { "copyinkf", OPT_BOOL | OPT_EXPERT | OPT_SPEC |
+
5380  OPT_OUTPUT, { .off = OFFSET(copy_initial_nonkeyframes) },
+
5381  "copy initial non-keyframes" },
+
5382  { "copypriorss", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(copy_prior_start) },
+
5383  "copy or discard frames before start time" },
+
5384  { "frames", OPT_INT64 | HAS_ARG | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(max_frames) },
+
5385  "set the number of frames to output", "number" },
+
5386  { "tag", OPT_STRING | HAS_ARG | OPT_SPEC |
+
5387  OPT_EXPERT | OPT_OUTPUT | OPT_INPUT, { .off = OFFSET(codec_tags) },
+
5388  "force codec tag/fourcc", "fourcc/tag" },
+
5389  { "q", HAS_ARG | OPT_EXPERT | OPT_DOUBLE |
+
5390  OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(qscale) },
+
5391  "use fixed quality scale (VBR)", "q" },
+
5392  { "qscale", HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5393  OPT_OUTPUT, { .func_arg = opt_qscale },
+
5394  "use fixed quality scale (VBR)", "q" },
+
5395  { "profile", HAS_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_profile },
+
5396  "set profile", "profile" },
+
5397  { "filter", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filters) },
+
5398  "set stream filtergraph", "filter_graph" },
+
5399  { "filter_threads", HAS_ARG | OPT_INT, { &filter_nbthreads },
+
5400  "number of non-complex filter threads" },
+
5401  { "filter_script", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filter_scripts) },
+
5402  "read stream filtergraph description from a file", "filename" },
+
5403  { "reinit_filter", HAS_ARG | OPT_INT | OPT_SPEC | OPT_INPUT, { .off = OFFSET(reinit_filters) },
+
5404  "reinit filtergraph on input parameter changes", "" },
+
5405  { "filter_complex", HAS_ARG | OPT_EXPERT, { .func_arg = opt_filter_complex },
+
5406  "create a complex filtergraph", "graph_description" },
+
5407  { "filter_complex_threads", HAS_ARG | OPT_INT, { &filter_complex_nbthreads },
+
5408  "number of threads for -filter_complex" },
+
5409  { "lavfi", HAS_ARG | OPT_EXPERT, { .func_arg = opt_filter_complex },
+
5410  "create a complex filtergraph", "graph_description" },
+
5411  { "filter_complex_script", HAS_ARG | OPT_EXPERT, { .func_arg = opt_filter_complex_script },
+
5412  "read complex filtergraph description from a file", "filename" },
+
5413  { "auto_conversion_filters", OPT_BOOL | OPT_EXPERT, { &auto_conversion_filters },
+
5414  "enable automatic conversion filters globally" },
+
5415  { "stats", OPT_BOOL, { &print_stats },
+
5416  "print progress report during encoding", },
+
5417  { "stats_period", HAS_ARG | OPT_EXPERT, { .func_arg = opt_stats_period },
+
5418  "set the period at which ffmpeg updates stats and -progress output", "time" },
+
5419  { "attach", HAS_ARG | OPT_PERFILE | OPT_EXPERT |
+
5420  OPT_OUTPUT, { .func_arg = opt_attach },
+
5421  "add an attachment to the output file", "filename" },
+
5422  { "dump_attachment", HAS_ARG | OPT_STRING | OPT_SPEC |
+
5423  OPT_EXPERT | OPT_INPUT, { .off = OFFSET(dump_attachment) },
+
5424  "extract an attachment into a file", "filename" },
+
5425  { "stream_loop", OPT_INT | HAS_ARG | OPT_EXPERT | OPT_INPUT |
+
5426  OPT_OFFSET, { .off = OFFSET(loop) }, "set number of times input stream shall be looped", "loop count" },
+
5427  { "debug_ts", OPT_BOOL | OPT_EXPERT, { &debug_ts },
+
5428  "print timestamp debugging info" },
+
5429  { "max_error_rate", HAS_ARG | OPT_FLOAT, { &max_error_rate },
+
5430  "ratio of errors (0.0: no errors, 1.0: 100% errors) above which ffmpeg returns an error instead of success.", "maximum error rate" },
+
5431  { "discard", OPT_STRING | HAS_ARG | OPT_SPEC |
+
5432  OPT_INPUT, { .off = OFFSET(discard) },
+
5433  "discard", "" },
+
5434  { "disposition", OPT_STRING | HAS_ARG | OPT_SPEC |
+
5435  OPT_OUTPUT, { .off = OFFSET(disposition) },
+
5436  "disposition", "" },
+
5437  { "thread_queue_size", HAS_ARG | OPT_INT | OPT_OFFSET | OPT_EXPERT | OPT_INPUT,
+
5438  { .off = OFFSET(thread_queue_size) },
+
5439  "set the maximum number of queued packets from the demuxer" },
+
5440  { "find_stream_info", OPT_BOOL | OPT_PERFILE | OPT_INPUT | OPT_EXPERT, { &find_stream_info },
+
5441  "read and decode the streams to fill missing information with heuristics" },
+
5442 
+
5443  /* video options */
+
5444  { "vframes", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_video_frames },
+
5445  "set the number of video frames to output", "number" },
+
5446  { "r", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_SPEC |
+
5447  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(frame_rates) },
+
5448  "set frame rate (Hz value, fraction or abbreviation)", "rate" },
+ +
5450  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(frame_sizes) },
+
5451  "set frame size (WxH or abbreviation)", "size" },
+
5452  { "aspect", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_SPEC |
+
5453  OPT_OUTPUT, { .off = OFFSET(frame_aspect_ratios) },
+
5454  "set aspect ratio (4:3, 16:9 or 1.3333, 1.7777)", "aspect" },
+
5455  { "pix_fmt", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC |
+
5456  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(frame_pix_fmts) },
+
5457  "set pixel format", "format" },
+
5458  { "bits_per_raw_sample", OPT_VIDEO | OPT_INT | HAS_ARG, { &frame_bits_per_raw_sample },
+
5459  "set the number of bits per raw sample", "number" },
+
5460  { "intra", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &intra_only },
+
5461  "deprecated use -g 1" },
+
5462  { "vn", OPT_VIDEO | OPT_BOOL | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT,{ .off = OFFSET(video_disable) },
+
5463  "disable video" },
+
5464  { "rc_override", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC |
+
5465  OPT_OUTPUT, { .off = OFFSET(rc_overrides) },
+
5466  "rate control override for specific intervals", "override" },
+
5467  { "vcodec", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_INPUT |
+
5468  OPT_OUTPUT, { .func_arg = opt_video_codec },
+
5469  "force video codec ('copy' to copy stream)", "codec" },
+
5470  { "sameq", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_sameq },
+
5471  "Removed" },
+
5472  { "same_quant", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_sameq },
+
5473  "Removed" },
+
5474  { "timecode", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_timecode },
+
5475  "set initial TimeCode value.", "hh:mm:ss[:;.]ff" },
+
5476  { "pass", OPT_VIDEO | HAS_ARG | OPT_SPEC | OPT_INT | OPT_OUTPUT, { .off = OFFSET(pass) },
+
5477  "select the pass number (1 to 3)", "n" },
+
5478  { "passlogfile", OPT_VIDEO | HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC |
+
5479  OPT_OUTPUT, { .off = OFFSET(passlogfiles) },
+
5480  "select two pass log file name prefix", "prefix" },
+
5481  { "deinterlace", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &do_deinterlace },
+
5482  "this option is deprecated, use the yadif filter instead" },
+
5483  { "psnr", OPT_VIDEO | OPT_BOOL | OPT_EXPERT, { &do_psnr },
+
5484  "calculate PSNR of compressed frames" },
+
5485  { "vstats", OPT_VIDEO | OPT_EXPERT , { .func_arg = opt_vstats },
+
5486  "dump video coding statistics to file" },
+
5487  { "vstats_file", OPT_VIDEO | HAS_ARG | OPT_EXPERT , { .func_arg = opt_vstats_file },
+
5488  "dump video coding statistics to file", "file" },
+
5489  { "vstats_version", OPT_VIDEO | OPT_INT | HAS_ARG | OPT_EXPERT , { &vstats_version },
+
5490  "Version of the vstats format to use."},
+
5491  { "vf", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_video_filters },
+
5492  "set video filters", "filter_graph" },
+
5493  { "intra_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC |
+
5494  OPT_OUTPUT, { .off = OFFSET(intra_matrices) },
+
5495  "specify intra matrix coeffs", "matrix" },
+
5496  { "inter_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC |
+
5497  OPT_OUTPUT, { .off = OFFSET(inter_matrices) },
+
5498  "specify inter matrix coeffs", "matrix" },
+
5499  { "chroma_intra_matrix", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_STRING | OPT_SPEC |
+
5500  OPT_OUTPUT, { .off = OFFSET(chroma_intra_matrices) },
+
5501  "specify intra matrix coeffs", "matrix" },
+
5502  { "top", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_INT| OPT_SPEC |
+
5503  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(top_field_first) },
+
5504  "top=1/bottom=0/auto=-1 field first", "" },
+
5505  { "vtag", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5506  OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_old2new },
+
5507  "force video tag/fourcc", "fourcc/tag" },
+
5508  { "qphist", OPT_VIDEO | OPT_BOOL | OPT_EXPERT , { &qp_hist },
+
5509  "show QP histogram" },
+
5510  { "force_fps", OPT_VIDEO | OPT_BOOL | OPT_EXPERT | OPT_SPEC |
+
5511  OPT_OUTPUT, { .off = OFFSET(force_fps) },
+
5512  "force the selected framerate, disable the best supported framerate selection" },
+
5513  { "streamid", OPT_VIDEO | HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5514  OPT_OUTPUT, { .func_arg = opt_streamid },
+
5515  "set the value of an outfile streamid", "streamIndex:value" },
+
5516  { "force_key_frames", OPT_VIDEO | OPT_STRING | HAS_ARG | OPT_EXPERT |
+
5517  OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(forced_key_frames) },
+
5518  "force key frames at specified timestamps", "timestamps" },
+
5519  { "ab", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_bitrate },
+
5520  "audio bitrate (please use -b:a)", "bitrate" },
+
5521  { "b", OPT_VIDEO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_bitrate },
+
5522  "video bitrate (please use -b:v)", "bitrate" },
+
5523  { "hwaccel", OPT_VIDEO | OPT_STRING | HAS_ARG | OPT_EXPERT |
+
5524  OPT_SPEC | OPT_INPUT, { .off = OFFSET(hwaccels) },
+
5525  "use HW accelerated decoding", "hwaccel name" },
+
5526  { "hwaccel_device", OPT_VIDEO | OPT_STRING | HAS_ARG | OPT_EXPERT |
+
5527  OPT_SPEC | OPT_INPUT, { .off = OFFSET(hwaccel_devices) },
+
5528  "select a device for HW acceleration", "devicename" },
+
5529  { "hwaccel_output_format", OPT_VIDEO | OPT_STRING | HAS_ARG | OPT_EXPERT |
+
5530  OPT_SPEC | OPT_INPUT, { .off = OFFSET(hwaccel_output_formats) },
+
5531  "select output format used with HW accelerated decoding", "format" },
+
5532  #if CONFIG_VIDEOTOOLBOX
+
5533  { "videotoolbox_pixfmt", HAS_ARG | OPT_STRING | OPT_EXPERT, { &videotoolbox_pixfmt}, "" },
+
5534  #endif
+
5535  { "hwaccels", OPT_EXIT, { .func_arg = show_hwaccels },
+
5536  "show available HW acceleration methods" },
+
5537  { "autorotate", HAS_ARG | OPT_BOOL | OPT_SPEC |
+
5538  OPT_EXPERT | OPT_INPUT, { .off = OFFSET(autorotate) },
+
5539  "automatically insert correct rotate filters" },
+
5540  { "autoscale", HAS_ARG | OPT_BOOL | OPT_SPEC |
+
5541  OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(autoscale) },
+
5542  "automatically insert a scale filter at the end of the filter graph" },
+
5543 
+
5544  /* audio options */
+
5545  { "aframes", OPT_AUDIO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_audio_frames },
+
5546  "set the number of audio frames to output", "number" },
+
5547  { "aq", OPT_AUDIO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_audio_qscale },
+
5548  "set audio quality (codec-specific)", "quality", },
+
5549  { "ar", OPT_AUDIO | HAS_ARG | OPT_INT | OPT_SPEC |
+
5550  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(audio_sample_rate) },
+
5551  "set audio sampling rate (in Hz)", "rate" },
+
5552  { "ac", OPT_AUDIO | HAS_ARG | OPT_INT | OPT_SPEC |
+
5553  OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(audio_channels) },
+
5554  "set number of audio channels", "channels" },
+
5555  { "an", OPT_AUDIO | OPT_BOOL | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT,{ .off = OFFSET(audio_disable) },
+
5556  "disable audio" },
+
5557  { "acodec", OPT_AUDIO | HAS_ARG | OPT_PERFILE |
+
5558  OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_audio_codec },
+
5559  "force audio codec ('copy' to copy stream)", "codec" },
+
5560  { "atag", OPT_AUDIO | HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5561  OPT_OUTPUT, { .func_arg = opt_old2new },
+
5562  "force audio tag/fourcc", "fourcc/tag" },
+
5563  { "vol", OPT_AUDIO | HAS_ARG | OPT_INT, { &audio_volume },
+
5564  "change audio volume (256=normal)" , "volume" },
+
5565  { "sample_fmt", OPT_AUDIO | HAS_ARG | OPT_EXPERT | OPT_SPEC |
+
5566  OPT_STRING | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(sample_fmts) },
+
5567  "set sample format", "format" },
+
5568  { "channel_layout", OPT_AUDIO | HAS_ARG | OPT_EXPERT | OPT_PERFILE |
+
5569  OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_channel_layout },
+
5570  "set channel layout", "layout" },
+
5571  { "af", OPT_AUDIO | HAS_ARG | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_audio_filters },
+
5572  "set audio filters", "filter_graph" },
+
5573  { "guess_layout_max", OPT_AUDIO | HAS_ARG | OPT_INT | OPT_SPEC | OPT_EXPERT | OPT_INPUT, { .off = OFFSET(guess_layout_max) },
+
5574  "set the maximum number of channels to try to guess the channel layout" },
+
5575 
+
5576  /* subtitle options */
+
5577  { "sn", OPT_SUBTITLE | OPT_BOOL | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(subtitle_disable) },
+
5578  "disable subtitle" },
+
5579  { "scodec", OPT_SUBTITLE | HAS_ARG | OPT_PERFILE | OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_subtitle_codec },
+
5580  "force subtitle codec ('copy' to copy stream)", "codec" },
+
5581  { "stag", OPT_SUBTITLE | HAS_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_old2new }
+
5582  , "force subtitle tag/fourcc", "fourcc/tag" },
+
5583  { "fix_sub_duration", OPT_BOOL | OPT_EXPERT | OPT_SUBTITLE | OPT_SPEC | OPT_INPUT, { .off = OFFSET(fix_sub_duration) },
+
5584  "fix subtitles duration" },
+
5585  { "canvas_size", OPT_SUBTITLE | HAS_ARG | OPT_STRING | OPT_SPEC | OPT_INPUT, { .off = OFFSET(canvas_sizes) },
+
5586  "set canvas size (WxH or abbreviation)", "size" },
+
5587 
+
5588  /* grab options */
+
5589  { "vc", HAS_ARG | OPT_EXPERT | OPT_VIDEO, { .func_arg = opt_video_channel },
+
5590  "deprecated, use -channel", "channel" },
+
5591  { "tvstd", HAS_ARG | OPT_EXPERT | OPT_VIDEO, { .func_arg = opt_video_standard },
+
5592  "deprecated, use -standard", "standard" },
+
5593  { "isync", OPT_BOOL | OPT_EXPERT, { &input_sync }, "this option is deprecated and does nothing", "" },
+
5594 
+
5595  /* muxer options */
+
5596  { "muxdelay", OPT_FLOAT | HAS_ARG | OPT_EXPERT | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(mux_max_delay) },
+
5597  "set the maximum demux-decode delay", "seconds" },
+
5598  { "muxpreload", OPT_FLOAT | HAS_ARG | OPT_EXPERT | OPT_OFFSET | OPT_OUTPUT, { .off = OFFSET(mux_preload) },
+
5599  "set the initial demux-decode delay", "seconds" },
+
5600  { "sdp_file", HAS_ARG | OPT_EXPERT | OPT_OUTPUT, { .func_arg = opt_sdp_file },
+
5601  "specify a file in which to print sdp information", "file" },
+
5602 
+
5603  { "time_base", HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(time_bases) },
+
5604  "set the desired time base hint for output stream (1:24, 1:48000 or 0.04166, 2.0833e-5)", "ratio" },
+
5605  { "enc_time_base", HAS_ARG | OPT_STRING | OPT_EXPERT | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(enc_time_bases) },
+
5606  "set the desired time base for the encoder (1:24, 1:48000 or 0.04166, 2.0833e-5). "
+
5607  "two special values are defined - "
+
5608  "0 = use frame rate (video) or sample rate (audio),"
+
5609  "-1 = match source time base", "ratio" },
+
5610 
+
5611  { "bsf", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(bitstream_filters) },
+
5612  "A comma-separated list of bitstream filters", "bitstream_filters" },
+
5613  { "absf", HAS_ARG | OPT_AUDIO | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_old2new },
+
5614  "deprecated", "audio bitstream_filters" },
+
5615  { "vbsf", OPT_VIDEO | HAS_ARG | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_old2new },
+
5616  "deprecated", "video bitstream_filters" },
+
5617 
+
5618  { "apre", HAS_ARG | OPT_AUDIO | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_preset },
+
5619  "set the audio options to the indicated preset", "preset" },
+
5620  { "vpre", OPT_VIDEO | HAS_ARG | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_preset },
+
5621  "set the video options to the indicated preset", "preset" },
+
5622  { "spre", HAS_ARG | OPT_SUBTITLE | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_preset },
+
5623  "set the subtitle options to the indicated preset", "preset" },
+
5624  { "fpre", HAS_ARG | OPT_EXPERT| OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_preset },
+
5625  "set options from indicated preset file", "filename" },
+
5626 
+
5627  { "max_muxing_queue_size", HAS_ARG | OPT_INT | OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(max_muxing_queue_size) },
+
5628  "maximum number of packets that can be buffered while waiting for all streams to initialize", "packets" },
+
5629  { "muxing_queue_data_threshold", HAS_ARG | OPT_INT | OPT_SPEC | OPT_EXPERT | OPT_OUTPUT, { .off = OFFSET(muxing_queue_data_threshold) },
+
5630  "set the threshold after which max_muxing_queue_size is taken into account", "bytes" },
+
5631 
+
5632  /* data codec support */
+
5633  { "dcodec", HAS_ARG | OPT_DATA | OPT_PERFILE | OPT_EXPERT | OPT_INPUT | OPT_OUTPUT, { .func_arg = opt_data_codec },
+
5634  "force data codec ('copy' to copy stream)", "codec" },
+
5635  { "dn", OPT_BOOL | OPT_VIDEO | OPT_OFFSET | OPT_INPUT | OPT_OUTPUT, { .off = OFFSET(data_disable) },
+
5636  "disable data" },
+
5637 
+
5638  #if CONFIG_VAAPI
+
5639  { "vaapi_device", HAS_ARG | OPT_EXPERT, { .func_arg = opt_vaapi_device },
+
5640  "set VAAPI hardware device (DRM path or X11 display name)", "device" },
+
5641  #endif
+
5642 
+
5643  #if CONFIG_QSV
+
5644  { "qsv_device", HAS_ARG | OPT_STRING | OPT_EXPERT, { &qsv_device },
+
5645  "set QSV hardware device (DirectX adapter index, DRM path or X11 display name)", "device"},
+
5646  #endif
+
5647 
+
5648  { "init_hw_device", HAS_ARG | OPT_EXPERT, { .func_arg = opt_init_hw_device },
+
5649  "initialise hardware device", "args" },
+
5650  { "filter_hw_device", HAS_ARG | OPT_EXPERT, { .func_arg = opt_filter_hw_device },
+
5651  "set hardware device used when filtering", "device" },
+
5652 
+
5653  { NULL, },
+
5654  };
+
5655 
+
5656  ffmpeg_options = options;
+
5657 
+
5658  int i, ret;
+ +
5660 
+
5661  int savedCode = setjmp(ex_buf__);
+
5662  if (savedCode == 0) {
+
5663 
+ +
5665 
+
5666  init_dynload();
+
5667 
+ +
5669 
+
5670  setvbuf(stderr,NULL,_IONBF,0); /* win32 runtime needs this */
+
5671 
+
5672  av_log_set_flags(AV_LOG_SKIP_REPEATED);
+
5673  parse_loglevel(argc, argv, options);
+
5674 
+
5675  if(argc>1 && !strcmp(argv[1], "-d")){
+
5676  run_as_daemon=1;
+
5677  av_log_set_callback(log_callback_null);
+
5678  argc--;
+
5679  argv++;
+
5680  }
+
5681 
+
5682  #if CONFIG_AVDEVICE
+
5683  avdevice_register_all();
+
5684  #endif
+
5685  avformat_network_init();
+
5686 
+
5687  show_banner(argc, argv, options);
+
5688 
+
5689  /* parse options and open all input/output files */
+
5690  ret = ffmpeg_parse_options(argc, argv);
+
5691  if (ret < 0)
+
5692  exit_program(1);
+
5693 
+
5694  if (nb_output_files <= 0 && nb_input_files == 0) {
+
5695  show_usage();
+
5696  av_log(NULL, AV_LOG_WARNING, "Use -h to get full help or, even better, run 'man %s'\n", program_name);
+
5697  exit_program(1);
+
5698  }
+
5699 
+
5700  /* file converter / grab */
+
5701  if (nb_output_files <= 0) {
+
5702  av_log(NULL, AV_LOG_FATAL, "At least one output file must be specified\n");
+
5703  exit_program(1);
+
5704  }
+
5705 
+
5706  for (i = 0; i < nb_output_files; i++) {
+
5707  if (strcmp(output_files[i]->ctx->oformat->name, "rtp"))
+
5708  want_sdp = 0;
+
5709  }
+
5710 
+ +
5712  if (transcode() < 0)
+
5713  exit_program(1);
+
5714  if (do_benchmark) {
+
5715  int64_t utime, stime, rtime;
+ +
5717  utime = current_time.user_usec - ti.user_usec;
+
5718  stime = current_time.sys_usec - ti.sys_usec;
+
5719  rtime = current_time.real_usec - ti.real_usec;
+
5720  av_log(NULL, AV_LOG_INFO,
+
5721  "bench: utime=%0.3fs stime=%0.3fs rtime=%0.3fs\n",
+
5722  utime / 1000000.0, stime / 1000000.0, rtime / 1000000.0);
+
5723  }
+
5724  av_log(NULL, AV_LOG_DEBUG, "%"PRIu64" frames successfully decoded, %"PRIu64" decoding errors\n",
+ + +
5727  exit_program(69);
+
5728 
+ +
5730 
+
5731  } else {
+ +
5733  }
+
5734 
+
5735  return main_ffmpeg_return_code;
+
5736 }
+
+
ifilter_parameters_from_codecpar
static void ifilter_parameters_from_codecpar(InputFilter *ifilter, AVCodecParameters *par)
Definition: fftools_ffmpeg.c:2089
+
ffmpeg_exited
__thread volatile int ffmpeg_exited
Definition: fftools_ffmpeg.c:439
+
OPT_DATA
#define OPT_DATA
Definition: fftools_cmdutils.h:204
+
OutputStream::last_mux_dts
int64_t last_mux_dts
Definition: fftools_ffmpeg.h:493
+
InputFile::eagain
int eagain
Definition: fftools_ffmpeg.h:428
+
opt_sdp_file
int opt_sdp_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:566
+
OutputStream::avfilter
char * avfilter
Definition: fftools_ffmpeg.h:542
+
OutputStream::stream_copy
int stream_copy
Definition: fftools_ffmpeg.h:553
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+
transcode_init_done
__thread atomic_int transcode_init_done
Definition: fftools_ffmpeg.c:438
+
ffmpeg_parse_options
int ffmpeg_parse_options(int argc, char **argv)
+
OutputStream::forced_kf_index
int forced_kf_index
Definition: fftools_ffmpeg.h:528
+
ENCODER_FINISHED
@ ENCODER_FINISHED
Definition: fftools_ffmpeg.h:474
+
InputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:268
+
init_encoder_time_base
static void init_encoder_time_base(OutputStream *ost, AVRational default_time_base)
Definition: fftools_ffmpeg.c:3517
+
print_sdp
static void print_sdp(void)
Definition: fftools_ffmpeg.c:2990
+
show_decoders
int show_decoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1691
+
BenchmarkTimeStamps::real_usec
int64_t real_usec
Definition: fftools_ffmpeg.c:152
+
OutputStream::sync_opts
int64_t sync_opts
Definition: fftools_ffmpeg.h:488
+
opt_audio_frames
int opt_audio_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3046
+
OutputStream::filtered_frame
AVFrame * filtered_frame
Definition: fftools_ffmpeg.h:504
+
OutputStream::finished
OSTFinished finished
Definition: fftools_ffmpeg.h:551
+
get_format
static enum AVPixelFormat get_format(AVCodecContext *s, const enum AVPixelFormat *pix_fmts)
Definition: fftools_ffmpeg.c:3035
+
InputFile::nb_streams_warn
int nb_streams_warn
Definition: fftools_ffmpeg.h:443
+
get_benchmark_time_stamps
static BenchmarkTimeStamps get_benchmark_time_stamps(void)
Definition: fftools_ffmpeg.c:5110
+
ex_buf__
__thread jmp_buf ex_buf__
Definition: ffmpegkit_exception.cpp:23
+
opt_filter_complex
int opt_filter_complex(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3264
+
OutputStream::rotate_override_value
double rotate_override_value
Definition: fftools_ffmpeg.h:520
+
OPT_EXIT
#define OPT_EXIT
Definition: fftools_cmdutils.h:203
+
OutputStream::frame_number
int frame_number
Definition: fftools_ffmpeg.h:484
+
stdin_interaction
__thread int stdin_interaction
Definition: fftools_ffmpeg_opt.c:184
+
OutputStream::ref_par
AVCodecParameters * ref_par
Definition: fftools_ffmpeg.h:501
+
parse_forced_key_frames
static void parse_forced_key_frames(char *kf, OutputStream *ost, AVCodecContext *avctx)
Definition: fftools_ffmpeg.c:3454
+
sub2video_push_ref
static void sub2video_push_ref(InputStream *ist, int64_t pts)
Definition: fftools_ffmpeg.c:316
+
program_name
__thread char * program_name
Definition: fftools_cmdutils.c:97
+
abort_on_flags
__thread int abort_on_flags
Definition: fftools_ffmpeg_opt.c:181
+
opt_audio_codec
int opt_audio_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:339
+
opt_vsync
int opt_vsync(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3196
+
OutputStream::last_nb0_frames
int last_nb0_frames[3]
Definition: fftools_ffmpeg.h:508
+
opt_audio_qscale
int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3258
+
OutputStream::filters
char * filters
filtergraph associated to the -filter option
Definition: fftools_ffmpeg.h:543
+
OPT_OFFSET
#define OPT_OFFSET
Definition: fftools_cmdutils.h:206
+
vstats_file
static FILE * vstats_file
Definition: fftools_ffmpeg.c:140
+
InputStream::discard
int discard
Definition: fftools_ffmpeg.h:327
+
OutputStream::logfile_prefix
char * logfile_prefix
Definition: fftools_ffmpeg.h:538
+
OPT_INPUT
#define OPT_INPUT
Definition: fftools_cmdutils.h:210
+
OutputStream::muxing_queue
AVFifoBuffer * muxing_queue
Definition: fftools_ffmpeg.h:584
+
OutputStream::rotate_overridden
int rotate_overridden
Definition: fftools_ffmpeg.h:518
+
want_sdp
__thread int want_sdp
Definition: fftools_ffmpeg.c:169
+
OutputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:603
+
OutputStream::last_dropped
int last_dropped
Definition: fftools_ffmpeg.h:507
+
FKF_PREV_FORCED_N
@ FKF_PREV_FORCED_N
Definition: fftools_ffmpeg.h:462
+
show_pix_fmts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1791
+
handleSIGXCPU
volatile int handleSIGXCPU
Definition: FFmpegKitConfig.cpp:87
+
fftools_ffmpeg.h
+
OPT_TIME
#define OPT_TIME
Definition: fftools_cmdutils.h:208
+
OutputStream::force_fps
int force_fps
Definition: fftools_ffmpeg.h:516
+
FilterGraph::index
int index
Definition: fftools_ffmpeg.h:312
+
exit_program
void exit_program(int ret)
Definition: fftools_cmdutils.c:160
+
FKF_N
@ FKF_N
Definition: fftools_ffmpeg.h:460
+
output_files
__thread OutputFile ** output_files
Definition: fftools_ffmpeg.c:183
+
opt_attach
int opt_attach(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:481
+
opt_sameq
int opt_sameq(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:318
+
nb_input_streams
__thread int nb_input_streams
Definition: fftools_ffmpeg.c:177
+
frame_drop_threshold
__thread float frame_drop_threshold
Definition: fftools_ffmpeg_opt.c:170
+
duration_max
static AVRational duration_max(int64_t tmp, int64_t *duration, AVRational tmp_time_base, AVRational time_base)
Definition: fftools_ffmpeg.c:4452
+
InputStream
Definition: fftools_ffmpeg.h:324
+
hwaccel_decode_init
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: fftools_ffmpeg_hw.c:537
+
progress_avio
__thread AVIOContext * progress_avio
Definition: fftools_ffmpeg.c:172
+
show_encoders
int show_encoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1697
+
VSYNC_CFR
#define VSYNC_CFR
Definition: fftools_ffmpeg.h:75
+
ffmpeg_execute
int ffmpeg_execute(int argc, char **argv)
Definition: fftools_ffmpeg.c:5210
+
OPT_DOUBLE
#define OPT_DOUBLE
Definition: fftools_cmdutils.h:209
+
show_demuxers
int show_demuxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1411
+
OutputStream::is_cfr
int is_cfr
Definition: fftools_ffmpeg.h:515
+
check_decode_result
static void check_decode_result(InputStream *ist, int *got_output, int ret)
Definition: fftools_ffmpeg.c:2323
+
configure_filtergraph
int configure_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:963
+
find_stream_info
__thread int find_stream_info
Definition: fftools_ffmpeg_opt.c:203
+
transcode
static int transcode(void)
Definition: fftools_ffmpeg.c:4966
+
audio_drift_threshold
__thread float audio_drift_threshold
Definition: fftools_ffmpeg_opt.c:163
+
show_muxers
int show_muxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1406
+
opt_filter_hw_device
int opt_filter_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:620
+
opt_bitrate
int opt_bitrate(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3138
+
received_nb_signals
static volatile int received_nb_signals
Definition: fftools_ffmpeg.c:437
+
graph
fg outputs[0] graph
Definition: fftools_ffmpeg_filter.c:183
+
ifilter_send_frame
static int ifilter_send_frame(InputFilter *ifilter, AVFrame *frame)
Definition: fftools_ffmpeg.c:2353
+
check_output_constraints
static int check_output_constraints(InputStream *ist, OutputStream *ost)
Definition: fftools_ffmpeg.c:2209
+
OutputStream::muxing_queue_data_threshold
size_t muxing_queue_data_threshold
Definition: fftools_ffmpeg.h:593
+
set_report_callback
void set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double))
Definition: fftools_ffmpeg.c:5194
+
ifilter_parameters_from_frame
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
Definition: fftools_ffmpeg_filter.c:1141
+
cancel_operation
void cancel_operation(long id)
Definition: fftools_ffmpeg.c:5199
+
opt_progress
int opt_progress(void *optctx, const char *opt, const char *arg)
+
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: fftools_ffmpeg.h:536
+
dup_warning
__thread unsigned dup_warning
Definition: fftools_ffmpeg.c:164
+
OutputStream::attachment_filename
const char * attachment_filename
Definition: fftools_ffmpeg.h:562
+
OutputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:479
+
OPT_OUTPUT
#define OPT_OUTPUT
Definition: fftools_cmdutils.h:211
+
VSYNC_VSCFR
#define VSYNC_VSCFR
Definition: fftools_ffmpeg.h:77
+
log_callback_null
static void log_callback_null(void *ptr, int level, const char *fmt, va_list vl)
Definition: fftools_ffmpeg.c:5154
+
InputFilter
Definition: fftools_ffmpeg.h:264
+
InputStream::data_size
uint64_t data_size
Definition: fftools_ffmpeg.h:412
+
OutputStream::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:506
+
BenchmarkTimeStamps::user_usec
int64_t user_usec
Definition: fftools_ffmpeg.c:153
+
debug_ts
__thread int debug_ts
Definition: fftools_ffmpeg_opt.c:179
+
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: fftools_ffmpeg.h:84
+
decode
static int decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
Definition: fftools_ffmpeg.c:2461
+
max_error_rate
__thread float max_error_rate
Definition: fftools_ffmpeg_opt.c:186
+
transcode_subtitles
static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output, int *decode_failed)
Definition: fftools_ffmpeg.c:2703
+
BenchmarkTimeStamps::sys_usec
int64_t sys_usec
Definition: fftools_ffmpeg.c:154
+
do_deinterlace
__thread int do_deinterlace
Definition: fftools_ffmpeg_opt.c:171
+
InputStream::nb_filters
int nb_filters
Definition: fftools_ffmpeg.h:391
+
ffmpeg_cleanup
static void ffmpeg_cleanup(int ret)
Definition: fftools_ffmpeg.c:619
+
dts_error_threshold
__thread float dts_error_threshold
Definition: fftools_ffmpeg_opt.c:165
+
InputStream::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:337
+
OutputStream::top_field_first
int top_field_first
Definition: fftools_ffmpeg.h:517
+
show_usage
void show_usage(void)
Definition: fftools_ffmpeg_opt.c:3369
+
InputFile::loop
int loop
Definition: fftools_ffmpeg.h:430
+
InputFile::readrate
float readrate
Definition: fftools_ffmpeg.h:445
+
set_tty_echo
static void set_tty_echo(int on)
Definition: fftools_ffmpeg.c:4160
+
sigterm_handler
static void sigterm_handler(int sig)
Definition: fftools_ffmpeg.c:445
+
OutputStream::copy_prior_start
int copy_prior_start
Definition: fftools_ffmpeg.h:564
+
OutputStream::disposition
char * disposition
Definition: fftools_ffmpeg.h:565
+
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: fftools_ffmpeg.h:514
+
qp_histogram
__thread int qp_histogram[52]
Definition: fftools_ffmpeg.c:192
+
show_help
int show_help(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:2042
+
InputFile::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:448
+
OutputStream::source_index
int source_index
Definition: fftools_ffmpeg.h:481
+
OPT_VIDEO
#define OPT_VIDEO
Definition: fftools_cmdutils.h:197
+
InputStream::sub2video::end_pts
int64_t end_pts
Definition: fftools_ffmpeg.h:379
+
OutputStream::quality
int quality
Definition: fftools_ffmpeg.h:579
+
OutputFilter
Definition: fftools_ffmpeg.h:288
+
OutputStream::pict_type
int pict_type
Definition: fftools_ffmpeg.h:596
+
InputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:281
+
InputStream::subtitle
AVSubtitle subtitle
Definition: fftools_ffmpeg.h:374
+
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: fftools_ffmpeg.h:547
+
do_video_out
static void do_video_out(OutputFile *of, OutputStream *ost, AVFrame *next_picture)
Definition: fftools_ffmpeg.c:1248
+
OutputFile::header_written
int header_written
Definition: fftools_ffmpeg.h:612
+
init_output_stream
static int init_output_stream(OutputStream *ost, AVFrame *frame, char *error, int error_len)
Definition: fftools_ffmpeg.c:3724
+
run_as_daemon
__thread int run_as_daemon
Definition: fftools_ffmpeg.c:162
+
OutputStream::max_muxing_queue_size
int max_muxing_queue_size
Definition: fftools_ffmpeg.h:581
+
OPT_INT
#define OPT_INT
Definition: fftools_cmdutils.h:199
+
InputStream::decoded_frame
AVFrame * decoded_frame
Definition: fftools_ffmpeg.h:335
+
sub2video_flush
static void sub2video_flush(InputStream *ist)
Definition: fftools_ffmpeg.c:406
+
show_filters
int show_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1730
+
do_pkt_dump
__thread int do_pkt_dump
Definition: fftools_ffmpeg_opt.c:175
+
OutputStream::forced_keyframes_expr_const_values
double forced_keyframes_expr_const_values[FKF_NB]
Definition: fftools_ffmpeg.h:531
+
DECODING_FOR_OST
#define DECODING_FOR_OST
Definition: fftools_ffmpeg.h:330
+
opt_video_frames
int opt_video_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3040
+
handleSIGINT
volatile int handleSIGINT
Definition: FFmpegKitConfig.cpp:85
+
opt_subtitle_codec
int opt_subtitle_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:351
+
do_subtitle_out
static void do_subtitle_out(OutputFile *of, OutputStream *ost, AVSubtitle *sub)
Definition: fftools_ffmpeg.c:1165
+
opt_streamid
int opt_streamid(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2091
+
opt_timecode
int opt_timecode(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3208
+
HWAccel::id
enum HWAccelID id
Definition: fftools_ffmpeg.h:92
+
forced_keyframes_const_names
const char *const forced_keyframes_const_names[]
Definition: fftools_ffmpeg.c:142
+
OutputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:291
+
FilterGraph::nb_inputs
int nb_inputs
Definition: fftools_ffmpeg.h:319
+
OFFSET
#define OFFSET(x)
+
show_version
int show_version(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1242
+
sub2video_get_blank_frame
static int sub2video_get_blank_frame(InputStream *ist)
Definition: fftools_ffmpeg.c:270
+
cancelSession
void cancelSession(long sessionId)
Definition: FFmpegKitConfig.cpp:427
+
OutputStream::packets_written
uint64_t packets_written
Definition: fftools_ffmpeg.h:573
+
OutputFile::opts
AVDictionary * opts
Definition: fftools_ffmpeg.h:604
+
opt_channel_layout
int opt_channel_layout(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3222
+
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:536
+
FKF_N_FORCED
@ FKF_N_FORCED
Definition: fftools_ffmpeg.h:461
+
OutputStream::forced_keyframes_pexpr
AVExpr * forced_keyframes_pexpr
Definition: fftools_ffmpeg.h:530
+
OutputStream::forced_kf_pts
int64_t * forced_kf_pts
Definition: fftools_ffmpeg.h:526
+
auto_conversion_filters
__thread int auto_conversion_filters
Definition: fftools_ffmpeg_opt.c:190
+
HAS_ARG
#define HAS_ARG
Definition: fftools_cmdutils.h:193
+
intra_only
__thread int intra_only
Definition: fftools_ffmpeg_opt.c:194
+
ffmpeg_options
__thread OptionDef * ffmpeg_options
Definition: fftools_ffmpeg.c:5208
+
InputFilter::ist
struct InputStream * ist
Definition: fftools_ffmpeg.h:266
+
vstats_filename
__thread char * vstats_filename
Definition: fftools_ffmpeg_opt.c:160
+
opt_qscale
int opt_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3154
+
FKF_T
@ FKF_T
Definition: fftools_ffmpeg.h:464
+
ffmpegkit_exception.h
+
hwaccels
const HWAccel hwaccels[]
Definition: fftools_ffmpeg_opt.c:152
+
InputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:269
+
InputStream::got_output
int got_output
Definition: fftools_ffmpeg.h:372
+
VSYNC_AUTO
#define VSYNC_AUTO
Definition: fftools_ffmpeg.h:73
+
InputFilter::frame_queue
AVFifoBuffer * frame_queue
Definition: fftools_ffmpeg.h:271
+
abort_codec_experimental
static void abort_codec_experimental(const AVCodec *c, int encoder)
Definition: fftools_ffmpeg.c:800
+
show_hwaccels
int show_hwaccels(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:254
+
opt_profile
int opt_profile(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3172
+
InputFile
Definition: fftools_ffmpeg.h:425
+
OutputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:292
+
OPT_FLOAT
#define OPT_FLOAT
Definition: fftools_cmdutils.h:200
+
opt_abort_on
int opt_abort_on(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:284
+
FilterGraph::graph_desc
const char * graph_desc
Definition: fftools_ffmpeg.h:313
+
InputStream::dts
int64_t dts
dts of the last packet read for this stream (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:344
+
OutputStream::encoding_needed
int encoding_needed
Definition: fftools_ffmpeg.h:483
+
MUXER_FINISHED
@ MUXER_FINISHED
Definition: fftools_ffmpeg.h:475
+
hw_device_free_all
void hw_device_free_all(void)
Definition: fftools_ffmpeg_hw.c:283
+
nb_output_dumped
__thread unsigned nb_output_dumped
Definition: fftools_ffmpeg.c:167
+
OPT_STRING
#define OPT_STRING
Definition: fftools_cmdutils.h:196
+
OutputFile::shortest
int shortest
Definition: fftools_ffmpeg.h:610
+
parse_time_or_die
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
Definition: fftools_cmdutils.c:192
+
opt_data_codec
int opt_data_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:357
+
nb_input_files
__thread int nb_input_files
Definition: fftools_ffmpeg.c:179
+
handleSIGQUIT
volatile int handleSIGQUIT
Definition: FFmpegKitConfig.cpp:84
+
do_benchmark_all
__thread int do_benchmark_all
Definition: fftools_ffmpeg_opt.c:173
+
opt_preset
int opt_preset(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3078
+
show_colors
int show_colors(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1777
+
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:606
+
dts_delta_threshold
__thread float dts_delta_threshold
Definition: fftools_ffmpeg_opt.c:164
+
OutputStream::bsf_ctx
AVBSFContext * bsf_ctx
Definition: fftools_ffmpeg.h:498
+
filter_nbthreads
__thread int filter_nbthreads
Definition: fftools_ffmpeg_opt.c:187
+
assert_avoptions
void assert_avoptions(AVDictionary *m)
Definition: fftools_ffmpeg.c:791
+
nb_output_streams
__thread int nb_output_streams
Definition: fftools_ffmpeg.c:182
+
ABORT_ON_FLAG_EMPTY_OUTPUT
#define ABORT_ON_FLAG_EMPTY_OUTPUT
Definition: fftools_ffmpeg.h:468
+
OutputStream::data_size
uint64_t data_size
Definition: fftools_ffmpeg.h:571
+
show_bsfs
int show_bsfs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1703
+
OutputStream::first_pts
int64_t first_pts
Definition: fftools_ffmpeg.h:491
+
OutputStream::frames_encoded
uint64_t frames_encoded
Definition: fftools_ffmpeg.h:575
+
term_exit
void term_exit(void)
Definition: fftools_ffmpeg.c:430
+
ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM
Definition: fftools_ffmpeg.h:469
+
OutputStream::forced_kf_ref_pts
int64_t forced_kf_ref_pts
Definition: fftools_ffmpeg.h:525
+
choose_output
static OutputStream * choose_output(void)
Definition: fftools_ffmpeg.c:4133
+
InputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:426
+
OutputStream::logfile
FILE * logfile
Definition: fftools_ffmpeg.h:539
+
copy_ts_first_pts
__thread int64_t copy_ts_first_pts
Definition: fftools_ffmpeg.c:441
+
OSTFinished
OSTFinished
Definition: fftools_ffmpeg.h:473
+
audio_sync_method
__thread int audio_sync_method
Definition: fftools_ffmpeg_opt.c:168
+
FilterGraph::nb_outputs
int nb_outputs
Definition: fftools_ffmpeg.h:321
+
sub2video_update
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
Definition: fftools_ffmpeg.c:334
+
InputFilter::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: fftools_ffmpeg.h:277
+
hw_device_setup_for_encode
int hw_device_setup_for_encode(OutputStream *ost)
Definition: fftools_ffmpeg_hw.c:440
+
filters
ist filters[ist->nb_filters - 1]
Definition: fftools_ffmpeg_filter.c:200
+
globalSessionId
__thread volatile long globalSessionId
Definition: FFmpegKitConfig.cpp:91
+
InputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:267
+
OutputStream::resample_opts
AVDictionary * resample_opts
Definition: fftools_ffmpeg.h:549
+
decode_interrupt_cb
int decode_interrupt_cb(void *ctx)
Definition: fftools_ffmpeg.c:612
+
cancelRequested
int cancelRequested(long sessionId)
Definition: FFmpegKitConfig.cpp:437
+
InputFilter::height
int height
Definition: fftools_ffmpeg.h:276
+
opt_init_hw_device
int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:605
+
program_birth_year
__thread int program_birth_year
Definition: fftools_cmdutils.c:98
+
InputStream::sub2video::initialize
unsigned int initialize
marks if sub2video_update should force an initialization
Definition: fftools_ffmpeg.h:383
+
OutputStream::filter
OutputFilter * filter
Definition: fftools_ffmpeg.h:541
+
nb_output_files
__thread int nb_output_files
Definition: fftools_ffmpeg.c:184
+
uninit_opts
void uninit_opts(void)
Definition: fftools_cmdutils.c:115
+
filter
ost filter
Definition: fftools_ffmpeg_filter.c:186
+
OutputFilter::sample_rates
int * sample_rates
Definition: fftools_ffmpeg.h:308
+
psnr
static double psnr(double d)
Definition: fftools_ffmpeg.c:1544
+
OutputStream::enc_timebase
AVRational enc_timebase
Definition: fftools_ffmpeg.h:496
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
InputFile::nb_streams
int nb_streams
Definition: fftools_ffmpeg.h:441
+
OPT_SUBTITLE
#define OPT_SUBTITLE
Definition: fftools_cmdutils.h:201
+
subtitle_out
__thread uint8_t * subtitle_out
Definition: fftools_ffmpeg.c:174
+
opt_target
int opt_target(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2873
+
opt_loglevel
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:919
+
sample_rate
sample_rate
Definition: fftools_ffmpeg_filter.c:165
+
FilterGraph::graph
AVFilterGraph * graph
Definition: fftools_ffmpeg.h:315
+
process_input
static int process_input(int file_index)
Definition: fftools_ffmpeg.c:4537
+
init_output_stream_streamcopy
static int init_output_stream_streamcopy(OutputStream *ost)
Definition: fftools_ffmpeg.c:3291
+
show_sample_fmts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1853
+
OutputFilter::formats
int * formats
Definition: fftools_ffmpeg.h:306
+
opt_stats_period
int opt_stats_period(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:303
+
InputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:265
+
frame_bits_per_raw_sample
__thread int frame_bits_per_raw_sample
Definition: fftools_ffmpeg_opt.c:185
+
register_exit
void register_exit(void(*cb)(int ret))
Definition: fftools_cmdutils.c:155
+
nb_frames_dup
__thread int nb_frames_dup
Definition: fftools_ffmpeg.c:163
+
do_psnr
__thread int do_psnr
Definition: fftools_ffmpeg_opt.c:197
+
FilterGraph::outputs
OutputFilter ** outputs
Definition: fftools_ffmpeg.h:320
+
OutputStream::sync_ist
struct InputStream * sync_ist
Definition: fftools_ffmpeg.h:487
+
FilterGraph::inputs
InputFilter ** inputs
Definition: fftools_ffmpeg.h:318
+
seek_to_start
static int seek_to_start(InputFile *ifile, AVFormatContext *is)
Definition: fftools_ffmpeg.c:4471
+
print_error
void print_error(const char *filename, int err)
Definition: fftools_cmdutils.c:1134
+
InputFile::ts_offset
int64_t ts_offset
Definition: fftools_ffmpeg.h:436
+
main_ffmpeg_return_code
__thread volatile int main_ffmpeg_return_code
Definition: fftools_ffmpeg.c:440
+
OutputStream::index
int index
Definition: fftools_ffmpeg.h:480
+
term_init
void term_init(void)
Definition: fftools_ffmpeg.c:495
+
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:1231
+
close_all_output_streams
static void close_all_output_streams(OutputStream *ost, OSTFinished this_stream, OSTFinished others)
Definition: fftools_ffmpeg.c:826
+
opt_cpucount
int opt_cpucount(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:893
+
InputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:326
+
opt_video_standard
int opt_video_standard(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:333
+
write_packet
static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int unqueue)
Definition: fftools_ffmpeg.c:835
+
InputFilter::eof
int eof
Definition: fftools_ffmpeg.h:285
+
HWAccel
Definition: fftools_ffmpeg.h:89
+
OutputStream::forced_keyframes
char * forced_keyframes
Definition: fftools_ffmpeg.h:529
+
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: fftools_ffmpeg.h:333
+
InputFile::eof_reached
int eof_reached
Definition: fftools_ffmpeg.h:427
+
flush_encoders
static void flush_encoders(void)
Definition: fftools_ffmpeg.c:2102
+
d
d
Definition: fftools_ffmpeg_filter.c:165
+
check_keyboard_interaction
static int check_keyboard_interaction(int64_t cur_time)
Definition: fftools_ffmpeg.c:4172
+
init_output_stream_wrapper
static int init_output_stream_wrapper(OutputStream *ost, AVFrame *frame, unsigned int fatal)
Definition: fftools_ffmpeg.c:1087
+
decode_audio
static int decode_audio(InputStream *ist, AVPacket *pkt, int *got_output, int *decode_failed)
Definition: fftools_ffmpeg.c:2510
+
opt_video_filters
int opt_video_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3184
+
opt_data_frames
int opt_data_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3052
+
opt_cpuflags
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:881
+
send_filter_eof
static int send_filter_eof(InputStream *ist)
Definition: fftools_ffmpeg.c:2782
+
OutputStream::error
int64_t error[4]
Definition: fftools_ffmpeg.h:599
+
init_output_stream_encode
static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
Definition: fftools_ffmpeg.c:3541
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
guess_input_channel_layout
int guess_input_channel_layout(InputStream *ist)
Definition: fftools_ffmpeg.c:2303
+
format
fg outputs[0] format
Definition: fftools_ffmpeg_filter.c:184
+
int_cb
const __thread AVIOInterruptCB int_cb
Definition: fftools_ffmpeg.c:617
+
send_frame_to_filters
static int send_frame_to_filters(InputStream *ist, AVFrame *decoded_frame)
Definition: fftools_ffmpeg.c:2484
+
read_key
static int read_key(void)
Definition: fftools_ffmpeg.c:559
+
show_protocols
int show_protocols(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1715
+
transcode_init
static int transcode_init(void)
Definition: fftools_ffmpeg.c:3921
+
InputFile::ist_index
int ist_index
Definition: fftools_ffmpeg.h:429
+
InputFile::last_ts
int64_t last_ts
Definition: fftools_ffmpeg.h:437
+
InputFilter::format
int format
Definition: fftools_ffmpeg.h:274
+
opt_filter_complex_script
int opt_filter_complex_script(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3279
+
opt_map_channel
int opt_map_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:489
+
OutputStream::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:513
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
show_codecs
int show_codecs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1596
+
decode_video
static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_t *duration_pts, int eof, int *decode_failed)
Definition: fftools_ffmpeg.c:2572
+
report_new_stream
static void report_new_stream(int input_index, AVPacket *pkt)
Definition: fftools_ffmpeg.c:3906
+
input_files
__thread InputFile ** input_files
Definition: fftools_ffmpeg.c:178
+
close_output_stream
static void close_output_stream(OutputStream *ost)
Definition: fftools_ffmpeg.c:981
+
qp_hist
__thread int qp_hist
Definition: fftools_ffmpeg_opt.c:183
+
OutputStream::last_frame
AVFrame * last_frame
Definition: fftools_ffmpeg.h:505
+
InputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:279
+
filtergraphs
__thread FilterGraph ** filtergraphs
Definition: fftools_ffmpeg.c:186
+
copy_unknown_streams
__thread int copy_unknown_streams
Definition: fftools_ffmpeg_opt.c:201
+
hide_banner
__thread int hide_banner
Definition: fftools_cmdutils.c:106
+
copy_tb
__thread int copy_tb
Definition: fftools_ffmpeg_opt.c:178
+
OPT_SPEC
#define OPT_SPEC
Definition: fftools_cmdutils.h:207
+
OPT_PERFILE
#define OPT_PERFILE
Definition: fftools_cmdutils.h:205
+
first_report
__thread int first_report
Definition: fftools_ffmpeg.c:191
+
OutputFile::ost_index
int ost_index
Definition: fftools_ffmpeg.h:605
+
OptionDef
Definition: fftools_cmdutils.h:190
+
opt_report
int opt_report(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1102
+
OutputStream::filters_script
char * filters_script
filtergraph script associated to the -filter_script option
Definition: fftools_ffmpeg.h:544
+
remove_avoptions
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: fftools_ffmpeg.c:782
+
DECODING_FOR_FILTER
#define DECODING_FOR_FILTER
Definition: fftools_ffmpeg.h:331
+
InputFile::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:438
+
opt_vstats_file
int opt_vstats_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3017
+
check_init_output_file
static int check_init_output_file(OutputFile *of, int file_index)
Definition: fftools_ffmpeg.c:3212
+
OutputFile::limit_filesize
uint64_t limit_filesize
Definition: fftools_ffmpeg.h:608
+
OutputStream::dropped_keyframe
int dropped_keyframe
Definition: fftools_ffmpeg.h:532
+
OutputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:289
+
process_input_packet
static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eof)
Definition: fftools_ffmpeg.c:2798
+
OutputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:482
+
decode_error_stat
__thread int64_t decode_error_stat[2]
Definition: fftools_ffmpeg.c:166
+
HWAccel::name
const char * name
Definition: fftools_ffmpeg.h:90
+
InputStream::sub2video::frame
AVFrame * frame
Definition: fftools_ffmpeg.h:381
+
handleSIGPIPE
volatile int handleSIGPIPE
Definition: FFmpegKitConfig.cpp:88
+
dump_attachment
void dump_attachment(AVStream *st, const char *filename)
Definition: fftools_ffmpeg_opt.c:1077
+
video_sync_method
__thread int video_sync_method
Definition: fftools_ffmpeg_opt.c:169
+
do_hex_dump
__thread int do_hex_dump
Definition: fftools_ffmpeg_opt.c:174
+
sdp_filename
__thread char * sdp_filename
Definition: fftools_ffmpeg_opt.c:161
+
show_devices
int show_devices(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1416
+
OutputFile
Definition: fftools_ffmpeg.h:602
+
OutputStream::muxing_queue_data_size
size_t muxing_queue_data_size
Definition: fftools_ffmpeg.h:590
+
VSYNC_PASSTHROUGH
#define VSYNC_PASSTHROUGH
Definition: fftools_ffmpeg.h:74
+
do_audio_out
static void do_audio_out(OutputFile *of, OutputStream *ost, AVFrame *frame)
Definition: fftools_ffmpeg.c:1107
+
get_input_stream
static InputStream * get_input_stream(OutputStream *ost)
Definition: fftools_ffmpeg.c:3199
+
nb_filtergraphs
__thread int nb_filtergraphs
Definition: fftools_ffmpeg.c:187
+
stats_period
__thread int64_t stats_period
Definition: fftools_ffmpeg_opt.c:191
+
InputStream::ret
int ret
Definition: fftools_ffmpeg.h:373
+
ignore_unknown_streams
__thread int ignore_unknown_streams
Definition: fftools_ffmpeg_opt.c:200
+
keyboard_last_time
__thread int64_t keyboard_last_time
Definition: fftools_ffmpeg.c:190
+
OPT_AUDIO
#define OPT_AUDIO
Definition: fftools_cmdutils.h:198
+
transcode_step
static int transcode_step(void)
Definition: fftools_ffmpeg.c:4876
+
sub2video_copy_rect
static void sub2video_copy_rect(uint8_t *dst, int dst_linesize, int w, int h, AVSubtitleRect *r)
Definition: fftools_ffmpeg.c:285
+
opt_old2new
int opt_old2new(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3126
+
getmaxrss
static int64_t getmaxrss(void)
Definition: fftools_ffmpeg.c:5136
+
HWAccel::init
int(* init)(AVCodecContext *s)
Definition: fftools_ffmpeg.h:91
+
OPT_BOOL
#define OPT_BOOL
Definition: fftools_cmdutils.h:194
+
file_overwrite
__thread int file_overwrite
Definition: fftools_ffmpeg_opt.c:195
+
OutputStream::max_frames
int64_t max_frames
Definition: fftools_ffmpeg.h:503
+
BenchmarkTimeStamps
Definition: fftools_ffmpeg.c:151
+
reap_filters
static int reap_filters(int flush)
Definition: fftools_ffmpeg.c:1611
+
OutputStream::apad
char * apad
Definition: fftools_ffmpeg.h:550
+
init_output_bsfs
static int init_output_bsfs(OutputStream *ost)
Definition: fftools_ffmpeg.c:3261
+
exit_on_error
__thread int exit_on_error
Definition: fftools_ffmpeg_opt.c:180
+
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: fftools_ffmpeg.h:522
+
OutputStream::unavailable
int unavailable
Definition: fftools_ffmpeg.h:552
+
OutputStream::mux_timebase
AVRational mux_timebase
Definition: fftools_ffmpeg.h:495
+
hw_device_setup_for_decode
int hw_device_setup_for_decode(InputStream *ist)
Definition: fftools_ffmpeg_hw.c:312
+
fftools_cmdutils.h
+
media_type_string
#define media_type_string
Definition: fftools_cmdutils.h:610
+
InputFilter::channels
int channels
Definition: fftools_ffmpeg.h:280
+
do_video_stats
static void do_video_stats(OutputStream *ost, int frame_size)
Definition: fftools_ffmpeg.c:1549
+
FKF_PREV_FORCED_T
@ FKF_PREV_FORCED_T
Definition: fftools_ffmpeg.h:463
+
init_input_stream
static int init_input_stream(int ist_index, char *error, int error_len)
Definition: fftools_ffmpeg.c:3131
+
opt_video_codec
int opt_video_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:345
+
input_streams
__thread InputStream ** input_streams
Definition: fftools_ffmpeg.c:176
+
output_streams
__thread OutputStream ** output_streams
Definition: fftools_ffmpeg.c:181
+
adjust_frame_pts_to_encoder_tb
static double adjust_frame_pts_to_encoder_tb(OutputFile *of, OutputStream *ost, AVFrame *frame)
Definition: fftools_ffmpeg.c:1042
+
input_sync
__thread int input_sync
Definition: fftools_ffmpeg_opt.c:198
+
OutputStream::forced_kf_count
int forced_kf_count
Definition: fftools_ffmpeg.h:527
+
compare_int64
static int compare_int64(const void *a, const void *b)
Definition: fftools_ffmpeg.c:3206
+
OutputFilter::out_tmp
AVFilterInOut * out_tmp
Definition: fftools_ffmpeg.h:295
+
VSYNC_VFR
#define VSYNC_VFR
Definition: fftools_ffmpeg.h:76
+
do_benchmark
__thread int do_benchmark
Definition: fftools_ffmpeg_opt.c:172
+
ifilter_has_all_input_formats
static int ifilter_has_all_input_formats(FilterGraph *fg)
Definition: fftools_ffmpeg.c:2342
+
sub2video_heartbeat
static void sub2video_heartbeat(InputStream *ist, int64_t pts)
Definition: fftools_ffmpeg.c:374
+
got_eagain
static int got_eagain(void)
Definition: fftools_ffmpeg.c:4433
+
InputStream::filters
InputFilter ** filters
Definition: fftools_ffmpeg.h:390
+
finish_output_stream
static void finish_output_stream(OutputStream *ost)
Definition: fftools_ffmpeg.c:1592
+
vstats_version
__thread int vstats_version
Definition: fftools_ffmpeg_opt.c:189
+
show_layouts
int show_layouts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1824
+
ifilter_send_eof
static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
Definition: fftools_ffmpeg.c:2430
+
VSYNC_DROP
#define VSYNC_DROP
Definition: fftools_ffmpeg.h:78
+
audio_volume
__thread int audio_volume
Definition: fftools_ffmpeg_opt.c:167
+
videotoolbox_pixfmt
__thread char * videotoolbox_pixfmt
+
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: fftools_ffmpeg.h:500
+
get_input_packet
static int get_input_packet(InputFile *f, AVPacket **pkt)
Definition: fftools_ffmpeg.c:4404
+
InputStream::pts
int64_t pts
current pts of the decoded frame (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:347
+
show_license
int show_license(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1257
+
term_exit_sigsafe
static void term_exit_sigsafe(void)
Definition: fftools_ffmpeg.c:422
+
show_buildconf
int show_buildconf(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1250
+
InputFile::time_base
AVRational time_base
Definition: fftools_ffmpeg.h:433
+
show_formats
int show_formats(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1401
+
InputStream::sub2video
struct InputStream::sub2video sub2video
+
report_callback
void(* report_callback)(int, float, float, int64_t, int, double, double)
Definition: fftools_ffmpeg.c:194
+
start_at_zero
__thread int start_at_zero
Definition: fftools_ffmpeg_opt.c:177
+
OutputStream::samples_encoded
uint64_t samples_encoded
Definition: fftools_ffmpeg.h:576
+
InputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:325
+
print_report
static void print_report(int is_last_report, int64_t timer_start, int64_t cur_time)
Definition: fftools_ffmpeg.c:1880
+
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:607
+
OutputStream::audio_channels_map
int * audio_channels_map
Definition: fftools_ffmpeg.h:535
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+
InputStream::dec
const AVCodec * dec
Definition: fftools_ffmpeg.h:334
+
OutputStream
Definition: fftools_ffmpeg.h:478
+
InputStream::start
int64_t start
Definition: fftools_ffmpeg.h:339
+
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: fftools_ffmpeg.h:85
+
transcode_from_filter
static int transcode_from_filter(FilterGraph *graph, InputStream **best_ist)
Definition: fftools_ffmpeg.c:4830
+
opt_map
int opt_map(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:363
+
forward_report
static void forward_report(int is_last_report, int64_t timer_start, int64_t cur_time)
Definition: fftools_ffmpeg.c:1811
+
opt_vstats
int opt_vstats(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3024
+
opt_max_alloc
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1107
+
InputFilter::width
int width
Definition: fftools_ffmpeg.h:276
+
OutputStream::copy_initial_nonkeyframes
int copy_initial_nonkeyframes
Definition: fftools_ffmpeg.h:563
+
opt_vaapi_device
int opt_vaapi_device(void *optctx, const char *opt, const char *arg)
+
handleSIGTERM
volatile int handleSIGTERM
Definition: FFmpegKitConfig.cpp:86
+
print_stats
__thread int print_stats
Definition: fftools_ffmpeg_opt.c:182
+
last_time
__thread int64_t last_time
Definition: fftools_ffmpeg.c:189
+
opt_audio_filters
int opt_audio_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3190
+
opt_timelimit
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1121
+
ffmpeg_var_cleanup
void ffmpeg_var_cleanup()
Definition: fftools_ffmpeg.c:5158
+
reset_eagain
static void reset_eagain(void)
Definition: fftools_ffmpeg.c:4442
+
do_streamcopy
static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *pkt)
Definition: fftools_ffmpeg.c:2226
+
output_packet
static void output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof)
Definition: fftools_ffmpeg.c:1003
+
InputFilter::hw_frames_ctx
AVBufferRef * hw_frames_ctx
Definition: fftools_ffmpeg.h:283
+
ost
OutputStream * ost
Definition: fftools_ffmpeg_filter.c:172
+
InputFile::rate_emu
int rate_emu
Definition: fftools_ffmpeg.h:444
+
init_dynload
void init_dynload(void)
Definition: fftools_cmdutils.c:144
+
InputStream::next_dts
int64_t next_dts
Definition: fftools_ffmpeg.h:342
+
need_output
static int need_output(void)
Definition: fftools_ffmpeg.c:4103
+
InputFile::duration
int64_t duration
Definition: fftools_ffmpeg.h:431
+
set_encoder_id
static void set_encoder_id(OutputFile *of, OutputStream *ost)
Definition: fftools_ffmpeg.c:3413
+
BenchmarkTimeStamps
struct BenchmarkTimeStamps BenchmarkTimeStamps
+
filter_complex_nbthreads
__thread int filter_complex_nbthreads
Definition: fftools_ffmpeg_opt.c:188
+
opt_video_channel
int opt_video_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:327
+
OutputStream::initialized
int initialized
Definition: fftools_ffmpeg.h:558
+
no_file_overwrite
__thread int no_file_overwrite
Definition: fftools_ffmpeg_opt.c:196
+
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: fftools_ffmpeg.h:546
+
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: fftools_ffmpeg.h:548
+
InputStream::prev_sub
struct InputStream::@2 prev_sub
+
update_benchmark
static void update_benchmark(const char *fmt,...)
Definition: fftools_ffmpeg.c:805
+
OutputFilter::ost
struct OutputStream * ost
Definition: fftools_ffmpeg.h:290
+
print_final_stats
static void print_final_stats(int64_t total_size)
Definition: fftools_ffmpeg.c:1694
+
current_time
__thread BenchmarkTimeStamps current_time
Definition: fftools_ffmpeg.c:171
+
OutputFilter::channel_layouts
uint64_t * channel_layouts
Definition: fftools_ffmpeg.h:307
+
InputFile::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:440
+
OPT_EXPERT
#define OPT_EXPERT
Definition: fftools_cmdutils.h:195
+
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: fftools_ffmpeg.h:434
+
opt_recording_timestamp
int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:758
+
longjmp_value
__thread volatile int longjmp_value
Definition: fftools_cmdutils.c:107
+
InputStream::reinit_filters
int reinit_filters
Definition: fftools_ffmpeg.h:393
+
copy_ts
__thread int copy_ts
Definition: fftools_ffmpeg_opt.c:176
+
OutputStream::enc
const AVCodec * enc
Definition: fftools_ffmpeg.h:502
+
get_buffer
static int get_buffer(AVCodecContext *s, AVFrame *frame, int flags)
Definition: fftools_ffmpeg.c:3121
+
nb_frames_drop
__thread int nb_frames_drop
Definition: fftools_ffmpeg.c:165
+
received_sigterm
static volatile int received_sigterm
Definition: fftools_ffmpeg.c:436
+
check_recording_time
static int check_recording_time(OutputStream *ost)
Definition: fftools_ffmpeg.c:1029
+
OPT_INT64
#define OPT_INT64
Definition: fftools_cmdutils.h:202
+
OutputStream::inputs_done
int inputs_done
Definition: fftools_ffmpeg.h:560
+
filtergraph_is_simple
int filtergraph_is_simple(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:1164
+ + + + diff --git a/docs/linux/html/d7/d4c/structffmpegkit_1_1_f_fprobe_session_1_1_public_f_fprobe_session.html b/docs/linux/html/d7/d4c/structffmpegkit_1_1_f_fprobe_session_1_1_public_f_fprobe_session.html new file mode 100644 index 0000000..2dd0afe --- /dev/null +++ b/docs/linux/html/d7/d4c/structffmpegkit_1_1_f_fprobe_session_1_1_public_f_fprobe_session.html @@ -0,0 +1,226 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFprobeSession::PublicFFprobeSession Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
ffmpegkit::FFprobeSession::PublicFFprobeSession Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PublicFFprobeSession (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
- Public Member Functions inherited from ffmpegkit::FFprobeSession
ffmpegkit::FFprobeSessionCompleteCallback getCompleteCallback ()
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ffmpegkit::FFprobeSession
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+
+

Definition at line 50 of file FFprobeSession.cpp.

+

Constructor & Destructor Documentation

+ +

◆ PublicFFprobeSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::FFprobeSession::PublicFFprobeSession::PublicFFprobeSession (const std::shared_ptr< std::list< std::string >> arguments,
const FFprobeSessionCompleteCallback completeCallback,
const ffmpegkit::LogCallback logCallback,
const LogRedirectionStrategy logRedirectionStrategy 
)
+
+inline
+
+ +

Definition at line 51 of file FFprobeSession.cpp.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d7/d4f/struct_option_group_list.html b/docs/linux/html/d7/d4f/struct_option_group_list.html new file mode 100644 index 0000000..ad4ece5 --- /dev/null +++ b/docs/linux/html/d7/d4f/struct_option_group_list.html @@ -0,0 +1,146 @@ + + + + + + + +FFmpegKit Linux API: OptionGroupList Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionGroupList Struct Reference
+
+
+ + + + + + + + +

+Data Fields

const OptionGroupDefgroup_def
 
OptionGroupgroups
 
int nb_groups
 
+

Detailed Description

+

A list of option groups that all have the same group type (e.g. input files or output files)

+ +

Definition at line 318 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ group_def

+ +
+
+ + + + +
const OptionGroupDef* OptionGroupList::group_def
+
+ +

Definition at line 319 of file fftools_cmdutils.h.

+ +
+
+ +

◆ groups

+ +
+
+ + + + +
OptionGroup* OptionGroupList::groups
+
+ +

Definition at line 321 of file fftools_cmdutils.h.

+ +
+
+ +

◆ nb_groups

+ +
+
+ + + + +
int OptionGroupList::nb_groups
+
+ +

Definition at line 322 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d7/d9e/classffmpegkit_1_1_stream_information.html b/docs/linux/html/d7/d9e/classffmpegkit_1_1_stream_information.html new file mode 100644 index 0000000..32f7366 --- /dev/null +++ b/docs/linux/html/d7/d9e/classffmpegkit_1_1_stream_information.html @@ -0,0 +1,1132 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::StreamInformation Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Attributes | +Private Attributes
+
+
ffmpegkit::StreamInformation Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 StreamInformation (std::shared_ptr< rapidjson::Value > streamInformationValue)
 
std::shared_ptr< int64_t > getIndex ()
 
std::shared_ptr< std::string > getType ()
 
std::shared_ptr< std::string > getCodec ()
 
std::shared_ptr< std::string > getCodecLong ()
 
std::shared_ptr< std::string > getFormat ()
 
std::shared_ptr< int64_t > getWidth ()
 
std::shared_ptr< int64_t > getHeight ()
 
std::shared_ptr< std::string > getBitrate ()
 
std::shared_ptr< std::string > getSampleRate ()
 
std::shared_ptr< std::string > getSampleFormat ()
 
std::shared_ptr< std::string > getChannelLayout ()
 
std::shared_ptr< std::string > getSampleAspectRatio ()
 
std::shared_ptr< std::string > getDisplayAspectRatio ()
 
std::shared_ptr< std::string > getAverageFrameRate ()
 
std::shared_ptr< std::string > getRealFrameRate ()
 
std::shared_ptr< std::string > getTimeBase ()
 
std::shared_ptr< std::string > getCodecTimeBase ()
 
std::shared_ptr< rapidjson::Value > getTags ()
 
std::shared_ptr< std::string > getStringProperty (const char *key)
 
std::shared_ptr< int64_t > getNumberProperty (const char *key)
 
std::shared_ptr< rapidjson::Value > getProperties (const char *key)
 
std::shared_ptr< rapidjson::Value > getAllProperties ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr const char * KeyIndex = "index"
 
static constexpr const char * KeyType = "codec_type"
 
static constexpr const char * KeyCodec = "codec_name"
 
static constexpr const char * KeyCodecLong = "codec_long_name"
 
static constexpr const char * KeyFormat = "pix_fmt"
 
static constexpr const char * KeyWidth = "width"
 
static constexpr const char * KeyHeight = "height"
 
static constexpr const char * KeyBitRate = "bit_rate"
 
static constexpr const char * KeySampleRate = "sample_rate"
 
static constexpr const char * KeySampleFormat = "sample_fmt"
 
static constexpr const char * KeyChannelLayout = "channel_layout"
 
static constexpr const char * KeySampleAspectRatio = "sample_aspect_ratio"
 
static constexpr const char * KeyDisplayAspectRatio = "display_aspect_ratio"
 
static constexpr const char * KeyAverageFrameRate = "avg_frame_rate"
 
static constexpr const char * KeyRealFrameRate = "r_frame_rate"
 
static constexpr const char * KeyTimeBase = "time_base"
 
static constexpr const char * KeyCodecTimeBase = "codec_time_base"
 
static constexpr const char * KeyTags = "tags"
 
+ + + +

+Private Attributes

std::shared_ptr< rapidjson::Value > _streamInformationValue
 
+

Detailed Description

+

Stream information class.

+ +

Definition at line 34 of file StreamInformation.h.

+

Constructor & Destructor Documentation

+ +

◆ StreamInformation()

+ +
+
+ + + + + + + + +
ffmpegkit::StreamInformation::StreamInformation (std::shared_ptr< rapidjson::Value > streamInformationValue)
+
+ +

Definition at line 22 of file StreamInformation.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getAllProperties()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::StreamInformation::getAllProperties ()
+
+

Returns all stream properties defined.

+
Returns
all stream properties in a Value or nullptr if no properties are defined
+ +

Definition at line 123 of file StreamInformation.cpp.

+ +
+
+ +

◆ getAverageFrameRate()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getAverageFrameRate ()
+
+

Returns average frame rate.

+
Returns
average frame rate in fps
+ +

Definition at line 77 of file StreamInformation.cpp.

+ +
+
+ +

◆ getBitrate()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getBitrate ()
+
+

Returns bitrate.

+
Returns
bitrate in kb/s
+ +

Definition at line 53 of file StreamInformation.cpp.

+ +
+
+ +

◆ getChannelLayout()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getChannelLayout ()
+
+

Returns channel layout.

+
Returns
channel layout
+ +

Definition at line 65 of file StreamInformation.cpp.

+ +
+
+ +

◆ getCodec()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getCodec ()
+
+

Returns stream codec.

+
Returns
stream codec
+ +

Definition at line 33 of file StreamInformation.cpp.

+ +
+
+ +

◆ getCodecLong()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getCodecLong ()
+
+

Returns stream codec in long format.

+
Returns
stream codec with additional profile and mode information
+ +

Definition at line 37 of file StreamInformation.cpp.

+ +
+
+ +

◆ getCodecTimeBase()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getCodecTimeBase ()
+
+

Returns codec time base.

+
Returns
codec time base in tbc
+ +

Definition at line 89 of file StreamInformation.cpp.

+ +
+
+ +

◆ getDisplayAspectRatio()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getDisplayAspectRatio ()
+
+

Returns display aspect ratio.

+
Returns
display aspect ratio
+ +

Definition at line 73 of file StreamInformation.cpp.

+ +
+
+ +

◆ getFormat()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getFormat ()
+
+

Returns stream format.

+
Returns
stream format
+ +

Definition at line 41 of file StreamInformation.cpp.

+ +
+
+ +

◆ getHeight()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::StreamInformation::getHeight ()
+
+

Returns height.

+
Returns
height in pixels
+ +

Definition at line 49 of file StreamInformation.cpp.

+ +
+
+ +

◆ getIndex()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::StreamInformation::getIndex ()
+
+

Returns stream index.

+
Returns
stream index, starting from zero
+ +

Definition at line 25 of file StreamInformation.cpp.

+ +
+
+ +

◆ getNumberProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::StreamInformation::getNumberProperty (const char * key)
+
+

Returns the stream property associated with the key.

+
Returns
stream property as number or nullptr if the key is not found
+ +

Definition at line 105 of file StreamInformation.cpp.

+ +
+
+ +

◆ getProperties()

+ +
+
+ + + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::StreamInformation::getProperties (const char * key)
+
+

Returns the stream properties associated with the key.

+
Returns
stream properties in a Value or nullptr if the key is not found
+ +

Definition at line 113 of file StreamInformation.cpp.

+ +
+
+ +

◆ getRealFrameRate()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getRealFrameRate ()
+
+

Returns real frame rate.

+
Returns
real frame rate in tbr
+ +

Definition at line 81 of file StreamInformation.cpp.

+ +
+
+ +

◆ getSampleAspectRatio()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getSampleAspectRatio ()
+
+

Returns sample aspect ratio.

+
Returns
sample aspect ratio
+ +

Definition at line 69 of file StreamInformation.cpp.

+ +
+
+ +

◆ getSampleFormat()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getSampleFormat ()
+
+

Returns sample format.

+
Returns
sample format
+ +

Definition at line 61 of file StreamInformation.cpp.

+ +
+
+ +

◆ getSampleRate()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getSampleRate ()
+
+

Returns sample rate.

+
Returns
sample rate in hz
+ +

Definition at line 57 of file StreamInformation.cpp.

+ +
+
+ +

◆ getStringProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getStringProperty (const char * key)
+
+

Returns the stream property associated with the key.

+
Returns
stream property as string or nullptr if the key is not found
+ +

Definition at line 97 of file StreamInformation.cpp.

+ +
+
+ +

◆ getTags()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::StreamInformation::getTags ()
+
+

Returns all tags.

+
Returns
tags Value
+ +

Definition at line 93 of file StreamInformation.cpp.

+ +
+
+ +

◆ getTimeBase()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getTimeBase ()
+
+

Returns time base.

+
Returns
time base in tbn
+ +

Definition at line 85 of file StreamInformation.cpp.

+ +
+
+ +

◆ getType()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::StreamInformation::getType ()
+
+

Returns stream type.

+
Returns
stream type; audio or video
+ +

Definition at line 29 of file StreamInformation.cpp.

+ +
+
+ +

◆ getWidth()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::StreamInformation::getWidth ()
+
+

Returns width.

+
Returns
width in pixels
+ +

Definition at line 45 of file StreamInformation.cpp.

+ +
+
+

Field Documentation

+ +

◆ _streamInformationValue

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<rapidjson::Value> ffmpegkit::StreamInformation::_streamInformationValue
+
+private
+
+ +

Definition at line 212 of file StreamInformation.h.

+ +
+
+ +

◆ KeyAverageFrameRate

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyAverageFrameRate = "avg_frame_rate"
+
+staticconstexpr
+
+ +

Definition at line 49 of file StreamInformation.h.

+ +
+
+ +

◆ KeyBitRate

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyBitRate = "bit_rate"
+
+staticconstexpr
+
+ +

Definition at line 43 of file StreamInformation.h.

+ +
+
+ +

◆ KeyChannelLayout

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyChannelLayout = "channel_layout"
+
+staticconstexpr
+
+ +

Definition at line 46 of file StreamInformation.h.

+ +
+
+ +

◆ KeyCodec

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyCodec = "codec_name"
+
+staticconstexpr
+
+ +

Definition at line 38 of file StreamInformation.h.

+ +
+
+ +

◆ KeyCodecLong

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyCodecLong = "codec_long_name"
+
+staticconstexpr
+
+ +

Definition at line 39 of file StreamInformation.h.

+ +
+
+ +

◆ KeyCodecTimeBase

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyCodecTimeBase = "codec_time_base"
+
+staticconstexpr
+
+ +

Definition at line 52 of file StreamInformation.h.

+ +
+
+ +

◆ KeyDisplayAspectRatio

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyDisplayAspectRatio = "display_aspect_ratio"
+
+staticconstexpr
+
+ +

Definition at line 48 of file StreamInformation.h.

+ +
+
+ +

◆ KeyFormat

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyFormat = "pix_fmt"
+
+staticconstexpr
+
+ +

Definition at line 40 of file StreamInformation.h.

+ +
+
+ +

◆ KeyHeight

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyHeight = "height"
+
+staticconstexpr
+
+ +

Definition at line 42 of file StreamInformation.h.

+ +
+
+ +

◆ KeyIndex

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyIndex = "index"
+
+staticconstexpr
+
+ +

Definition at line 36 of file StreamInformation.h.

+ +
+
+ +

◆ KeyRealFrameRate

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyRealFrameRate = "r_frame_rate"
+
+staticconstexpr
+
+ +

Definition at line 50 of file StreamInformation.h.

+ +
+
+ +

◆ KeySampleAspectRatio

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeySampleAspectRatio = "sample_aspect_ratio"
+
+staticconstexpr
+
+ +

Definition at line 47 of file StreamInformation.h.

+ +
+
+ +

◆ KeySampleFormat

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeySampleFormat = "sample_fmt"
+
+staticconstexpr
+
+ +

Definition at line 45 of file StreamInformation.h.

+ +
+
+ +

◆ KeySampleRate

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeySampleRate = "sample_rate"
+
+staticconstexpr
+
+ +

Definition at line 44 of file StreamInformation.h.

+ +
+
+ +

◆ KeyTags

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyTags = "tags"
+
+staticconstexpr
+
+ +

Definition at line 53 of file StreamInformation.h.

+ +
+
+ +

◆ KeyTimeBase

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyTimeBase = "time_base"
+
+staticconstexpr
+
+ +

Definition at line 51 of file StreamInformation.h.

+ +
+
+ +

◆ KeyType

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyType = "codec_type"
+
+staticconstexpr
+
+ +

Definition at line 37 of file StreamInformation.h.

+ +
+
+ +

◆ KeyWidth

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::StreamInformation::KeyWidth = "width"
+
+staticconstexpr
+
+ +

Definition at line 41 of file StreamInformation.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d7/db2/struct_x_m_l_context.html b/docs/linux/html/d7/db2/struct_x_m_l_context.html new file mode 100644 index 0000000..4eca4a4 --- /dev/null +++ b/docs/linux/html/d7/db2/struct_x_m_l_context.html @@ -0,0 +1,181 @@ + + + + + + + +FFmpegKit Linux API: XMLContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
XMLContext Struct Reference
+
+
+ + + + + + + + + + + + +

+Data Fields

const AVClass * class
 
int within_tag
 
int indent_level
 
int fully_qualified
 
int xsd_strict
 
+

Detailed Description

+
+

Definition at line 1640 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* XMLContext::class
+
+ +

Definition at line 1641 of file fftools_ffprobe.c.

+ +
+
+ +

◆ fully_qualified

+ +
+
+ + + + +
int XMLContext::fully_qualified
+
+ +

Definition at line 1644 of file fftools_ffprobe.c.

+ +
+
+ +

◆ indent_level

+ +
+
+ + + + +
int XMLContext::indent_level
+
+ +

Definition at line 1643 of file fftools_ffprobe.c.

+ +
+
+ +

◆ within_tag

+ +
+
+ + + + +
int XMLContext::within_tag
+
+ +

Definition at line 1642 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xsd_strict

+ +
+
+ + + + +
int XMLContext::xsd_strict
+
+ +

Definition at line 1645 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d7/db3/fftools__ffmpeg_8h.html b/docs/linux/html/d7/db3/fftools__ffmpeg_8h.html new file mode 100644 index 0000000..2041d45 --- /dev/null +++ b/docs/linux/html/d7/db3/fftools__ffmpeg_8h.html @@ -0,0 +1,4749 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Macros | +Typedefs | +Enumerations | +Functions | +Variables
+
+
fftools_ffmpeg.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  HWAccel
 
struct  HWDevice
 
struct  StreamMap
 
struct  AudioChannelMap
 
struct  OptionsContext
 
struct  InputFilter
 
struct  OutputFilter
 
struct  FilterGraph
 
struct  InputStream
 
struct  InputStream::sub2video
 
struct  InputFile
 
struct  OutputStream
 
struct  OutputFile
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define VSYNC_AUTO   -1
 
#define VSYNC_PASSTHROUGH   0
 
#define VSYNC_CFR   1
 
#define VSYNC_VFR   2
 
#define VSYNC_VSCFR   0xfe
 
#define VSYNC_DROP   0xff
 
#define MAX_STREAMS   1024 /* arbitrary sanity check value */
 
#define DECODING_FOR_OST   1
 
#define DECODING_FOR_FILTER   2
 
#define ABORT_ON_FLAG_EMPTY_OUTPUT   (1 << 0)
 
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM   (1 << 1)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct HWAccel HWAccel
 
typedef struct HWDevice HWDevice
 
typedef struct StreamMap StreamMap
 
typedef struct OptionsContext OptionsContext
 
typedef struct InputFilter InputFilter
 
typedef struct OutputFilter OutputFilter
 
typedef struct FilterGraph FilterGraph
 
typedef struct InputStream InputStream
 
typedef struct InputFile InputFile
 
typedef struct OutputStream OutputStream
 
typedef struct OutputFile OutputFile
 
+ + + + + + + +

+Enumerations

enum  HWAccelID { HWACCEL_NONE = 0, +HWACCEL_AUTO, +HWACCEL_GENERIC, +HWACCEL_VIDEOTOOLBOX + }
 
enum  forced_keyframes_const {
+  FKF_N, +FKF_N_FORCED, +FKF_PREV_FORCED_N, +FKF_PREV_FORCED_T, +
+  FKF_T, +FKF_NB +
+ }
 
enum  OSTFinished { ENCODER_FINISHED = 1, +MUXER_FINISHED = 2 + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void term_init (void)
 
void term_exit (void)
 
void reset_options (OptionsContext *o, int is_input)
 
void show_usage (void)
 
void opt_output_file (void *optctx, const char *filename)
 
void remove_avoptions (AVDictionary **a, AVDictionary *b)
 
void assert_avoptions (AVDictionary *m)
 
int guess_input_channel_layout (InputStream *ist)
 
enum AVPixelFormat choose_pixel_fmt (AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target)
 
void choose_sample_fmt (AVStream *st, const AVCodec *codec)
 
int configure_filtergraph (FilterGraph *fg)
 
int configure_output_filter (FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
 
void check_filter_outputs (void)
 
int ist_in_filtergraph (FilterGraph *fg, InputStream *ist)
 
int filtergraph_is_simple (FilterGraph *fg)
 
int init_simple_filtergraph (InputStream *ist, OutputStream *ost)
 
int init_complex_filtergraph (FilterGraph *fg)
 
void sub2video_update (InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
 
int ifilter_parameters_from_frame (InputFilter *ifilter, const AVFrame *frame)
 
int ffmpeg_parse_options (int argc, char **argv)
 
int videotoolbox_init (AVCodecContext *s)
 
int qsv_init (AVCodecContext *s)
 
HWDevicehw_device_get_by_name (const char *name)
 
int hw_device_init_from_string (const char *arg, HWDevice **dev)
 
void hw_device_free_all (void)
 
int hw_device_setup_for_decode (InputStream *ist)
 
int hw_device_setup_for_encode (OutputStream *ost)
 
int hw_device_setup_for_filter (FilterGraph *fg)
 
int hwaccel_decode_init (AVCodecContext *avctx)
 
void set_report_callback (void(*callback)(int, float, float, int64_t, int, double, double))
 
void cancel_operation (long id)
 
int opt_map (void *optctx, const char *opt, const char *arg)
 
int opt_map_channel (void *optctx, const char *opt, const char *arg)
 
int opt_recording_timestamp (void *optctx, const char *opt, const char *arg)
 
int opt_data_frames (void *optctx, const char *opt, const char *arg)
 
int opt_progress (void *optctx, const char *opt, const char *arg)
 
int opt_target (void *optctx, const char *opt, const char *arg)
 
int opt_vsync (void *optctx, const char *opt, const char *arg)
 
int opt_abort_on (void *optctx, const char *opt, const char *arg)
 
int opt_stats_period (void *optctx, const char *opt, const char *arg)
 
int opt_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_profile (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex_script (void *optctx, const char *opt, const char *arg)
 
int opt_attach (void *optctx, const char *opt, const char *arg)
 
int opt_video_frames (void *optctx, const char *opt, const char *arg)
 
int opt_video_codec (void *optctx, const char *opt, const char *arg)
 
int opt_sameq (void *optctx, const char *opt, const char *arg)
 
int opt_timecode (void *optctx, const char *opt, const char *arg)
 
int opt_vstats_file (void *optctx, const char *opt, const char *arg)
 
int opt_vstats (void *optctx, const char *opt, const char *arg)
 
int opt_old2new (void *optctx, const char *opt, const char *arg)
 
int opt_streamid (void *optctx, const char *opt, const char *arg)
 
int opt_bitrate (void *optctx, const char *opt, const char *arg)
 
int show_hwaccels (void *optctx, const char *opt, const char *arg)
 
int opt_video_filters (void *optctx, const char *opt, const char *arg)
 
int opt_audio_frames (void *optctx, const char *opt, const char *arg)
 
int opt_audio_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_audio_codec (void *optctx, const char *opt, const char *arg)
 
int opt_channel_layout (void *optctx, const char *opt, const char *arg)
 
int opt_preset (void *optctx, const char *opt, const char *arg)
 
int opt_audio_filters (void *optctx, const char *opt, const char *arg)
 
int opt_subtitle_codec (void *optctx, const char *opt, const char *arg)
 
int opt_video_channel (void *optctx, const char *opt, const char *arg)
 
int opt_video_standard (void *optctx, const char *opt, const char *arg)
 
int opt_sdp_file (void *optctx, const char *opt, const char *arg)
 
int opt_data_codec (void *optctx, const char *opt, const char *arg)
 
int opt_init_hw_device (void *optctx, const char *opt, const char *arg)
 
int opt_filter_hw_device (void *optctx, const char *opt, const char *arg)
 
void add_input_streams (OptionsContext *o, AVFormatContext *ic)
 
void assert_file_overwrite (const char *filename)
 
void dump_attachment (AVStream *st, const char *filename)
 
uint8_t * get_line (AVIOContext *s)
 
void uninit_options (OptionsContext *o)
 
void init_options (OptionsContext *o)
 
AVDictionary * strip_specifiers (AVDictionary *dict)
 
void parse_meta_type (char *arg, char *type, int *index, const char **stream_spec)
 
int fftools_copy_metadata (char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
 
const AVCodec * find_codec_or_die (const char *name, enum AVMediaType type, int encoder)
 
const AVCodec * choose_decoder (OptionsContext *o, AVFormatContext *s, AVStream *st)
 
int open_input_file (OptionsContext *o, const char *filename)
 
int get_preset_file_2 (const char *preset_name, const char *codec_name, AVIOContext **s)
 
int choose_encoder (OptionsContext *o, AVFormatContext *s, OutputStream *ost)
 
OutputStreamnew_output_stream (OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
 
void parse_matrix_coeffs (uint16_t *dest, const char *str)
 
uint8_t * fftools_read_file (const char *filename)
 
char * get_ost_filters (OptionsContext *o, AVFormatContext *oc, OutputStream *ost)
 
void check_streamcopy_filters (OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type)
 
OutputStreamnew_video_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_audio_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_data_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_unknown_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_attachment_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_subtitle_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
int copy_chapters (InputFile *ifile, OutputFile *ofile, int copy_metadata)
 
void init_output_filter (OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc)
 
int init_complex_filters (void)
 
int open_output_file (OptionsContext *o, const char *filename)
 
int opt_default_new (OptionsContext *o, const char *opt, const char *arg)
 
int open_files (OptionGroupList *l, const char *inout, int(*open_file)(OptionsContext *, const char *))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

const char *const forced_keyframes_const_names []
 
__thread InputStream ** input_streams
 
__thread int nb_input_streams
 
__thread InputFile ** input_files
 
__thread int nb_input_files
 
__thread OutputStream ** output_streams
 
__thread int nb_output_streams
 
__thread OutputFile ** output_files
 
__thread int nb_output_files
 
__thread FilterGraph ** filtergraphs
 
__thread int nb_filtergraphs
 
__thread char * vstats_filename
 
__thread char * sdp_filename
 
__thread float audio_drift_threshold
 
__thread float dts_delta_threshold
 
__thread float dts_error_threshold
 
__thread int audio_volume
 
__thread int audio_sync_method
 
__thread int video_sync_method
 
__thread float frame_drop_threshold
 
__thread int do_benchmark
 
__thread int do_benchmark_all
 
__thread int do_deinterlace
 
__thread int do_hex_dump
 
__thread int do_pkt_dump
 
__thread int copy_ts
 
__thread int start_at_zero
 
__thread int copy_tb
 
__thread int debug_ts
 
__thread int exit_on_error
 
__thread int abort_on_flags
 
__thread int print_stats
 
__thread int64_t stats_period
 
__thread int qp_hist
 
__thread int stdin_interaction
 
__thread int frame_bits_per_raw_sample
 
__thread AVIOContext * progress_avio
 
__thread float max_error_rate
 
__thread char * videotoolbox_pixfmt
 
__thread int filter_nbthreads
 
__thread int filter_complex_nbthreads
 
__thread int vstats_version
 
__thread int auto_conversion_filters
 
const __thread AVIOInterruptCB int_cb
 
const HWAccel hwaccels []
 
__thread HWDevicefilter_hw_device
 
+

Macro Definition Documentation

+ +

◆ ABORT_ON_FLAG_EMPTY_OUTPUT

+ +
+
+ + + + +
#define ABORT_ON_FLAG_EMPTY_OUTPUT   (1 << 0)
+
+ +

Definition at line 468 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM

+ +
+
+ + + + +
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM   (1 << 1)
+
+ +

Definition at line 469 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ DECODING_FOR_FILTER

+ +
+
+ + + + +
#define DECODING_FOR_FILTER   2
+
+ +

Definition at line 331 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ DECODING_FOR_OST

+ +
+
+ + + + +
#define DECODING_FOR_OST   1
+
+ +

Definition at line 330 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ MAX_STREAMS

+ +
+
+ + + + +
#define MAX_STREAMS   1024 /* arbitrary sanity check value */
+
+ +

Definition at line 80 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_AUTO

+ +
+
+ + + + +
#define VSYNC_AUTO   -1
+
+ +

Definition at line 73 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_CFR

+ +
+
+ + + + +
#define VSYNC_CFR   1
+
+ +

Definition at line 75 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_DROP

+ +
+
+ + + + +
#define VSYNC_DROP   0xff
+
+ +

Definition at line 78 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_PASSTHROUGH

+ +
+
+ + + + +
#define VSYNC_PASSTHROUGH   0
+
+ +

Definition at line 74 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_VFR

+ +
+
+ + + + +
#define VSYNC_VFR   2
+
+ +

Definition at line 76 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ VSYNC_VSCFR

+ +
+
+ + + + +
#define VSYNC_VSCFR   0xfe
+
+ +

Definition at line 77 of file fftools_ffmpeg.h.

+ +
+
+

Typedef Documentation

+ +

◆ FilterGraph

+ +
+
+ + + + +
typedef struct FilterGraph FilterGraph
+
+ +
+
+ +

◆ HWAccel

+ +
+
+ + + + +
typedef struct HWAccel HWAccel
+
+ +
+
+ +

◆ HWDevice

+ +
+
+ + + + +
typedef struct HWDevice HWDevice
+
+ +
+
+ +

◆ InputFile

+ +
+
+ + + + +
typedef struct InputFile InputFile
+
+ +
+
+ +

◆ InputFilter

+ +
+
+ + + + +
typedef struct InputFilter InputFilter
+
+ +
+
+ +

◆ InputStream

+ +
+
+ + + + +
typedef struct InputStream InputStream
+
+ +
+
+ +

◆ OptionsContext

+ +
+
+ + + + +
typedef struct OptionsContext OptionsContext
+
+ +
+
+ +

◆ OutputFile

+ +
+
+ + + + +
typedef struct OutputFile OutputFile
+
+ +
+
+ +

◆ OutputFilter

+ +
+
+ + + + +
typedef struct OutputFilter OutputFilter
+
+ +
+
+ +

◆ OutputStream

+ +
+
+ + + + +
typedef struct OutputStream OutputStream
+
+ +
+
+ +

◆ StreamMap

+ +
+
+ + + + +
typedef struct StreamMap StreamMap
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ forced_keyframes_const

+ +
+
+ + + + +
enum forced_keyframes_const
+
+ + + + + + + +
Enumerator
FKF_N 
FKF_N_FORCED 
FKF_PREV_FORCED_N 
FKF_PREV_FORCED_T 
FKF_T 
FKF_NB 
+ +

Definition at line 459 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ HWAccelID

+ +
+
+ + + + +
enum HWAccelID
+
+ + + + + +
Enumerator
HWACCEL_NONE 
HWACCEL_AUTO 
HWACCEL_GENERIC 
HWACCEL_VIDEOTOOLBOX 
+ +

Definition at line 82 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ OSTFinished

+ +
+
+ + + + +
enum OSTFinished
+
+ + + +
Enumerator
ENCODER_FINISHED 
MUXER_FINISHED 
+ +

Definition at line 473 of file fftools_ffmpeg.h.

+ +
+
+

Function Documentation

+ +

◆ add_input_streams()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void add_input_streams (OptionsContexto,
AVFormatContext * ic 
)
+
+ +

Definition at line 819 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ assert_avoptions()

+ +
+
+ + + + + + + + +
void assert_avoptions (AVDictionary * m)
+
+ +

Definition at line 791 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ assert_file_overwrite()

+ +
+
+ + + + + + + + +
void assert_file_overwrite (const char * filename)
+
+ +

Definition at line 1034 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ cancel_operation()

+ +
+
+ + + + + + + + +
void cancel_operation (long id)
+
+ +

Definition at line 5199 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ check_filter_outputs()

+ +
+
+ + + + + + + + +
void check_filter_outputs (void )
+
+ +

Definition at line 643 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ check_streamcopy_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void check_streamcopy_filters (OptionsContexto,
AVFormatContext * oc,
const OutputStreamost,
enum AVMediaType type 
)
+
+ +

Definition at line 1731 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ choose_decoder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const AVCodec* choose_decoder (OptionsContexto,
AVFormatContext * s,
AVStream * st 
)
+
+ +

Definition at line 802 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ choose_encoder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int choose_encoder (OptionsContexto,
AVFormatContext * s,
OutputStreamost 
)
+
+ +

Definition at line 1444 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ choose_pixel_fmt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
enum AVPixelFormat choose_pixel_fmt (AVStream * st,
AVCodecContext * avctx,
const AVCodec * codec,
enum AVPixelFormat target 
)
+
+ +

Definition at line 65 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ choose_sample_fmt()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void choose_sample_fmt (AVStream * st,
const AVCodec * codec 
)
+
+ +
+
+ +

◆ configure_filtergraph()

+ +
+
+ + + + + + + + +
int configure_filtergraph (FilterGraphfg)
+
+ +

Definition at line 963 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ configure_output_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int configure_output_filter (FilterGraphfg,
OutputFilterofilter,
AVFilterInOut * out 
)
+
+ +

Definition at line 629 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ copy_chapters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int copy_chapters (InputFileifile,
OutputFileofile,
int copy_metadata 
)
+
+ +

Definition at line 2113 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dump_attachment()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void dump_attachment (AVStream * st,
const char * filename 
)
+
+ +

Definition at line 1077 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ ffmpeg_parse_options()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ffmpeg_parse_options (int argc,
char ** argv 
)
+
+ +
+
+ +

◆ fftools_copy_metadata()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int fftools_copy_metadata (char * outspec,
char * inspec,
AVFormatContext * oc,
AVFormatContext * ic,
OptionsContexto 
)
+
+ +

Definition at line 668 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ fftools_read_file()

+ +
+
+ + + + + + + + +
uint8_t* fftools_read_file (const char * filename)
+
+ +

Definition at line 1683 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filtergraph_is_simple()

+ +
+
+ + + + + + + + +
int filtergraph_is_simple (FilterGraphfg)
+
+ +

Definition at line 1164 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ find_codec_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const AVCodec* find_codec_or_die (const char * name,
enum AVMediaType type,
int encoder 
)
+
+ +

Definition at line 773 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_line()

+ +
+
+ + + + + + + + +
uint8_t* get_line (AVIOContext * s)
+
+ +

Definition at line 1399 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_ost_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* get_ost_filters (OptionsContexto,
AVFormatContext * oc,
OutputStreamost 
)
+
+ +

Definition at line 1711 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_preset_file_2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int get_preset_file_2 (const char * preset_name,
const char * codec_name,
AVIOContext ** s 
)
+
+ +

Definition at line 1418 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ guess_input_channel_layout()

+ +
+
+ + + + + + + + +
int guess_input_channel_layout (InputStreamist)
+
+ +

Definition at line 2303 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ hw_device_free_all()

+ +
+
+ + + + + + + + +
void hw_device_free_all (void )
+
+ +

Definition at line 283 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_get_by_name()

+ +
+
+ + + + + + + + +
HWDevice* hw_device_get_by_name (const char * name)
+
+ +

Definition at line 53 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_init_from_string()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int hw_device_init_from_string (const char * arg,
HWDevice ** dev 
)
+
+ +

Definition at line 103 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_decode()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_decode (InputStreamist)
+
+ +

Definition at line 312 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_encode()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_encode (OutputStreamost)
+
+ +

Definition at line 440 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hw_device_setup_for_filter()

+ +
+
+ + + + + + + + +
int hw_device_setup_for_filter (FilterGraphfg)
+
+ +

Definition at line 546 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ hwaccel_decode_init()

+ +
+
+ + + + + + + + +
int hwaccel_decode_init (AVCodecContext * avctx)
+
+ +

Definition at line 537 of file fftools_ffmpeg_hw.c.

+ +
+
+ +

◆ ifilter_parameters_from_frame()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ifilter_parameters_from_frame (InputFilterifilter,
const AVFrame * frame 
)
+
+ +

Definition at line 1141 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ init_complex_filtergraph()

+ +
+
+ + + + + + + + +
int init_complex_filtergraph (FilterGraphfg)
+
+ +

Definition at line 314 of file fftools_ffmpeg_filter.c.

+ +
+
+ +

◆ init_complex_filters()

+ +
+
+ + + + + + + + +
int init_complex_filters (void )
+
+ +

Definition at line 2198 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_options()

+ +
+
+ + + + + + + + +
void init_options (OptionsContexto)
+
+ +

Definition at line 239 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_output_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void init_output_filter (OutputFilterofilter,
OptionsContexto,
AVFormatContext * oc 
)
+
+ +

Definition at line 2156 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_simple_filtergraph()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int init_simple_filtergraph (InputStreamist,
OutputStreamost 
)
+
+ +
+
+ +

◆ ist_in_filtergraph()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ist_in_filtergraph (FilterGraphfg,
InputStreamist 
)
+
+ +
+
+ +

◆ new_attachment_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_attachment_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2055 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_audio_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_audio_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 1956 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_data_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_data_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2029 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_output_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_output_stream (OptionsContexto,
AVFormatContext * oc,
enum AVMediaType type,
int source_index 
)
+
+ +

Definition at line 1479 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_subtitle_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_subtitle_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2063 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_unknown_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_unknown_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2042 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_video_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_video_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 1745 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ open_files()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int open_files (OptionGroupListl,
const char * inout,
int(*)(OptionsContext *, const char *) open_file 
)
+
+ +
+
+ +

◆ open_input_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int open_input_file (OptionsContexto,
const char * filename 
)
+
+ +

Definition at line 1109 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ open_output_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int open_output_file (OptionsContexto,
const char * filename 
)
+
+ +

Definition at line 2210 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_abort_on()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_abort_on (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 284 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_attach()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_attach (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 481 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 339 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3190 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3046 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3258 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_bitrate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_bitrate (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3138 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_channel_layout()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_channel_layout (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3222 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 357 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3052 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_default_new()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_default_new (OptionsContexto,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3058 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3264 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex_script()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex_script (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3279 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 620 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_init_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_init_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 605 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 363 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 489 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_old2new()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_old2new (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3126 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_output_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void opt_output_file (void * optctx,
const char * filename 
)
+
+ +
+
+ +

◆ opt_preset()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_preset (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3078 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_profile()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_profile (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3172 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_progress()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_progress (void * optctx,
const char * opt,
const char * arg 
)
+
+ +
+
+ +

◆ opt_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3154 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_recording_timestamp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_recording_timestamp (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 758 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sameq()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sameq (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 318 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sdp_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sdp_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 566 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_stats_period()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_stats_period (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 303 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_streamid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_streamid (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2091 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_subtitle_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_subtitle_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 351 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_target()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_target (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2873 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_timecode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_timecode (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3208 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 327 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 345 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3184 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3040 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_standard()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_standard (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 333 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3024 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3017 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vsync (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3196 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ parse_matrix_coeffs()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void parse_matrix_coeffs (uint16_t * dest,
const char * str 
)
+
+ +

Definition at line 1665 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ parse_meta_type()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void parse_meta_type (char * arg,
char * type,
intindex,
const char ** stream_spec 
)
+
+

Parse a metadata specifier passed as 'arg' parameter.

Parameters
+ + + + + +
argmetadata string to parse
typemetadata type is written here – g(lobal)/s(tream)/c(hapter)/p(rogram)
indexfor type c/p, chapter/program index is written here
stream_specfor type s, the stream specifier is written here
+
+
+ +

Definition at line 641 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ qsv_init()

+ +
+
+ + + + + + + + +
int qsv_init (AVCodecContext * s)
+
+ +
+
+ +

◆ remove_avoptions()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void remove_avoptions (AVDictionary ** a,
AVDictionary * b 
)
+
+ +

Definition at line 782 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ reset_options()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void reset_options (OptionsContexto,
int is_input 
)
+
+ +
+
+ +

◆ set_report_callback()

+ +
+
+ + + + + + + + +
void set_report_callback (void(*)(int, float, float, int64_t, int, double, double) callback)
+
+ +

Definition at line 5194 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ show_hwaccels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_hwaccels (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 254 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ show_usage()

+ +
+
+ + + + + + + + +
void show_usage (void )
+
+ +

Definition at line 3369 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ strip_specifiers()

+ +
+
+ + + + + + + + +
AVDictionary* strip_specifiers (AVDictionary * dict)
+
+ +

Definition at line 267 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ sub2video_update()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void sub2video_update (InputStreamist,
int64_t heartbeat_pts,
AVSubtitle * sub 
)
+
+ +

Definition at line 334 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ term_exit()

+ +
+
+ + + + + + + + +
void term_exit (void )
+
+ +

Definition at line 430 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ term_init()

+ +
+
+ + + + + + + + +
void term_init (void )
+
+ +

Definition at line 495 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ uninit_options()

+ +
+
+ + + + + + + + +
void uninit_options (OptionsContexto)
+
+ +

Definition at line 207 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ videotoolbox_init()

+ +
+
+ + + + + + + + +
int videotoolbox_init (AVCodecContext * s)
+
+ +
+
+

Variable Documentation

+ +

◆ abort_on_flags

+ +
+
+ + + + +
__thread int abort_on_flags
+
+ +

Definition at line 181 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_drift_threshold

+ +
+
+ + + + +
__thread float audio_drift_threshold
+
+ +

Definition at line 163 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_sync_method

+ +
+
+ + + + +
__thread int audio_sync_method
+
+ +

Definition at line 168 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_volume

+ +
+
+ + + + +
__thread int audio_volume
+
+ +

Definition at line 167 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ auto_conversion_filters

+ +
+
+ + + + +
__thread int auto_conversion_filters
+
+ +

Definition at line 190 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_tb

+ +
+
+ + + + +
__thread int copy_tb
+
+ +

Definition at line 178 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_ts

+ +
+
+ + + + +
__thread int copy_ts
+
+ +

Definition at line 176 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ debug_ts

+ +
+
+ + + + +
__thread int debug_ts
+
+ +

Definition at line 179 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_benchmark

+ +
+
+ + + + +
__thread int do_benchmark
+
+ +

Definition at line 172 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_benchmark_all

+ +
+
+ + + + +
__thread int do_benchmark_all
+
+ +

Definition at line 173 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_deinterlace

+ +
+
+ + + + +
__thread int do_deinterlace
+
+ +

Definition at line 171 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_hex_dump

+ +
+
+ + + + +
__thread int do_hex_dump
+
+ +

Definition at line 174 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_pkt_dump

+ +
+
+ + + + +
__thread int do_pkt_dump
+
+ +

Definition at line 175 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dts_delta_threshold

+ +
+
+ + + + +
__thread float dts_delta_threshold
+
+ +

Definition at line 164 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dts_error_threshold

+ +
+
+ + + + +
__thread float dts_error_threshold
+
+ +

Definition at line 165 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ exit_on_error

+ +
+
+ + + + +
__thread int exit_on_error
+
+ +

Definition at line 180 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_complex_nbthreads

+ +
+
+ + + + +
__thread int filter_complex_nbthreads
+
+ +

Definition at line 188 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_hw_device

+ +
+
+ + + + +
__thread HWDevice* filter_hw_device
+
+ +

Definition at line 158 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_nbthreads

+ +
+
+ + + + +
__thread int filter_nbthreads
+
+ +

Definition at line 187 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filtergraphs

+ +
+
+ + + + +
__thread FilterGraph** filtergraphs
+
+ +

Definition at line 186 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ forced_keyframes_const_names

+ +
+
+ + + + +
const char* const forced_keyframes_const_names[]
+
+ +

Definition at line 142 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ frame_bits_per_raw_sample

+ +
+
+ + + + +
__thread int frame_bits_per_raw_sample
+
+ +

Definition at line 185 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ frame_drop_threshold

+ +
+
+ + + + +
__thread float frame_drop_threshold
+
+ +

Definition at line 170 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ hwaccels

+ +
+
+ + + + +
const HWAccel hwaccels[]
+
+ +

Definition at line 152 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ input_files

+ +
+
+ + + + +
__thread InputFile** input_files
+
+ +

Definition at line 178 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ input_streams

+ +
+
+ + + + +
__thread InputStream** input_streams
+
+ +

Definition at line 176 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ int_cb

+ +
+
+ + + + +
const __thread AVIOInterruptCB int_cb
+
+ +

Definition at line 617 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ max_error_rate

+ +
+
+ + + + +
__thread float max_error_rate
+
+ +

Definition at line 186 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ nb_filtergraphs

+ +
+
+ + + + +
__thread int nb_filtergraphs
+
+ +

Definition at line 187 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_input_files

+ +
+
+ + + + +
__thread int nb_input_files
+
+ +

Definition at line 179 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_input_streams

+ +
+
+ + + + +
__thread int nb_input_streams
+
+ +

Definition at line 177 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_output_files

+ +
+
+ + + + +
__thread int nb_output_files
+
+ +

Definition at line 184 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ nb_output_streams

+ +
+
+ + + + +
__thread int nb_output_streams
+
+ +

Definition at line 182 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ output_files

+ +
+
+ + + + +
__thread OutputFile** output_files
+
+ +

Definition at line 183 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ output_streams

+ +
+
+ + + + +
__thread OutputStream** output_streams
+
+ +

Definition at line 181 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ print_stats

+ +
+
+ + + + +
__thread int print_stats
+
+ +

Definition at line 182 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ progress_avio

+ +
+
+ + + + +
__thread AVIOContext* progress_avio
+
+ +

Definition at line 172 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ qp_hist

+ +
+
+ + + + +
__thread int qp_hist
+
+ +

Definition at line 183 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ sdp_filename

+ +
+
+ + + + +
__thread char* sdp_filename
+
+ +

Definition at line 161 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ start_at_zero

+ +
+
+ + + + +
__thread int start_at_zero
+
+ +

Definition at line 177 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ stats_period

+ +
+
+ + + + +
__thread int64_t stats_period
+
+ +

Definition at line 191 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ stdin_interaction

+ +
+
+ + + + +
__thread int stdin_interaction
+
+ +

Definition at line 184 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ video_sync_method

+ +
+
+ + + + +
__thread int video_sync_method
+
+ +

Definition at line 169 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ videotoolbox_pixfmt

+ +
+
+ + + + +
__thread char* videotoolbox_pixfmt
+
+ +
+
+ +

◆ vstats_filename

+ +
+
+ + + + +
__thread char* vstats_filename
+
+ +

Definition at line 160 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ vstats_version

+ +
+
+ + + + +
__thread int vstats_version
+
+ +

Definition at line 189 of file fftools_ffmpeg_opt.c.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d7/db3/fftools__ffmpeg_8h_source.html b/docs/linux/html/d7/db3/fftools__ffmpeg_8h_source.html new file mode 100644 index 0000000..8b98405 --- /dev/null +++ b/docs/linux/html/d7/db3/fftools__ffmpeg_8h_source.html @@ -0,0 +1,1410 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffmpeg.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * This file is part of FFmpeg.
+
3  *
+
4  * FFmpeg is free software; you can redistribute it and/or
+
5  * modify it under the terms of the GNU Lesser General Public
+
6  * License as published by the Free Software Foundation; either
+
7  * version 2.1 of the License, or (at your option) any later version.
+
8  *
+
9  * FFmpeg is distributed in the hope that it will be useful,
+
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
12  * Lesser General Public License for more details.
+
13  *
+
14  * You should have received a copy of the GNU Lesser General Public
+
15  * License along with FFmpeg; if not, write to the Free Software
+
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
17  */
+
18 
+
19 /*
+
20  * CHANGES 06.2020
+
21  * - cancel_operation() method signature updated with id
+
22  *
+
23  * CHANGES 01.2020
+
24  * - ffprobe support changes
+
25  *
+
26  * CHANGES 12.2019
+
27  * - Concurrent execution support
+
28  *
+
29  * CHANGES 03.2019
+
30  * --------------------------------------------------------
+
31  * - config.h include removed
+
32  *
+
33  * CHANGES 08.2018
+
34  * --------------------------------------------------------
+
35  * - fftools_ prefix added to file name and include guards
+
36  * - set_report_callback() method declared
+
37  * - cancel_operation() method declared
+
38  *
+
39  * CHANGES 07.2018
+
40  * --------------------------------------------------------
+
41  * - Include guards renamed
+
42  */
+
43 
+
44 #ifndef FFTOOLS_FFMPEG_H
+
45 #define FFTOOLS_FFMPEG_H
+
46 
+
47 #include <stdint.h>
+
48 #include <stdio.h>
+
49 #include <signal.h>
+
50 
+
51 #include "fftools_cmdutils.h"
+
52 
+
53 #include "libavformat/avformat.h"
+
54 #include "libavformat/avio.h"
+
55 
+
56 #include "libavcodec/avcodec.h"
+
57 #include "libavcodec/bsf.h"
+
58 
+
59 #include "libavfilter/avfilter.h"
+
60 
+
61 #include "libavutil/avutil.h"
+
62 #include "libavutil/dict.h"
+
63 #include "libavutil/eval.h"
+
64 #include "libavutil/fifo.h"
+
65 #include "libavutil/hwcontext.h"
+
66 #include "libavutil/pixfmt.h"
+
67 #include "libavutil/rational.h"
+
68 #include "libavutil/thread.h"
+
69 #include "libavutil/threadmessage.h"
+
70 
+
71 #include "libswresample/swresample.h"
+
72 
+
73 #define VSYNC_AUTO -1
+
74 #define VSYNC_PASSTHROUGH 0
+
75 #define VSYNC_CFR 1
+
76 #define VSYNC_VFR 2
+
77 #define VSYNC_VSCFR 0xfe
+
78 #define VSYNC_DROP 0xff
+
79 
+
80 #define MAX_STREAMS 1024 /* arbitrary sanity check value */
+
81 
+
82 enum HWAccelID {
+ + + + +
87 };
+
88 
+
89 typedef struct HWAccel {
+
90  const char *name;
+
91  int (*init)(AVCodecContext *s);
+
92  enum HWAccelID id;
+
93  enum AVPixelFormat pix_fmt;
+
94 } HWAccel;
+
95 
+
96 typedef struct HWDevice {
+
97  const char *name;
+
98  enum AVHWDeviceType type;
+
99  AVBufferRef *device_ref;
+
100 } HWDevice;
+
101 
+
102 /* select an input stream for an output stream */
+
103 typedef struct StreamMap {
+
104  int disabled; /* 1 is this mapping is disabled by a negative map */
+ + + + +
109  char *linklabel; /* name of an output link, for mapping lavfi outputs */
+
110 } StreamMap;
+
111 
+
112 typedef struct {
+
113  int file_idx, stream_idx, channel_idx; // input
+
114  int ofile_idx, ostream_idx; // output
+ +
116 
+
117 typedef struct OptionsContext {
+ +
119 
+
120  /* input/output options */
+
121  int64_t start_time;
+
122  int64_t start_time_eof;
+ +
124  const char *format;
+
125 
+ + + + + + + + + + + + + + +
140 
+
141  /* input options */
+ +
143  int loop;
+
144  int rate_emu;
+
145  float readrate;
+ + +
148 
+ + + + + + + + + + + + +
161 
+
162  /* output options */
+ + +
165  AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
+
166  int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
+ + + +
170  const char **attachments;
+ +
172 
+ +
174 
+
175  int64_t recording_time;
+
176  int64_t stop_time;
+
177  uint64_t limit_filesize;
+
178  float mux_preload;
+ +
180  int shortest;
+
181  int bitexact;
+
182 
+ + + + +
187 
+
188  /* indexed by output file stream index */
+ + +
191 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
239  int nb_pass;
+ + + + + + + + + +
249  int nb_apad;
+ + + + + + + + + + + + + +
263 
+
264 typedef struct InputFilter {
+
265  AVFilterContext *filter;
+
266  struct InputStream *ist;
+ +
268  uint8_t *name;
+
269  enum AVMediaType type; // AVMEDIA_TYPE_SUBTITLE for sub2video
+
270 
+
271  AVFifoBuffer *frame_queue;
+
272 
+
273  // parameters configured for this input
+
274  int format;
+
275 
+
276  int width, height;
+ +
278 
+ +
280  int channels;
+
281  uint64_t channel_layout;
+
282 
+
283  AVBufferRef *hw_frames_ctx;
+
284 
+
285  int eof;
+
286 } InputFilter;
+
287 
+
288 typedef struct OutputFilter {
+
289  AVFilterContext *filter;
+
290  struct OutputStream *ost;
+ +
292  uint8_t *name;
+
293 
+
294  /* temporary storage until stream maps are processed */
+
295  AVFilterInOut *out_tmp;
+
296  enum AVMediaType type;
+
297 
+
298  /* desired output stream properties */
+
299  int width, height;
+
300  AVRational frame_rate;
+
301  int format;
+ +
303  uint64_t channel_layout;
+
304 
+
305  // those are only set if no format is specified and the encoder gives us multiple options
+
306  int *formats;
+
307  uint64_t *channel_layouts;
+ +
309 } OutputFilter;
+
310 
+
311 typedef struct FilterGraph {
+
312  int index;
+
313  const char *graph_desc;
+
314 
+
315  AVFilterGraph *graph;
+ +
317 
+ + + + +
322 } FilterGraph;
+
323 
+
324 typedef struct InputStream {
+ +
326  AVStream *st;
+
327  int discard; /* true if stream data should be discarded */
+ +
329  int decoding_needed; /* non zero if the packets must be decoded in 'raw_fifo', see DECODING_FOR_* */
+
330 #define DECODING_FOR_OST 1
+
331 #define DECODING_FOR_FILTER 2
+
332 
+
333  AVCodecContext *dec_ctx;
+
334  const AVCodec *dec;
+
335  AVFrame *decoded_frame;
+
336  AVFrame *filter_frame; /* a ref of decoded_frame, to be sent to filters */
+
337  AVPacket *pkt;
+
338 
+
339  int64_t start; /* time when read started */
+
340  /* predicted dts of the next packet read for this stream or (when there are
+
341  * several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
+
342  int64_t next_dts;
+
343  int64_t first_dts;
+
344  int64_t dts;
+
345 
+
346  int64_t next_pts;
+
347  int64_t pts;
+ +
349 
+ +
351 
+
352  int64_t min_pts; /* pts with the smallest value in a current stream */
+
353  int64_t max_pts; /* pts with the higher value in a current stream */
+
354 
+
355  // when forcing constant input framerate through -r,
+
356  // this contains the pts that will be given to the next decoded frame
+
357  int64_t cfr_next_pts;
+
358 
+
359  int64_t nb_samples; /* number of samples in the last decoded audio frame before looping */
+
360 
+
361  double ts_scale;
+ +
363  AVDictionary *decoder_opts;
+
364  AVRational framerate; /* framerate forced with -r */
+ + +
367 
+ +
369 
+ +
371  struct { /* previous decoded subtitle and related variables */
+ +
373  int ret;
+
374  AVSubtitle subtitle;
+
375  } prev_sub;
+
376 
+
377  struct sub2video {
+
378  int64_t last_pts;
+
379  int64_t end_pts;
+
380  AVFifoBuffer *sub_queue;
+
381  AVFrame *frame;
+
382  int w, h;
+
383  unsigned int initialize;
+
384  } sub2video;
+
385 
+
386  int dr1;
+
387 
+
388  /* decoded data from this stream goes into all those filters
+
389  * currently video and audio only */
+ + +
392 
+ +
394 
+
395  /* hwaccel options */
+ +
397  enum AVHWDeviceType hwaccel_device_type;
+ +
399  enum AVPixelFormat hwaccel_output_format;
+
400 
+
401  /* hwaccel context */
+
402  void *hwaccel_ctx;
+
403  void (*hwaccel_uninit)(AVCodecContext *s);
+
404  int (*hwaccel_get_buffer)(AVCodecContext *s, AVFrame *frame, int flags);
+
405  int (*hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame);
+
406  enum AVPixelFormat hwaccel_pix_fmt;
+
407  enum AVPixelFormat hwaccel_retrieved_pix_fmt;
+
408  AVBufferRef *hw_frames_ctx;
+
409 
+
410  /* stats */
+
411  // combined size of all the packets read
+
412  uint64_t data_size;
+
413  /* number of packets successfully read for this stream */
+
414  uint64_t nb_packets;
+
415  // number of frames/samples retrieved from the decoder
+
416  uint64_t frames_decoded;
+
417  uint64_t samples_decoded;
+
418 
+
419  int64_t *dts_buffer;
+ +
421 
+
422  int got_output;
+
423 } InputStream;
+
424 
+
425 typedef struct InputFile {
+
426  AVFormatContext *ctx;
+
427  int eof_reached; /* true if eof reached */
+
428  int eagain; /* true if last read attempt returned EAGAIN */
+
429  int ist_index; /* index of first stream in input_streams */
+
430  int loop; /* set number of times input stream should be looped */
+
431  int64_t duration; /* actual duration of the longest stream in a file
+
432  at the moment when looping happens */
+
433  AVRational time_base; /* time base of the duration */
+ +
435 
+
436  int64_t ts_offset;
+
437  int64_t last_ts;
+
438  int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
+ +
440  int64_t recording_time;
+
441  int nb_streams; /* number of stream that ffmpeg is aware of; may be different
+
442  from ctx.nb_streams if new streams appear during av_read_frame() */
+
443  int nb_streams_warn; /* number of streams that the user was warned of */
+
444  int rate_emu;
+
445  float readrate;
+ +
447 
+
448  AVPacket *pkt;
+
449 
+
450 #if HAVE_THREADS
+
451  AVThreadMessageQueue *in_thread_queue;
+
452  pthread_t thread; /* thread reading from this file */
+
453  int non_blocking; /* reading packets from the thread should not block */
+
454  int joined; /* the thread has been joined */
+
455  int thread_queue_size; /* maximum number of queued packets */
+
456 #endif
+
457 } InputFile;
+
458 
+ + + + + + + +
466 };
+
467 
+
468 #define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
+
469 #define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
+
470 
+
471 extern const char *const forced_keyframes_const_names[];
+
472 
+
473 typedef enum {
+ + +
476 } OSTFinished ;
+
477 
+
478 typedef struct OutputStream {
+
479  int file_index; /* file index */
+
480  int index; /* stream index in the output file */
+
481  int source_index; /* InputStream index */
+
482  AVStream *st; /* stream in the output file */
+
483  int encoding_needed; /* true if encoding needed for this stream */
+ +
485  /* input pts and corresponding output pts
+
486  for A/V sync */
+
487  struct InputStream *sync_ist; /* input stream to sync against */
+
488  int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ // FIXME look at frame_number
+
489  /* pts of the first frame encoded for this stream, used for limiting
+
490  * recording time */
+
491  int64_t first_pts;
+
492  /* dts of the last packet sent to the muxer */
+
493  int64_t last_mux_dts;
+
494  // the timebase of the packets sent to the muxer
+
495  AVRational mux_timebase;
+
496  AVRational enc_timebase;
+
497 
+
498  AVBSFContext *bsf_ctx;
+
499 
+
500  AVCodecContext *enc_ctx;
+
501  AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
+
502  const AVCodec *enc;
+
503  int64_t max_frames;
+
504  AVFrame *filtered_frame;
+
505  AVFrame *last_frame;
+
506  AVPacket *pkt;
+ + +
509 
+
510  void *hwaccel_ctx;
+
511 
+
512  /* video only */
+
513  AVRational frame_rate;
+
514  AVRational max_frame_rate;
+
515  int is_cfr;
+ + + + + +
521 
+
522  AVRational frame_aspect_ratio;
+
523 
+
524  /* forced key frames */
+ +
526  int64_t *forced_kf_pts;
+ + + + + + +
533 
+
534  /* audio only */
+
535  int *audio_channels_map; /* list of the channels id to pick from the source stream */
+
536  int audio_channels_mapped; /* number of channels in audio_channels_map */
+
537 
+ +
539  FILE *logfile;
+
540 
+ +
542  char *avfilter;
+
543  char *filters;
+ +
545 
+
546  AVDictionary *encoder_opts;
+
547  AVDictionary *sws_dict;
+
548  AVDictionary *swr_opts;
+
549  AVDictionary *resample_opts;
+
550  char *apad;
+
551  OSTFinished finished; /* no more packets should be written for this stream */
+
552  int unavailable; /* true if the steram is unavailable (possibly temporarily) */
+ +
554 
+
555  // init_output_stream() has been called for this stream
+
556  // The encoder and the bitstream filters have been initialized and the stream
+
557  // parameters are set in the AVStream.
+ +
559 
+ +
561 
+
562  const char *attachment_filename;
+ + +
565  char *disposition;
+
566 
+ +
568 
+
569  /* stats */
+
570  // combined size of all the packets written
+
571  uint64_t data_size;
+
572  // number of packets send to the muxer
+
573  uint64_t packets_written;
+
574  // number of frames/samples sent to the encoder
+
575  uint64_t frames_encoded;
+
576  uint64_t samples_encoded;
+
577 
+
578  /* packet quality factor */
+
579  int quality;
+
580 
+ +
582 
+
583  /* the packets are buffered here until the muxer is ready to be initialized */
+
584  AVFifoBuffer *muxing_queue;
+
585 
+
586  /*
+
587  * The size of the AVPackets' buffers in queue.
+
588  * Updated when a packet is either pushed or pulled from the queue.
+
589  */
+ +
591 
+
592  /* Threshold after which max_muxing_queue_size will be in effect */
+ +
594 
+
595  /* packet picture type */
+ +
597 
+
598  /* frame encode sum of squared error values */
+
599  int64_t error[4];
+
600 } OutputStream;
+
601 
+
602 typedef struct OutputFile {
+
603  AVFormatContext *ctx;
+
604  AVDictionary *opts;
+
605  int ost_index; /* index of the first stream in output_streams */
+
606  int64_t recording_time;
+
607  int64_t start_time;
+
608  uint64_t limit_filesize; /* filesize limit expressed in bytes */
+
609 
+
610  int shortest;
+
611 
+ +
613 } OutputFile;
+
614 
+
615 extern __thread InputStream **input_streams;
+
616 extern __thread int nb_input_streams;
+
617 extern __thread InputFile **input_files;
+
618 extern __thread int nb_input_files;
+
619 
+
620 extern __thread OutputStream **output_streams;
+
621 extern __thread int nb_output_streams;
+
622 extern __thread OutputFile **output_files;
+
623 extern __thread int nb_output_files;
+
624 
+
625 extern __thread FilterGraph **filtergraphs;
+
626 extern __thread int nb_filtergraphs;
+
627 
+
628 extern __thread char *vstats_filename;
+
629 extern __thread char *sdp_filename;
+
630 
+
631 extern __thread float audio_drift_threshold;
+
632 extern __thread float dts_delta_threshold;
+
633 extern __thread float dts_error_threshold;
+
634 
+
635 extern __thread int audio_volume;
+
636 extern __thread int audio_sync_method;
+
637 extern __thread int video_sync_method;
+
638 extern __thread float frame_drop_threshold;
+
639 extern __thread int do_benchmark;
+
640 extern __thread int do_benchmark_all;
+
641 extern __thread int do_deinterlace;
+
642 extern __thread int do_hex_dump;
+
643 extern __thread int do_pkt_dump;
+
644 extern __thread int copy_ts;
+
645 extern __thread int start_at_zero;
+
646 extern __thread int copy_tb;
+
647 extern __thread int debug_ts;
+
648 extern __thread int exit_on_error;
+
649 extern __thread int abort_on_flags;
+
650 extern __thread int print_stats;
+
651 extern __thread int64_t stats_period;
+
652 extern __thread int qp_hist;
+
653 extern __thread int stdin_interaction;
+
654 extern __thread int frame_bits_per_raw_sample;
+
655 extern __thread AVIOContext *progress_avio;
+
656 extern __thread float max_error_rate;
+
657 extern __thread char *videotoolbox_pixfmt;
+
658 
+
659 extern __thread int filter_nbthreads;
+
660 extern __thread int filter_complex_nbthreads;
+
661 extern __thread int vstats_version;
+
662 extern __thread int auto_conversion_filters;
+
663 
+
664 extern __thread const AVIOInterruptCB int_cb;
+
665 
+
666 extern const HWAccel hwaccels[];
+
667 #if CONFIG_QSV
+
668 extern __thread char *qsv_device;
+
669 #endif
+
670 extern __thread HWDevice *filter_hw_device;
+
671 
+
672 void term_init(void);
+
673 void term_exit(void);
+
674 
+
675 void reset_options(OptionsContext *o, int is_input);
+
676 void show_usage(void);
+
677 
+
678 void opt_output_file(void *optctx, const char *filename);
+
679 
+
680 void remove_avoptions(AVDictionary **a, AVDictionary *b);
+
681 void assert_avoptions(AVDictionary *m);
+
682 
+ +
684 
+
685 enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target);
+
686 void choose_sample_fmt(AVStream *st, const AVCodec *codec);
+
687 
+ +
689 int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out);
+
690 void check_filter_outputs(void);
+ + + + +
695 
+
696 void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub);
+
697 
+
698 int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame);
+
699 
+
700 int ffmpeg_parse_options(int argc, char **argv);
+
701 
+
702 int videotoolbox_init(AVCodecContext *s);
+
703 int qsv_init(AVCodecContext *s);
+
704 
+
705 HWDevice *hw_device_get_by_name(const char *name);
+
706 int hw_device_init_from_string(const char *arg, HWDevice **dev);
+
707 void hw_device_free_all(void);
+
708 
+ + + +
712 
+
713 int hwaccel_decode_init(AVCodecContext *avctx);
+
714 
+
715 void set_report_callback(void (*callback)(int, float, float, int64_t, int, double, double));
+
716 
+
717 void cancel_operation(long id);
+
718 
+
719 int opt_map(void *optctx, const char *opt, const char *arg);
+
720 int opt_map_channel(void *optctx, const char *opt, const char *arg);
+
721 int opt_recording_timestamp(void *optctx, const char *opt, const char *arg);
+
722 int opt_data_frames(void *optctx, const char *opt, const char *arg);
+
723 int opt_progress(void *optctx, const char *opt, const char *arg);
+
724 int opt_target(void *optctx, const char *opt, const char *arg);
+
725 int opt_vsync(void *optctx, const char *opt, const char *arg);
+
726 int opt_abort_on(void *optctx, const char *opt, const char *arg);
+
727 int opt_stats_period(void *optctx, const char *opt, const char *arg);
+
728 int opt_qscale(void *optctx, const char *opt, const char *arg);
+
729 int opt_profile(void *optctx, const char *opt, const char *arg);
+
730 int opt_filter_complex(void *optctx, const char *opt, const char *arg);
+
731 int opt_filter_complex_script(void *optctx, const char *opt, const char *arg);
+
732 int opt_attach(void *optctx, const char *opt, const char *arg);
+
733 int opt_video_frames(void *optctx, const char *opt, const char *arg);
+
734 int opt_video_codec(void *optctx, const char *opt, const char *arg);
+
735 int opt_sameq(void *optctx, const char *opt, const char *arg);
+
736 int opt_timecode(void *optctx, const char *opt, const char *arg);
+
737 
+
738 int opt_vstats_file(void *optctx, const char *opt, const char *arg);
+
739 int opt_vstats(void *optctx, const char *opt, const char *arg);
+
740 int opt_video_frames(void *optctx, const char *opt, const char *arg);
+
741 int opt_old2new(void *optctx, const char *opt, const char *arg);
+
742 int opt_streamid(void *optctx, const char *opt, const char *arg);
+
743 int opt_bitrate(void *optctx, const char *opt, const char *arg);
+
744 int show_hwaccels(void *optctx, const char *opt, const char *arg);
+
745 int opt_video_filters(void *optctx, const char *opt, const char *arg);
+
746 int opt_audio_frames(void *optctx, const char *opt, const char *arg);
+
747 int opt_audio_qscale(void *optctx, const char *opt, const char *arg);
+
748 int opt_audio_codec(void *optctx, const char *opt, const char *arg);
+
749 int opt_channel_layout(void *optctx, const char *opt, const char *arg);
+
750 int opt_preset(void *optctx, const char *opt, const char *arg);
+
751 int opt_audio_filters(void *optctx, const char *opt, const char *arg);
+
752 int opt_subtitle_codec(void *optctx, const char *opt, const char *arg);
+
753 int opt_video_channel(void *optctx, const char *opt, const char *arg);
+
754 int opt_video_standard(void *optctx, const char *opt, const char *arg);
+
755 int opt_sdp_file(void *optctx, const char *opt, const char *arg);
+
756 int opt_data_codec(void *optctx, const char *opt, const char *arg);
+
757 int opt_init_hw_device(void *optctx, const char *opt, const char *arg);
+
758 int opt_filter_hw_device(void *optctx, const char *opt, const char *arg);
+
759 void add_input_streams(OptionsContext *o, AVFormatContext *ic);
+
760 void assert_file_overwrite(const char *filename);
+
761 void dump_attachment(AVStream *st, const char *filename);
+
762 uint8_t *get_line(AVIOContext *s);
+ + +
765 AVDictionary *strip_specifiers(AVDictionary *dict);
+
766 void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec);
+
767 int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o);
+
768 const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder);
+
769 const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st);
+
770 int open_input_file(OptionsContext *o, const char *filename);
+
771 int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s);
+
772 int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost);
+
773 OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index);
+
774 void parse_matrix_coeffs(uint16_t *dest, const char *str);
+
775 uint8_t *fftools_read_file(const char *filename);
+
776 char *get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost);
+
777 void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type);
+
778 OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
779 OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
780 OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
781 OutputStream *new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
782 OutputStream *new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
783 OutputStream *new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index);
+
784 int copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata);
+
785 void init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc);
+
786 int init_complex_filters(void);
+
787 int open_output_file(OptionsContext *o, const char *filename);
+
788 int opt_default_new(OptionsContext *o, const char *opt, const char *arg);
+
789 int open_files(OptionGroupList *l, const char *inout, int (*open_file)(OptionsContext*, const char*));
+
790 
+
791 #endif /* FFTOOLS_FFMPEG_H */
+
+
OptionsContext::readrate
float readrate
Definition: fftools_ffmpeg.h:145
+
OptionsContext::force_fps
SpecifierOpt * force_fps
Definition: fftools_ffmpeg.h:206
+
OutputStream::last_mux_dts
int64_t last_mux_dts
Definition: fftools_ffmpeg.h:493
+
OptionsContext::disposition
SpecifierOpt * disposition
Definition: fftools_ffmpeg.h:252
+
InputStream::filter_frame
AVFrame * filter_frame
Definition: fftools_ffmpeg.h:336
+
OptionsContext::seek_timestamp
int seek_timestamp
Definition: fftools_ffmpeg.h:123
+
InputFile::eagain
int eagain
Definition: fftools_ffmpeg.h:428
+
OutputStream::avfilter
char * avfilter
Definition: fftools_ffmpeg.h:542
+
opt_data_codec
int opt_data_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:357
+
OutputStream::stream_copy
int stream_copy
Definition: fftools_ffmpeg.h:553
+
OptionsContext::discard
SpecifierOpt * discard
Definition: fftools_ffmpeg.h:250
+
fftools_read_file
uint8_t * fftools_read_file(const char *filename)
Definition: fftools_ffmpeg_opt.c:1683
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+
progress_avio
__thread AVIOContext * progress_avio
Definition: fftools_ffmpeg.c:172
+
ffmpeg_parse_options
int ffmpeg_parse_options(int argc, char **argv)
+
OutputStream::forced_kf_index
int forced_kf_index
Definition: fftools_ffmpeg.h:528
+
ENCODER_FINISHED
@ ENCODER_FINISHED
Definition: fftools_ffmpeg.h:474
+
InputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:268
+
qsv_init
int qsv_init(AVCodecContext *s)
+
assert_avoptions
void assert_avoptions(AVDictionary *m)
Definition: fftools_ffmpeg.c:791
+
OutputStream::sync_opts
int64_t sync_opts
Definition: fftools_ffmpeg.h:488
+
AudioChannelMap::stream_idx
int stream_idx
Definition: fftools_ffmpeg.h:113
+
OptionsContext::hwaccel_output_formats
SpecifierOpt * hwaccel_output_formats
Definition: fftools_ffmpeg.h:157
+
OutputStream::filtered_frame
AVFrame * filtered_frame
Definition: fftools_ffmpeg.h:504
+
InputStream::sub2video::h
int h
Definition: fftools_ffmpeg.h:382
+
OutputStream::finished
OSTFinished finished
Definition: fftools_ffmpeg.h:551
+
InputFile::nb_streams_warn
int nb_streams_warn
Definition: fftools_ffmpeg.h:443
+
get_line
uint8_t * get_line(AVIOContext *s)
Definition: fftools_ffmpeg_opt.c:1399
+
opt_data_frames
int opt_data_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3052
+
OptionsContext::nb_max_frame_rates
int nb_max_frame_rates
Definition: fftools_ffmpeg.h:135
+
FKF_NB
@ FKF_NB
Definition: fftools_ffmpeg.h:465
+
OutputStream::rotate_override_value
double rotate_override_value
Definition: fftools_ffmpeg.h:520
+
OutputStream::frame_number
int frame_number
Definition: fftools_ffmpeg.h:484
+
stdin_interaction
__thread int stdin_interaction
Definition: fftools_ffmpeg_opt.c:184
+
OutputStream::ref_par
AVCodecParameters * ref_par
Definition: fftools_ffmpeg.h:501
+
hw_device_init_from_string
int hw_device_init_from_string(const char *arg, HWDevice **dev)
Definition: fftools_ffmpeg_hw.c:103
+
OptionsContext::nb_fix_sub_duration
int nb_fix_sub_duration
Definition: fftools_ffmpeg.h:235
+
OptionsContext::accurate_seek
int accurate_seek
Definition: fftools_ffmpeg.h:146
+
OutputStream::autoscale
int autoscale
Definition: fftools_ffmpeg.h:519
+
abort_on_flags
__thread int abort_on_flags
Definition: fftools_ffmpeg_opt.c:181
+
OptionsContext::nb_filter_scripts
int nb_filter_scripts
Definition: fftools_ffmpeg.h:231
+
OptionsContext::nb_codec_tags
int nb_codec_tags
Definition: fftools_ffmpeg.h:199
+
opt_progress
int opt_progress(void *optctx, const char *opt, const char *arg)
+
choose_sample_fmt
void choose_sample_fmt(AVStream *st, const AVCodec *codec)
+
InputStream::ts_scale
double ts_scale
Definition: fftools_ffmpeg.h:361
+
InputStream::hw_frames_ctx
AVBufferRef * hw_frames_ctx
Definition: fftools_ffmpeg.h:408
+
OptionsContext::limit_filesize
uint64_t limit_filesize
Definition: fftools_ffmpeg.h:177
+
OutputStream::last_nb0_frames
int last_nb0_frames[3]
Definition: fftools_ffmpeg.h:508
+
InputStream::hwaccel_ctx
void * hwaccel_ctx
Definition: fftools_ffmpeg.h:402
+
OptionsContext::attachments
const char ** attachments
Definition: fftools_ffmpeg.h:170
+
OutputStream::filters
char * filters
filtergraph associated to the -filter option
Definition: fftools_ffmpeg.h:543
+
OptionsContext::mux_preload
float mux_preload
Definition: fftools_ffmpeg.h:178
+
InputStream::discard
int discard
Definition: fftools_ffmpeg.h:327
+
OutputStream::logfile_prefix
char * logfile_prefix
Definition: fftools_ffmpeg.h:538
+
OutputStream::muxing_queue
AVFifoBuffer * muxing_queue
Definition: fftools_ffmpeg.h:584
+
OutputStream::rotate_overridden
int rotate_overridden
Definition: fftools_ffmpeg.h:518
+
filter_hw_device
__thread HWDevice * filter_hw_device
Definition: fftools_ffmpeg_opt.c:158
+
opt_filter_complex
int opt_filter_complex(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3264
+
OutputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:603
+
OutputStream::last_dropped
int last_dropped
Definition: fftools_ffmpeg.h:507
+
FKF_PREV_FORCED_N
@ FKF_PREV_FORCED_N
Definition: fftools_ffmpeg.h:462
+
InputFile::seek_timestamp
int seek_timestamp
Definition: fftools_ffmpeg.h:439
+
opt_recording_timestamp
int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:758
+
OutputStream::force_fps
int force_fps
Definition: fftools_ffmpeg.h:516
+
FilterGraph::index
int index
Definition: fftools_ffmpeg.h:312
+
OptionsContext::nb_reinit_filters
int nb_reinit_filters
Definition: fftools_ffmpeg.h:233
+
FKF_N
@ FKF_N
Definition: fftools_ffmpeg.h:460
+
OptionsContext::streamid_map
int * streamid_map
Definition: fftools_ffmpeg.h:189
+
InputStream
struct InputStream InputStream
+
OptionsContext::nb_hwaccels
int nb_hwaccels
Definition: fftools_ffmpeg.h:154
+
OptionsContext::nb_filters
int nb_filters
Definition: fftools_ffmpeg.h:229
+
frame_drop_threshold
__thread float frame_drop_threshold
Definition: fftools_ffmpeg_opt.c:170
+
opt_stats_period
int opt_stats_period(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:303
+
InputStream
Definition: fftools_ffmpeg.h:324
+
hwaccel_decode_init
int hwaccel_decode_init(AVCodecContext *avctx)
Definition: fftools_ffmpeg_hw.c:537
+
FilterGraph
struct FilterGraph FilterGraph
+
OptionsContext::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:121
+
OptionsContext::nb_audio_channel_maps
int nb_audio_channel_maps
Definition: fftools_ffmpeg.h:166
+
OutputStream::is_cfr
int is_cfr
Definition: fftools_ffmpeg.h:515
+
OptionsContext::nb_copy_prior_start
int nb_copy_prior_start
Definition: fftools_ffmpeg.h:227
+
InputFile
struct InputFile InputFile
+
OptionsContext::stream_maps
StreamMap * stream_maps
Definition: fftools_ffmpeg.h:163
+
InputStream::dr1
int dr1
Definition: fftools_ffmpeg.h:386
+
forced_keyframes_const
forced_keyframes_const
Definition: fftools_ffmpeg.h:459
+
OptionsContext::enc_time_bases
SpecifierOpt * enc_time_bases
Definition: fftools_ffmpeg.h:258
+
OptionsContext::chroma_intra_matrices
SpecifierOpt * chroma_intra_matrices
Definition: fftools_ffmpeg.h:216
+
OptionsContext::dump_attachment
SpecifierOpt * dump_attachment
Definition: fftools_ffmpeg.h:151
+
configure_filtergraph
int configure_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:963
+
HWACCEL_NONE
@ HWACCEL_NONE
Definition: fftools_ffmpeg.h:83
+
OptionsContext::sample_fmts
SpecifierOpt * sample_fmts
Definition: fftools_ffmpeg.h:200
+
opt_video_channel
int opt_video_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:327
+
opt_video_frames
int opt_video_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3040
+
OptionsContext::filter_scripts
SpecifierOpt * filter_scripts
Definition: fftools_ffmpeg.h:230
+
init_complex_filters
int init_complex_filters(void)
Definition: fftools_ffmpeg_opt.c:2198
+
InputStream::hwaccel_device_type
enum AVHWDeviceType hwaccel_device_type
Definition: fftools_ffmpeg.h:397
+
audio_drift_threshold
__thread float audio_drift_threshold
Definition: fftools_ffmpeg_opt.c:163
+
OutputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:303
+
find_codec_or_die
const AVCodec * find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
Definition: fftools_ffmpeg_opt.c:773
+
opt_timecode
int opt_timecode(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3208
+
OptionsContext::stop_time
int64_t stop_time
Definition: fftools_ffmpeg.h:176
+
OptionsContext::top_field_first
SpecifierOpt * top_field_first
Definition: fftools_ffmpeg.h:218
+
OutputStream::muxing_queue_data_threshold
size_t muxing_queue_data_threshold
Definition: fftools_ffmpeg.h:593
+
ifilter_parameters_from_frame
int ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame)
Definition: fftools_ffmpeg_filter.c:1141
+
opt_channel_layout
int opt_channel_layout(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3222
+
opt_audio_codec
int opt_audio_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:339
+
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: fftools_ffmpeg.h:536
+
opt_audio_qscale
int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3258
+
OutputStream::attachment_filename
const char * attachment_filename
Definition: fftools_ffmpeg.h:562
+
OutputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:479
+
OptionsContext::input_ts_offset
int64_t input_ts_offset
Definition: fftools_ffmpeg.h:142
+
OptionsContext::presets
SpecifierOpt * presets
Definition: fftools_ffmpeg.h:222
+
OptionsContext::data_disable
int data_disable
Definition: fftools_ffmpeg.h:186
+
InputFilter
Definition: fftools_ffmpeg.h:264
+
add_input_streams
void add_input_streams(OptionsContext *o, AVFormatContext *ic)
Definition: fftools_ffmpeg_opt.c:819
+
OptionsContext::metadata
SpecifierOpt * metadata
Definition: fftools_ffmpeg.h:192
+
InputStream::data_size
uint64_t data_size
Definition: fftools_ffmpeg.h:412
+
OutputStream::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:506
+
input_streams
__thread InputStream ** input_streams
Definition: fftools_ffmpeg.c:176
+
guess_input_channel_layout
int guess_input_channel_layout(InputStream *ist)
Definition: fftools_ffmpeg.c:2303
+
debug_ts
__thread int debug_ts
Definition: fftools_ffmpeg_opt.c:179
+
opt_bitrate
int opt_bitrate(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3138
+
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: fftools_ffmpeg.h:84
+
new_audio_stream
OutputStream * new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:1956
+
max_error_rate
__thread float max_error_rate
Definition: fftools_ffmpeg_opt.c:186
+
InputStream::top_field_first
int top_field_first
Definition: fftools_ffmpeg.h:365
+
InputStream::sub2video
Definition: fftools_ffmpeg.h:377
+
OptionsContext::rc_overrides
SpecifierOpt * rc_overrides
Definition: fftools_ffmpeg.h:210
+
OptionsContext::metadata_chapters_manual
int metadata_chapters_manual
Definition: fftools_ffmpeg.h:169
+
new_attachment_stream
OutputStream * new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2055
+
OptionGroupList
Definition: fftools_cmdutils.h:318
+
do_deinterlace
__thread int do_deinterlace
Definition: fftools_ffmpeg_opt.c:171
+
HWDevice::type
enum AVHWDeviceType type
Definition: fftools_ffmpeg.h:98
+
InputStream::nb_filters
int nb_filters
Definition: fftools_ffmpeg.h:391
+
opt_abort_on
int opt_abort_on(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:284
+
dts_error_threshold
__thread float dts_error_threshold
Definition: fftools_ffmpeg_opt.c:165
+
StreamMap::disabled
int disabled
Definition: fftools_ffmpeg.h:104
+
InputStream::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:337
+
OutputStream::top_field_first
int top_field_first
Definition: fftools_ffmpeg.h:517
+
show_usage
void show_usage(void)
Definition: fftools_ffmpeg_opt.c:3369
+
InputFile::loop
int loop
Definition: fftools_ffmpeg.h:430
+
InputFile::readrate
float readrate
Definition: fftools_ffmpeg.h:445
+
opt_audio_frames
int opt_audio_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3046
+
OutputStream::copy_prior_start
int copy_prior_start
Definition: fftools_ffmpeg.h:564
+
OptionsContext::frame_rates
SpecifierOpt * frame_rates
Definition: fftools_ffmpeg.h:132
+
OutputStream::disposition
char * disposition
Definition: fftools_ffmpeg.h:565
+
OptionsContext::nb_passlogfiles
int nb_passlogfiles
Definition: fftools_ffmpeg.h:241
+
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: fftools_ffmpeg.h:514
+
InputFile::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:448
+
opt_streamid
int opt_streamid(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2091
+
OutputStream::source_index
int source_index
Definition: fftools_ffmpeg.h:481
+
OptionsContext::shortest
int shortest
Definition: fftools_ffmpeg.h:180
+
InputStream::sub2video::end_pts
int64_t end_pts
Definition: fftools_ffmpeg.h:379
+
OutputStream::quality
int quality
Definition: fftools_ffmpeg.h:579
+
OptionsContext::forced_key_frames
SpecifierOpt * forced_key_frames
Definition: fftools_ffmpeg.h:204
+
OutputFilter
Definition: fftools_ffmpeg.h:288
+
OutputStream::pict_type
int pict_type
Definition: fftools_ffmpeg.h:596
+
InputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:281
+
OptionsContext::guess_layout_max
SpecifierOpt * guess_layout_max
Definition: fftools_ffmpeg.h:246
+
configure_output_filter
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
Definition: fftools_ffmpeg_filter.c:629
+
InputStream::subtitle
AVSubtitle subtitle
Definition: fftools_ffmpeg.h:374
+
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: fftools_ffmpeg.h:547
+
strip_specifiers
AVDictionary * strip_specifiers(AVDictionary *dict)
Definition: fftools_ffmpeg_opt.c:267
+
OutputFile::header_written
int header_written
Definition: fftools_ffmpeg.h:612
+
OptionsContext
Definition: fftools_ffmpeg.h:117
+
get_preset_file_2
int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s)
Definition: fftools_ffmpeg_opt.c:1418
+
OutputStream::max_muxing_queue_size
int max_muxing_queue_size
Definition: fftools_ffmpeg.h:581
+
OptionsContext::frame_aspect_ratios
SpecifierOpt * frame_aspect_ratios
Definition: fftools_ffmpeg.h:208
+
OptionsContext::nb_frame_rates
int nb_frame_rates
Definition: fftools_ffmpeg.h:133
+
InputStream::decoded_frame
AVFrame * decoded_frame
Definition: fftools_ffmpeg.h:335
+
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
+
OptionsContext::nb_stream_maps
int nb_stream_maps
Definition: fftools_ffmpeg.h:164
+
do_pkt_dump
__thread int do_pkt_dump
Definition: fftools_ffmpeg_opt.c:175
+
OptionsContext::nb_ts_scale
int nb_ts_scale
Definition: fftools_ffmpeg.h:150
+
OutputStream::forced_keyframes_expr_const_values
double forced_keyframes_expr_const_values[FKF_NB]
Definition: fftools_ffmpeg.h:531
+
term_exit
void term_exit(void)
Definition: fftools_ffmpeg.c:430
+
opt_filter_hw_device
int opt_filter_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:620
+
HWAccel::id
enum HWAccelID id
Definition: fftools_ffmpeg.h:92
+
InputStream::autorotate
int autorotate
Definition: fftools_ffmpeg.h:368
+
opt_qscale
int opt_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3154
+
OutputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:291
+
InputStream::sub2video::sub_queue
AVFifoBuffer * sub_queue
queue of AVSubtitle* before filter init
Definition: fftools_ffmpeg.h:380
+
FilterGraph::nb_inputs
int nb_inputs
Definition: fftools_ffmpeg.h:319
+
choose_encoder
int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost)
Definition: fftools_ffmpeg_opt.c:1444
+
OptionsContext::nb_copy_initial_nonkeyframes
int nb_copy_initial_nonkeyframes
Definition: fftools_ffmpeg.h:225
+
OptionsContext::pass
SpecifierOpt * pass
Definition: fftools_ffmpeg.h:238
+
opt_audio_filters
int opt_audio_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3190
+
get_ost_filters
char * get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost)
Definition: fftools_ffmpeg_opt.c:1711
+
Signal.h
+
OutputStream::packets_written
uint64_t packets_written
Definition: fftools_ffmpeg.h:573
+
OutputFile::opts
AVDictionary * opts
Definition: fftools_ffmpeg.h:604
+
FKF_N_FORCED
@ FKF_N_FORCED
Definition: fftools_ffmpeg.h:461
+
OutputStream::forced_keyframes_pexpr
AVExpr * forced_keyframes_pexpr
Definition: fftools_ffmpeg.h:530
+
OptionsContext::max_frames
SpecifierOpt * max_frames
Definition: fftools_ffmpeg.h:194
+
OutputStream::forced_kf_pts
int64_t * forced_kf_pts
Definition: fftools_ffmpeg.h:526
+
OptionsContext::nb_discard
int nb_discard
Definition: fftools_ffmpeg.h:251
+
auto_conversion_filters
__thread int auto_conversion_filters
Definition: fftools_ffmpeg_opt.c:190
+
opt_sameq
int opt_sameq(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:318
+
HWAccel::pix_fmt
enum AVPixelFormat pix_fmt
Definition: fftools_ffmpeg.h:93
+
HWDevice::name
const char * name
Definition: fftools_ffmpeg.h:97
+
InputFilter::ist
struct InputStream * ist
Definition: fftools_ffmpeg.h:266
+
vstats_filename
__thread char * vstats_filename
Definition: fftools_ffmpeg_opt.c:160
+
InputStream::cfr_next_pts
int64_t cfr_next_pts
Definition: fftools_ffmpeg.h:357
+
FKF_T
@ FKF_T
Definition: fftools_ffmpeg.h:464
+
hwaccels
const HWAccel hwaccels[]
Definition: fftools_ffmpeg_opt.c:152
+
opt_video_standard
int opt_video_standard(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:333
+
InputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:269
+
InputStream::fix_sub_duration
int fix_sub_duration
Definition: fftools_ffmpeg.h:370
+
InputStream::got_output
int got_output
Definition: fftools_ffmpeg.h:372
+
InputFilter::frame_queue
AVFifoBuffer * frame_queue
Definition: fftools_ffmpeg.h:271
+
OptionsContext::mux_max_delay
float mux_max_delay
Definition: fftools_ffmpeg.h:179
+
InputFile
Definition: fftools_ffmpeg.h:425
+
OutputFilter::name
uint8_t * name
Definition: fftools_ffmpeg.h:292
+
InputFile::accurate_seek
int accurate_seek
Definition: fftools_ffmpeg.h:446
+
FilterGraph::graph_desc
const char * graph_desc
Definition: fftools_ffmpeg.h:313
+
InputStream::dts
int64_t dts
dts of the last packet read for this stream (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:344
+
OutputStream::encoding_needed
int encoding_needed
Definition: fftools_ffmpeg.h:483
+
MUXER_FINISHED
@ MUXER_FINISHED
Definition: fftools_ffmpeg.h:475
+
hw_device_free_all
void hw_device_free_all(void)
Definition: fftools_ffmpeg_hw.c:283
+
opt_video_filters
int opt_video_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3184
+
OutputFile::shortest
int shortest
Definition: fftools_ffmpeg.h:610
+
open_output_file
int open_output_file(OptionsContext *o, const char *filename)
Definition: fftools_ffmpeg_opt.c:2210
+
OptionsContext::max_muxing_queue_size
SpecifierOpt * max_muxing_queue_size
Definition: fftools_ffmpeg.h:242
+
opt_video_codec
int opt_video_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:345
+
OptionsContext::audio_sample_rate
SpecifierOpt * audio_sample_rate
Definition: fftools_ffmpeg.h:130
+
OptionsContext::nb_codec_names
int nb_codec_names
Definition: fftools_ffmpeg.h:127
+
do_benchmark_all
__thread int do_benchmark_all
Definition: fftools_ffmpeg_opt.c:173
+
InputStream::hwaccel_get_buffer
int(* hwaccel_get_buffer)(AVCodecContext *s, AVFrame *frame, int flags)
Definition: fftools_ffmpeg.h:404
+
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:606
+
choose_pixel_fmt
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target)
Definition: fftools_ffmpeg_filter.c:65
+
dts_delta_threshold
__thread float dts_delta_threshold
Definition: fftools_ffmpeg_opt.c:164
+
OutputStream::bsf_ctx
AVBSFContext * bsf_ctx
Definition: fftools_ffmpeg.h:498
+
filter_nbthreads
__thread int filter_nbthreads
Definition: fftools_ffmpeg_opt.c:187
+
OptionsContext::nb_sample_fmts
int nb_sample_fmts
Definition: fftools_ffmpeg.h:201
+
OptionsContext::metadata_global_manual
int metadata_global_manual
Definition: fftools_ffmpeg.h:167
+
StreamMap
Definition: fftools_ffmpeg.h:103
+
set_report_callback
void set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double))
Definition: fftools_ffmpeg.c:5194
+
cancel_operation
void cancel_operation(long id)
Definition: fftools_ffmpeg.c:5199
+
OptionsContext::audio_channel_maps
AudioChannelMap * audio_channel_maps
Definition: fftools_ffmpeg.h:165
+
OutputStream::data_size
uint64_t data_size
Definition: fftools_ffmpeg.h:571
+
InputStream::sub2video::last_pts
int64_t last_pts
Definition: fftools_ffmpeg.h:378
+
OptionsContext::nb_audio_sample_rate
int nb_audio_sample_rate
Definition: fftools_ffmpeg.h:131
+
OutputStream::first_pts
int64_t first_pts
Definition: fftools_ffmpeg.h:491
+
OptionsContext::nb_frame_pix_fmts
int nb_frame_pix_fmts
Definition: fftools_ffmpeg.h:139
+
OutputStream::frames_encoded
uint64_t frames_encoded
Definition: fftools_ffmpeg.h:575
+
OptionsContext::loop
int loop
Definition: fftools_ffmpeg.h:143
+
hw_device_setup_for_filter
int hw_device_setup_for_filter(FilterGraph *fg)
Definition: fftools_ffmpeg_hw.c:546
+
OutputStream::forced_kf_ref_pts
int64_t forced_kf_ref_pts
Definition: fftools_ffmpeg.h:525
+
OptionsContext::qscale
SpecifierOpt * qscale
Definition: fftools_ffmpeg.h:202
+
OptionsContext::hwaccels
SpecifierOpt * hwaccels
Definition: fftools_ffmpeg.h:153
+
InputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:426
+
OptionsContext::passlogfiles
SpecifierOpt * passlogfiles
Definition: fftools_ffmpeg.h:240
+
forced_keyframes_const_names
const char *const forced_keyframes_const_names[]
Definition: fftools_ffmpeg.c:142
+
OutputStream::logfile
FILE * logfile
Definition: fftools_ffmpeg.h:539
+
opt_output_file
void opt_output_file(void *optctx, const char *filename)
+
OptionsContext::hwaccel_devices
SpecifierOpt * hwaccel_devices
Definition: fftools_ffmpeg.h:155
+
OSTFinished
OSTFinished
Definition: fftools_ffmpeg.h:473
+
opt_preset
int opt_preset(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3078
+
InputStream::max_pts
int64_t max_pts
Definition: fftools_ffmpeg.h:353
+
AudioChannelMap::ostream_idx
int ostream_idx
Definition: fftools_ffmpeg.h:114
+
audio_sync_method
__thread int audio_sync_method
Definition: fftools_ffmpeg_opt.c:168
+
OptionsContext::frame_pix_fmts
SpecifierOpt * frame_pix_fmts
Definition: fftools_ffmpeg.h:138
+
FilterGraph::nb_outputs
int nb_outputs
Definition: fftools_ffmpeg.h:321
+
InputFilter::sample_aspect_ratio
AVRational sample_aspect_ratio
Definition: fftools_ffmpeg.h:277
+
nb_output_streams
__thread int nb_output_streams
Definition: fftools_ffmpeg.c:182
+
opt_target
int opt_target(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2873
+
HWDevice
struct HWDevice HWDevice
+
hw_device_setup_for_encode
int hw_device_setup_for_encode(OutputStream *ost)
Definition: fftools_ffmpeg_hw.c:440
+
InputStream::samples_decoded
uint64_t samples_decoded
Definition: fftools_ffmpeg.h:417
+
new_unknown_stream
OutputStream * new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2042
+
StreamMap
struct StreamMap StreamMap
+
InputFilter::graph
struct FilterGraph * graph
Definition: fftools_ffmpeg.h:267
+
OutputStream::resample_opts
AVDictionary * resample_opts
Definition: fftools_ffmpeg.h:549
+
uninit_options
void uninit_options(OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:207
+
OptionsContext::bitstream_filters
SpecifierOpt * bitstream_filters
Definition: fftools_ffmpeg.h:196
+
opt_vstats
int opt_vstats(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3024
+
InputFilter::height
int height
Definition: fftools_ffmpeg.h:276
+
InputStream::sub2video::initialize
unsigned int initialize
marks if sub2video_update should force an initialization
Definition: fftools_ffmpeg.h:383
+
OutputStream::filter
OutputFilter * filter
Definition: fftools_ffmpeg.h:541
+
int_cb
const __thread AVIOInterruptCB int_cb
Definition: fftools_ffmpeg.c:617
+
parse_matrix_coeffs
void parse_matrix_coeffs(uint16_t *dest, const char *str)
Definition: fftools_ffmpeg_opt.c:1665
+
OptionsContext::autorotate
SpecifierOpt * autorotate
Definition: fftools_ffmpeg.h:159
+
HWACCEL_VIDEOTOOLBOX
@ HWACCEL_VIDEOTOOLBOX
Definition: fftools_ffmpeg.h:86
+
OutputFilter::sample_rates
int * sample_rates
Definition: fftools_ffmpeg.h:308
+
AudioChannelMap
Definition: fftools_ffmpeg.h:112
+
InputStream::sub2video::w
int w
Definition: fftools_ffmpeg.h:382
+
OutputStream::enc_timebase
AVRational enc_timebase
Definition: fftools_ffmpeg.h:496
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
OutputStream::hwaccel_ctx
void * hwaccel_ctx
Definition: fftools_ffmpeg.h:510
+
OptionsContext::nb_attachments
int nb_attachments
Definition: fftools_ffmpeg.h:171
+
opt_filter_complex_script
int opt_filter_complex_script(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3279
+
InputFile::nb_streams
int nb_streams
Definition: fftools_ffmpeg.h:441
+
check_streamcopy_filters
void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type)
Definition: fftools_ffmpeg_opt.c:1731
+
reset_options
void reset_options(OptionsContext *o, int is_input)
+
input_files
__thread InputFile ** input_files
Definition: fftools_ffmpeg.c:178
+
OptionsContext::nb_pass
int nb_pass
Definition: fftools_ffmpeg.h:239
+
FilterGraph::graph
AVFilterGraph * graph
Definition: fftools_ffmpeg.h:315
+
InputStream::user_set_discard
int user_set_discard
Definition: fftools_ffmpeg.h:328
+
OptionsContext::inter_matrices
SpecifierOpt * inter_matrices
Definition: fftools_ffmpeg.h:214
+
OutputFilter::formats
int * formats
Definition: fftools_ffmpeg.h:306
+
OptionsContext::thread_queue_size
int thread_queue_size
Definition: fftools_ffmpeg.h:147
+
OptionsContext::nb_audio_channels
int nb_audio_channels
Definition: fftools_ffmpeg.h:129
+
OptionsContext::nb_intra_matrices
int nb_intra_matrices
Definition: fftools_ffmpeg.h:213
+
opt_subtitle_codec
int opt_subtitle_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:351
+
InputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:265
+
frame_bits_per_raw_sample
__thread int frame_bits_per_raw_sample
Definition: fftools_ffmpeg_opt.c:185
+
InputStream::framerate
AVRational framerate
Definition: fftools_ffmpeg.h:364
+
OptionsContext::frame_sizes
SpecifierOpt * frame_sizes
Definition: fftools_ffmpeg.h:136
+
filtergraphs
__thread FilterGraph ** filtergraphs
Definition: fftools_ffmpeg.c:186
+
opt_init_hw_device
int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:605
+
OptionsContext::nb_qscale
int nb_qscale
Definition: fftools_ffmpeg.h:203
+
InputStream::wrap_correction_done
int wrap_correction_done
Definition: fftools_ffmpeg.h:348
+
opt_old2new
int opt_old2new(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3126
+
fftools_copy_metadata
int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:668
+
StreamMap::sync_file_index
int sync_file_index
Definition: fftools_ffmpeg.h:107
+
FilterGraph::outputs
OutputFilter ** outputs
Definition: fftools_ffmpeg.h:320
+
OutputStream::sync_ist
struct InputStream * sync_ist
Definition: fftools_ffmpeg.h:487
+
OptionsContext::nb_hwaccel_devices
int nb_hwaccel_devices
Definition: fftools_ffmpeg.h:156
+
OptionsContext::autoscale
SpecifierOpt * autoscale
Definition: fftools_ffmpeg.h:260
+
OptionsContext::metadata_map
SpecifierOpt * metadata_map
Definition: fftools_ffmpeg.h:220
+
FilterGraph::inputs
InputFilter ** inputs
Definition: fftools_ffmpeg.h:318
+
new_data_stream
OutputStream * new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2029
+
SpecifierOpt
Definition: fftools_cmdutils.h:178
+
InputFile::ts_offset
int64_t ts_offset
Definition: fftools_ffmpeg.h:436
+
OutputFilter::format
int format
Definition: fftools_ffmpeg.h:301
+
OutputStream::index
int index
Definition: fftools_ffmpeg.h:480
+
choose_decoder
const AVCodec * choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
Definition: fftools_ffmpeg_opt.c:802
+
InputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:326
+
InputStream::hwaccel_pix_fmt
enum AVPixelFormat hwaccel_pix_fmt
Definition: fftools_ffmpeg.h:406
+
OptionsContext::nb_program
int nb_program
Definition: fftools_ffmpeg.h:255
+
InputFilter::eof
int eof
Definition: fftools_ffmpeg.h:285
+
HWAccel
Definition: fftools_ffmpeg.h:89
+
OutputStream::forced_keyframes
char * forced_keyframes
Definition: fftools_ffmpeg.h:529
+
OptionsContext::format
const char * format
Definition: fftools_ffmpeg.h:124
+
OutputStream::keep_pix_fmt
int keep_pix_fmt
Definition: fftools_ffmpeg.h:567
+
ist_in_filtergraph
int ist_in_filtergraph(FilterGraph *fg, InputStream *ist)
+
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: fftools_ffmpeg.h:333
+
OptionsContext
struct OptionsContext OptionsContext
+
InputFile::eof_reached
int eof_reached
Definition: fftools_ffmpeg.h:427
+
new_output_stream
OutputStream * new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
Definition: fftools_ffmpeg_opt.c:1479
+
OptionsContext::bitexact
int bitexact
Definition: fftools_ffmpeg.h:181
+
OptionsContext::nb_frame_aspect_ratios
int nb_frame_aspect_ratios
Definition: fftools_ffmpeg.h:209
+
OptionsContext::audio_disable
int audio_disable
Definition: fftools_ffmpeg.h:184
+
OptionsContext::nb_max_muxing_queue_size
int nb_max_muxing_queue_size
Definition: fftools_ffmpeg.h:243
+
InputStream::next_pts
int64_t next_pts
synthetic pts for the next decode frame (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:346
+
init_output_filter
void init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc)
Definition: fftools_ffmpeg_opt.c:2156
+
InputStream::hwaccel_retrieve_data
int(* hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame)
Definition: fftools_ffmpeg.h:405
+
OutputStream::error
int64_t error[4]
Definition: fftools_ffmpeg.h:599
+
OptionsContext::nb_metadata_map
int nb_metadata_map
Definition: fftools_ffmpeg.h:221
+
OptionsContext::rate_emu
int rate_emu
Definition: fftools_ffmpeg.h:144
+
OptionsContext::nb_force_fps
int nb_force_fps
Definition: fftools_ffmpeg.h:207
+
OutputFile
struct OutputFile OutputFile
+
StreamMap::sync_stream_index
int sync_stream_index
Definition: fftools_ffmpeg.h:108
+
OptionsContext::time_bases
SpecifierOpt * time_bases
Definition: fftools_ffmpeg.h:256
+
OptionsContext::nb_max_frames
int nb_max_frames
Definition: fftools_ffmpeg.h:195
+
StreamMap::file_index
int file_index
Definition: fftools_ffmpeg.h:105
+
InputFile::ist_index
int ist_index
Definition: fftools_ffmpeg.h:429
+
InputFile::last_ts
int64_t last_ts
Definition: fftools_ffmpeg.h:437
+
OptionsContext::g
OptionGroup * g
Definition: fftools_ffmpeg.h:118
+
InputStream::decoding_needed
int decoding_needed
Definition: fftools_ffmpeg.h:329
+
InputFilter::format
int format
Definition: fftools_ffmpeg.h:274
+
OptionsContext::intra_matrices
SpecifierOpt * intra_matrices
Definition: fftools_ffmpeg.h:212
+
OptionsContext::nb_time_bases
int nb_time_bases
Definition: fftools_ffmpeg.h:257
+
OutputStream::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:513
+
OptionsContext::nb_metadata
int nb_metadata
Definition: fftools_ffmpeg.h:193
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
OutputStream
struct OutputStream OutputStream
+
OutputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:302
+
OutputFilter::width
int width
Definition: fftools_ffmpeg.h:299
+
parse_meta_type
void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec)
Definition: fftools_ffmpeg_opt.c:641
+
InputStream::saw_first_ts
int saw_first_ts
Definition: fftools_ffmpeg.h:362
+
OptionsContext::nb_rc_overrides
int nb_rc_overrides
Definition: fftools_ffmpeg.h:211
+
qp_hist
__thread int qp_hist
Definition: fftools_ffmpeg_opt.c:183
+
OptionsContext::nb_enc_time_bases
int nb_enc_time_bases
Definition: fftools_ffmpeg.h:259
+
OutputStream::last_frame
AVFrame * last_frame
Definition: fftools_ffmpeg.h:505
+
InputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:279
+
OptionsContext::copy_initial_nonkeyframes
SpecifierOpt * copy_initial_nonkeyframes
Definition: fftools_ffmpeg.h:224
+
InputStream::guess_layout_max
int guess_layout_max
Definition: fftools_ffmpeg.h:366
+
OptionsContext::copy_prior_start
SpecifierOpt * copy_prior_start
Definition: fftools_ffmpeg.h:226
+
videotoolbox_init
int videotoolbox_init(AVCodecContext *s)
+
copy_tb
__thread int copy_tb
Definition: fftools_ffmpeg_opt.c:178
+
OptionsContext::max_frame_rates
SpecifierOpt * max_frame_rates
Definition: fftools_ffmpeg.h:134
+
OptionsContext::codec_names
SpecifierOpt * codec_names
Definition: fftools_ffmpeg.h:126
+
OptionsContext::nb_bitstream_filters
int nb_bitstream_filters
Definition: fftools_ffmpeg.h:197
+
OptionsContext::fix_sub_duration
SpecifierOpt * fix_sub_duration
Definition: fftools_ffmpeg.h:234
+
opt_map_channel
int opt_map_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:489
+
OptionsContext::reinit_filters
SpecifierOpt * reinit_filters
Definition: fftools_ffmpeg.h:232
+
sub2video_update
void sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub)
Definition: fftools_ffmpeg.c:334
+
OutputFile::ost_index
int ost_index
Definition: fftools_ffmpeg.h:605
+
OutputStream::filters_script
char * filters_script
filtergraph script associated to the -filter_script option
Definition: fftools_ffmpeg.h:544
+
HWAccelID
HWAccelID
Definition: fftools_ffmpeg.h:82
+
opt_attach
int opt_attach(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:481
+
InputFile::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:438
+
nb_input_streams
__thread int nb_input_streams
Definition: fftools_ffmpeg.c:177
+
OutputFile::limit_filesize
uint64_t limit_filesize
Definition: fftools_ffmpeg.h:608
+
OptionsContext::nb_top_field_first
int nb_top_field_first
Definition: fftools_ffmpeg.h:219
+
StreamMap::stream_index
int stream_index
Definition: fftools_ffmpeg.h:106
+
copy_chapters
int copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata)
Definition: fftools_ffmpeg_opt.c:2113
+
OutputStream::dropped_keyframe
int dropped_keyframe
Definition: fftools_ffmpeg.h:532
+
InputStream::nb_packets
uint64_t nb_packets
Definition: fftools_ffmpeg.h:414
+
InputStream::min_pts
int64_t min_pts
Definition: fftools_ffmpeg.h:352
+
OptionsContext::nb_canvas_sizes
int nb_canvas_sizes
Definition: fftools_ffmpeg.h:237
+
InputStream::filter_in_rescale_delta_last
int64_t filter_in_rescale_delta_last
Definition: fftools_ffmpeg.h:350
+
OutputFilter::filter
AVFilterContext * filter
Definition: fftools_ffmpeg.h:289
+
OutputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:482
+
HWAccel::name
const char * name
Definition: fftools_ffmpeg.h:90
+
InputStream::sub2video::frame
AVFrame * frame
Definition: fftools_ffmpeg.h:381
+
dump_attachment
void dump_attachment(AVStream *st, const char *filename)
Definition: fftools_ffmpeg_opt.c:1077
+
OutputFilter
struct OutputFilter OutputFilter
+
video_sync_method
__thread int video_sync_method
Definition: fftools_ffmpeg_opt.c:169
+
do_hex_dump
__thread int do_hex_dump
Definition: fftools_ffmpeg_opt.c:174
+
InputStream::hwaccel_uninit
void(* hwaccel_uninit)(AVCodecContext *s)
Definition: fftools_ffmpeg.h:403
+
remove_avoptions
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: fftools_ffmpeg.c:782
+
InputStream::dts_buffer
int64_t * dts_buffer
Definition: fftools_ffmpeg.h:419
+
sdp_filename
__thread char * sdp_filename
Definition: fftools_ffmpeg_opt.c:161
+
OutputFile
Definition: fftools_ffmpeg.h:602
+
OutputStream::muxing_queue_data_size
size_t muxing_queue_data_size
Definition: fftools_ffmpeg.h:590
+
OptionsContext::nb_frame_sizes
int nb_frame_sizes
Definition: fftools_ffmpeg.h:137
+
opt_vstats_file
int opt_vstats_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3017
+
OptionsContext::chapters_input_file
int chapters_input_file
Definition: fftools_ffmpeg.h:173
+
OptionsContext::nb_apad
int nb_apad
Definition: fftools_ffmpeg.h:249
+
stats_period
__thread int64_t stats_period
Definition: fftools_ffmpeg_opt.c:191
+
OutputFilter::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:300
+
opt_sdp_file
int opt_sdp_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:566
+
InputStream::ret
int ret
Definition: fftools_ffmpeg.h:373
+
HWAccel
struct HWAccel HWAccel
+
HWDevice
Definition: fftools_ffmpeg.h:96
+
new_video_stream
OutputStream * new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:1745
+
opt_default_new
int opt_default_new(OptionsContext *o, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3058
+
HWAccel::init
int(* init)(AVCodecContext *s)
Definition: fftools_ffmpeg.h:91
+
FilterGraph::reconfiguration
int reconfiguration
Definition: fftools_ffmpeg.h:316
+
OutputStream::max_frames
int64_t max_frames
Definition: fftools_ffmpeg.h:503
+
OutputStream::apad
char * apad
Definition: fftools_ffmpeg.h:550
+
OptionsContext::canvas_sizes
SpecifierOpt * canvas_sizes
Definition: fftools_ffmpeg.h:236
+
OptionsContext::nb_streamid_map
int nb_streamid_map
Definition: fftools_ffmpeg.h:190
+
exit_on_error
__thread int exit_on_error
Definition: fftools_ffmpeg_opt.c:180
+
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: fftools_ffmpeg.h:522
+
OutputStream::unavailable
int unavailable
Definition: fftools_ffmpeg.h:552
+
OutputStream::mux_timebase
AVRational mux_timebase
Definition: fftools_ffmpeg.h:495
+
OptionsContext::nb_dump_attachment
int nb_dump_attachment
Definition: fftools_ffmpeg.h:152
+
new_subtitle_stream
OutputStream * new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2063
+
OptionsContext::apad
SpecifierOpt * apad
Definition: fftools_ffmpeg.h:248
+
OptionsContext::filters
SpecifierOpt * filters
Definition: fftools_ffmpeg.h:228
+
hw_device_setup_for_decode
int hw_device_setup_for_decode(InputStream *ist)
Definition: fftools_ffmpeg_hw.c:312
+
OptionsContext::nb_forced_key_frames
int nb_forced_key_frames
Definition: fftools_ffmpeg.h:205
+
fftools_cmdutils.h
+
OptionsContext::subtitle_disable
int subtitle_disable
Definition: fftools_ffmpeg.h:185
+
InputStream::hwaccel_device
char * hwaccel_device
Definition: fftools_ffmpeg.h:398
+
InputFilter::channels
int channels
Definition: fftools_ffmpeg.h:280
+
open_input_file
int open_input_file(OptionsContext *o, const char *filename)
Definition: fftools_ffmpeg_opt.c:1109
+
nb_filtergraphs
__thread int nb_filtergraphs
Definition: fftools_ffmpeg.c:187
+
FKF_PREV_FORCED_T
@ FKF_PREV_FORCED_T
Definition: fftools_ffmpeg.h:463
+
OutputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:296
+
term_init
void term_init(void)
Definition: fftools_ffmpeg.c:495
+
InputStream::hwaccel_id
enum HWAccelID hwaccel_id
Definition: fftools_ffmpeg.h:396
+
OptionsContext::nb_autorotate
int nb_autorotate
Definition: fftools_ffmpeg.h:160
+
OptionsContext::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:175
+
InputStream::nb_dts_buffer
int nb_dts_buffer
Definition: fftools_ffmpeg.h:420
+
nb_input_files
__thread int nb_input_files
Definition: fftools_ffmpeg.c:179
+
OutputStream::forced_kf_count
int forced_kf_count
Definition: fftools_ffmpeg.h:527
+
OptionsContext::metadata_streams_manual
int metadata_streams_manual
Definition: fftools_ffmpeg.h:168
+
InputStream::hwaccel_retrieved_pix_fmt
enum AVPixelFormat hwaccel_retrieved_pix_fmt
Definition: fftools_ffmpeg.h:407
+
InputFilter
struct InputFilter InputFilter
+
init_complex_filtergraph
int init_complex_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:314
+
OutputFilter::out_tmp
AVFilterInOut * out_tmp
Definition: fftools_ffmpeg.h:295
+
do_benchmark
__thread int do_benchmark
Definition: fftools_ffmpeg_opt.c:172
+
OptionsContext::muxing_queue_data_threshold
SpecifierOpt * muxing_queue_data_threshold
Definition: fftools_ffmpeg.h:244
+
OptionsContext::nb_disposition
int nb_disposition
Definition: fftools_ffmpeg.h:253
+
opt_vsync
int opt_vsync(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3196
+
OptionsContext::nb_inter_matrices
int nb_inter_matrices
Definition: fftools_ffmpeg.h:215
+
check_filter_outputs
void check_filter_outputs(void)
Definition: fftools_ffmpeg_filter.c:643
+
InputStream::filters
InputFilter ** filters
Definition: fftools_ffmpeg.h:390
+
vstats_version
__thread int vstats_version
Definition: fftools_ffmpeg_opt.c:189
+
OptionsContext::audio_channels
SpecifierOpt * audio_channels
Definition: fftools_ffmpeg.h:128
+
opt_map
int opt_map(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:363
+
InputStream::nb_samples
int64_t nb_samples
Definition: fftools_ffmpeg.h:359
+
audio_volume
__thread int audio_volume
Definition: fftools_ffmpeg_opt.c:167
+
videotoolbox_pixfmt
__thread char * videotoolbox_pixfmt
+
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: fftools_ffmpeg.h:500
+
HWDevice::device_ref
AVBufferRef * device_ref
Definition: fftools_ffmpeg.h:99
+
OptionsContext::video_disable
int video_disable
Definition: fftools_ffmpeg.h:183
+
OptionsContext::nb_guess_layout_max
int nb_guess_layout_max
Definition: fftools_ffmpeg.h:247
+
InputStream::pts
int64_t pts
current pts of the decoded frame (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:347
+
OptionsContext::ts_scale
SpecifierOpt * ts_scale
Definition: fftools_ffmpeg.h:149
+
InputFile::time_base
AVRational time_base
Definition: fftools_ffmpeg.h:433
+
OptionsContext::program
SpecifierOpt * program
Definition: fftools_ffmpeg.h:254
+
InputStream::sub2video
struct InputStream::sub2video sub2video
+
start_at_zero
__thread int start_at_zero
Definition: fftools_ffmpeg_opt.c:177
+
OutputStream::samples_encoded
uint64_t samples_encoded
Definition: fftools_ffmpeg.h:576
+
InputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:325
+
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:607
+
OutputStream::audio_channels_map
int * audio_channels_map
Definition: fftools_ffmpeg.h:535
+
OptionGroup
Definition: fftools_cmdutils.h:300
+
hw_device_get_by_name
HWDevice * hw_device_get_by_name(const char *name)
Definition: fftools_ffmpeg_hw.c:53
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+
InputStream::dec
const AVCodec * dec
Definition: fftools_ffmpeg.h:334
+
OutputStream
Definition: fftools_ffmpeg.h:478
+
InputStream::hwaccel_output_format
enum AVPixelFormat hwaccel_output_format
Definition: fftools_ffmpeg.h:399
+
InputStream::start
int64_t start
Definition: fftools_ffmpeg.h:339
+
open_files
int open_files(OptionGroupList *l, const char *inout, int(*open_file)(OptionsContext *, const char *))
+
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: fftools_ffmpeg.h:85
+
OptionsContext::start_time_eof
int64_t start_time_eof
Definition: fftools_ffmpeg.h:122
+
InputFilter::width
int width
Definition: fftools_ffmpeg.h:276
+
OptionsContext::nb_hwaccel_output_formats
int nb_hwaccel_output_formats
Definition: fftools_ffmpeg.h:158
+
OutputStream::copy_initial_nonkeyframes
int copy_initial_nonkeyframes
Definition: fftools_ffmpeg.h:563
+
print_stats
__thread int print_stats
Definition: fftools_ffmpeg_opt.c:182
+
assert_file_overwrite
void assert_file_overwrite(const char *filename)
Definition: fftools_ffmpeg_opt.c:1034
+
nb_output_files
__thread int nb_output_files
Definition: fftools_ffmpeg.c:184
+
OptionsContext::nb_muxing_queue_data_threshold
int nb_muxing_queue_data_threshold
Definition: fftools_ffmpeg.h:245
+
OutputFilter::height
int height
Definition: fftools_ffmpeg.h:299
+
init_options
void init_options(OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:239
+
ost
OutputStream * ost
Definition: fftools_ffmpeg_filter.c:172
+
InputFilter::hw_frames_ctx
AVBufferRef * hw_frames_ctx
Definition: fftools_ffmpeg.h:283
+
InputFile::rate_emu
int rate_emu
Definition: fftools_ffmpeg.h:444
+
InputStream::decoder_opts
AVDictionary * decoder_opts
Definition: fftools_ffmpeg.h:363
+
InputStream::next_dts
int64_t next_dts
Definition: fftools_ffmpeg.h:342
+
InputFile::duration
int64_t duration
Definition: fftools_ffmpeg.h:431
+
filter_complex_nbthreads
__thread int filter_complex_nbthreads
Definition: fftools_ffmpeg_opt.c:188
+
OutputStream::initialized
int initialized
Definition: fftools_ffmpeg.h:558
+
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: fftools_ffmpeg.h:546
+
OptionsContext::nb_chroma_intra_matrices
int nb_chroma_intra_matrices
Definition: fftools_ffmpeg.h:217
+
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: fftools_ffmpeg.h:548
+
InputStream::prev_sub
struct InputStream::@2 prev_sub
+
output_streams
__thread OutputStream ** output_streams
Definition: fftools_ffmpeg.c:181
+
OutputFilter::ost
struct OutputStream * ost
Definition: fftools_ffmpeg.h:290
+
OutputFilter::channel_layouts
uint64_t * channel_layouts
Definition: fftools_ffmpeg.h:307
+
InputStream::first_dts
int64_t first_dts
dts of the first packet read for this stream (in AV_TIME_BASE units)
Definition: fftools_ffmpeg.h:343
+
InputFile::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:440
+
StreamMap::linklabel
char * linklabel
Definition: fftools_ffmpeg.h:109
+
OptionsContext::nb_autoscale
int nb_autoscale
Definition: fftools_ffmpeg.h:261
+
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: fftools_ffmpeg.h:434
+
InputStream::frames_decoded
uint64_t frames_decoded
Definition: fftools_ffmpeg.h:416
+
OptionsContext::codec_tags
SpecifierOpt * codec_tags
Definition: fftools_ffmpeg.h:198
+
InputStream::reinit_filters
int reinit_filters
Definition: fftools_ffmpeg.h:393
+
show_hwaccels
int show_hwaccels(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:254
+
copy_ts
__thread int copy_ts
Definition: fftools_ffmpeg_opt.c:176
+
opt_profile
int opt_profile(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3172
+
OutputStream::enc
const AVCodec * enc
Definition: fftools_ffmpeg.h:502
+
OptionsContext::nb_presets
int nb_presets
Definition: fftools_ffmpeg.h:223
+
output_files
__thread OutputFile ** output_files
Definition: fftools_ffmpeg.c:183
+
filtergraph_is_simple
int filtergraph_is_simple(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:1164
+
OutputStream::inputs_done
int inputs_done
Definition: fftools_ffmpeg.h:560
+ + + + diff --git a/docs/linux/html/d7/dc8/_arch_detect_8cpp.html b/docs/linux/html/d7/dc8/_arch_detect_8cpp.html new file mode 100644 index 0000000..182f283 --- /dev/null +++ b/docs/linux/html/d7/dc8/_arch_detect_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +FFmpegKit Linux API: ArchDetect.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions | +Variables
+
+
ArchDetect.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

void * ffmpegKitInitialize ()
 
+ + + +

+Variables

const void * _archDetectInitializer {ffmpegKitInitialize()}
 
+

Function Documentation

+ +

◆ ffmpegKitInitialize()

+ +
+
+ + + + + + + +
void * ffmpegKitInitialize ()
+
+ +

Definition at line 762 of file FFmpegKitConfig.cpp.

+ +
+
+

Variable Documentation

+ +

◆ _archDetectInitializer

+ +
+
+ + + + +
const void* _archDetectInitializer {ffmpegKitInitialize()}
+
+ +

Definition at line 24 of file ArchDetect.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d7/dc8/_arch_detect_8cpp_source.html b/docs/linux/html/d7/dc8/_arch_detect_8cpp_source.html new file mode 100644 index 0000000..1522338 --- /dev/null +++ b/docs/linux/html/d7/dc8/_arch_detect_8cpp_source.html @@ -0,0 +1,118 @@ + + + + + + + +FFmpegKit Linux API: ArchDetect.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ArchDetect.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "ArchDetect.h"
+
21 
+
22 extern void* ffmpegKitInitialize();
+
23 
+ +
25 
+ +
27 #ifdef FFMPEG_KIT_ARM64
+
28  return "arm64";
+
29 #elif FFMPEG_KIT_I386
+
30  return "i386";
+
31 #elif FFMPEG_KIT_X86_64
+
32  return "x86_64";
+
33 #else
+
34  return "";
+
35 #endif
+
36 }
+
+
ffmpegKitInitialize
void * ffmpegKitInitialize()
Definition: FFmpegKitConfig.cpp:762
+
_archDetectInitializer
const void * _archDetectInitializer
Definition: ArchDetect.cpp:24
+
ArchDetect.h
+
ffmpegkit::ArchDetect::getArch
static std::string getArch()
Definition: ArchDetect.cpp:26
+ + + + diff --git a/docs/linux/html/d7/dcc/fftools__cmdutils_8c.html b/docs/linux/html/d7/dcc/fftools__cmdutils_8c.html new file mode 100644 index 0000000..0fd082d --- /dev/null +++ b/docs/linux/html/d7/dcc/fftools__cmdutils_8c.html @@ -0,0 +1,3872 @@ + + + + + + + +FFmpegKit Linux API: fftools_cmdutils.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Macros | +Enumerations | +Functions | +Variables
+
+
fftools_cmdutils.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define FLAGS   (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
 
#define GET_ARG(arg)
 
#define INDENT   1
 
#define SHOW_VERSION   2
 
#define SHOW_CONFIG   4
 
#define SHOW_COPYRIGHT   8
 
#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)
 
#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name)
 
#define sws_isSupportedInput(x)   0
 
#define sws_isSupportedOutput(x)   0
 
+ + + +

+Enumerations

enum  show_muxdemuxers { SHOW_DEFAULT, +SHOW_DEMUXERS, +SHOW_MUXERS + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static int init_report (const char *env)
 
void ffmpegkit_log_callback_function (void *ptr, int level, const char *format, va_list vargs)
 
void uninit_opts (void)
 
void log_callback_report (void *ptr, int level, const char *fmt, va_list vl)
 
void init_dynload (void)
 
void register_exit (void(*cb)(int ret))
 
void exit_program (int ret)
 
double parse_number_or_die (const char *context, const char *numstr, int type, double min, double max)
 
int64_t parse_time_or_die (const char *context, const char *timestr, int is_duration)
 
void show_help_options (const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
 
void show_help_children (const AVClass *avClass, int flags)
 
static const OptionDeffind_option (const OptionDef *po, const char *name)
 
static void prepare_app_arguments (int *argc_ptr, char ***argv_ptr)
 
static int write_option (void *optctx, const OptionDef *po, const char *opt, const char *arg)
 
int parse_option (void *optctx, const char *opt, const char *arg, const OptionDef *options)
 
void parse_options (void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
 
int parse_optgroup (void *optctx, OptionGroup *g)
 
int locate_option (int argc, char **argv, const OptionDef *options, const char *optname)
 
static void dump_argument (const char *a)
 
static void check_options (const OptionDef *po)
 
void parse_loglevel (int argc, char **argv, const OptionDef *options)
 
static const AVOption * opt_find (void *obj, const char *name, const char *unit, int opt_flags, int search_flags)
 
int opt_default (void *optctx, const char *opt, const char *arg)
 
static int match_group_separator (const OptionGroupDef *groups, int nb_groups, const char *opt)
 
static void finish_group (OptionParseContext *octx, int group_idx, const char *arg)
 
static void add_opt (OptionParseContext *octx, const OptionDef *opt, const char *key, const char *val)
 
static void init_parse_context (OptionParseContext *octx, const OptionGroupDef *groups, int nb_groups)
 
void uninit_parse_context (OptionParseContext *octx)
 
int split_commandline (OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
 
int opt_cpuflags (void *optctx, const char *opt, const char *arg)
 
int opt_cpucount (void *optctx, const char *opt, const char *arg)
 
int opt_loglevel (void *optctx, const char *opt, const char *arg)
 
static void expand_filename_template (AVBPrint *bp, const char *template, struct tm *tm)
 
int opt_report (void *optctx, const char *opt, const char *arg)
 
int opt_max_alloc (void *optctx, const char *opt, const char *arg)
 
int opt_timelimit (void *optctx, const char *opt, const char *arg)
 
void print_error (const char *filename, int err)
 
static void print_all_libs_info (int flags, int level)
 
static void print_program_info (int flags, int level)
 
static void print_buildconf (int flags, int level)
 
void show_banner (int argc, char **argv, const OptionDef *options)
 
int show_version (void *optctx, const char *opt, const char *arg)
 
int show_buildconf (void *optctx, const char *opt, const char *arg)
 
int show_license (void *optctx, const char *opt, const char *arg)
 
static int is_device (const AVClass *avclass)
 
static int show_formats_devices (void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers)
 
int show_formats (void *optctx, const char *opt, const char *arg)
 
int show_muxers (void *optctx, const char *opt, const char *arg)
 
int show_demuxers (void *optctx, const char *opt, const char *arg)
 
int show_devices (void *optctx, const char *opt, const char *arg)
 
static void print_codec (const AVCodec *c)
 
static char get_media_type_char (enum AVMediaType type)
 
static const AVCodec * next_codec_for_id (enum AVCodecID id, void **iter, int encoder)
 
static int compare_codec_desc (const void *a, const void *b)
 
static unsigned get_codecs_sorted (const AVCodecDescriptor ***rcodecs)
 
static void print_codecs_for_id (enum AVCodecID id, int encoder)
 
int show_codecs (void *optctx, const char *opt, const char *arg)
 
static void print_codecs (int encoder)
 
int show_decoders (void *optctx, const char *opt, const char *arg)
 
int show_encoders (void *optctx, const char *opt, const char *arg)
 
int show_bsfs (void *optctx, const char *opt, const char *arg)
 
int show_protocols (void *optctx, const char *opt, const char *arg)
 
int show_filters (void *optctx, const char *opt, const char *arg)
 
int show_colors (void *optctx, const char *opt, const char *arg)
 
int show_pix_fmts (void *optctx, const char *opt, const char *arg)
 
int show_layouts (void *optctx, const char *opt, const char *arg)
 
int show_sample_fmts (void *optctx, const char *opt, const char *arg)
 
static void show_help_codec (const char *name, int encoder)
 
static void show_help_demuxer (const char *name)
 
static void show_help_protocol (const char *name)
 
static void show_help_muxer (const char *name)
 
static void show_help_bsf (const char *name)
 
int show_help (void *optctx, const char *opt, const char *arg)
 
int read_yesno (void)
 
FILE * get_preset_file (char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
 
int check_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec)
 
AVDictionary * filter_codec_opts (AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
 
AVDictionary ** setup_find_stream_info_opts (AVFormatContext *s, AVDictionary *codec_opts)
 
void * grow_array (void *array, int elem_size, int *size, int new_size)
 
double get_rotation (AVStream *st)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

void(* report_callback )(int, float, float, int64_t, int, double, double)
 
__thread char * program_name
 
__thread int program_birth_year
 
__thread AVDictionary * sws_dict
 
__thread AVDictionary * swr_opts
 
__thread AVDictionary * format_opts
 
__thread AVDictionary * codec_opts
 
__thread AVDictionary * resample_opts
 
FILE * report_file
 
int report_file_level = AV_LOG_DEBUG
 
__thread int hide_banner = 0
 
__thread volatile int longjmp_value = 0
 
static __thread void(* program_exit )(int ret)
 
__thread int warned_cfg = 0
 
+

Macro Definition Documentation

+ +

◆ FLAGS

+ +
+
+ + + + +
#define FLAGS   (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
+
+ +

Definition at line 574 of file fftools_cmdutils.c.

+ +
+
+ +

◆ GET_ARG

+ +
+
+ + + + + + + + +
#define GET_ARG( arg)
+
+Value:
do { \
+
if (optindex < argc) { \
+
arg = argv[optindex++]; \
+
} else { \
+
av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\
+
return AVERROR(EINVAL); \
+
} \
+
} while (0)
+
+
+
+ +

◆ INDENT

+ +
+
+ + + + +
#define INDENT   1
+
+ +

Definition at line 1146 of file fftools_cmdutils.c.

+ +
+
+ +

◆ PRINT_CODEC_SUPPORTED

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PRINT_CODEC_SUPPORTED( codec,
 field,
 type,
 list_name,
 term,
 get_name 
)
+
+Value:
if (codec->field) { \
+
const type *p = codec->field; \
+
\
+
av_log(NULL, AV_LOG_STDERR, " Supported " list_name ":"); \
+
while (*p != term) { \
+
get_name(*p); \
+
av_log(NULL, AV_LOG_STDERR, " %s", name); \
+
p++; \
+
} \
+
av_log(NULL, AV_LOG_STDERR, "\n"); \
+
} \
+
+

Definition at line 1421 of file fftools_cmdutils.c.

+ +
+
+ +

◆ PRINT_LIB_INFO

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define PRINT_LIB_INFO( libname,
 LIBNAME,
 flags,
 level 
)
+
+Value:
if (CONFIG_##LIBNAME) { \
+
const char *indent = flags & INDENT? " " : ""; \
+
if (flags & SHOW_VERSION) { \
+
unsigned int version = libname##_version(); \
+
av_log(NULL, level, \
+
"%slib%-11s %2d.%3d.%3d / %2d.%3d.%3d\n", \
+
indent, #libname, \
+
LIB##LIBNAME##_VERSION_MAJOR, \
+
LIB##LIBNAME##_VERSION_MINOR, \
+
LIB##LIBNAME##_VERSION_MICRO, \
+
AV_VERSION_MAJOR(version), AV_VERSION_MINOR(version),\
+
AV_VERSION_MICRO(version)); \
+
} \
+
if (flags & SHOW_CONFIG) { \
+
const char *cfg = libname##_configuration(); \
+
if (strcmp(FFMPEG_CONFIGURATION, cfg)) { \
+
if (!warned_cfg) { \
+
av_log(NULL, level, \
+
"%sWARNING: library configuration mismatch\n", \
+
indent); \
+
warned_cfg = 1; \
+
} \
+
av_log(NULL, level, "%s%-11s configuration: %s\n", \
+
indent, #libname, cfg); \
+
} \
+
} \
+
} \
+
+

Definition at line 1151 of file fftools_cmdutils.c.

+ +
+
+ +

◆ SHOW_CONFIG

+ +
+
+ + + + +
#define SHOW_CONFIG   4
+
+ +

Definition at line 1148 of file fftools_cmdutils.c.

+ +
+
+ +

◆ SHOW_COPYRIGHT

+ +
+
+ + + + +
#define SHOW_COPYRIGHT   8
+
+ +

Definition at line 1149 of file fftools_cmdutils.c.

+ +
+
+ +

◆ SHOW_VERSION

+ +
+
+ + + + +
#define SHOW_VERSION   2
+
+ +

Definition at line 1147 of file fftools_cmdutils.c.

+ +
+
+ +

◆ sws_isSupportedInput

+ +
+
+ + + + + + + + +
#define sws_isSupportedInput( x)   0
+
+ +
+
+ +

◆ sws_isSupportedOutput

+ +
+
+ + + + + + + + +
#define sws_isSupportedOutput( x)   0
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ show_muxdemuxers

+ +
+
+ + + + +
enum show_muxdemuxers
+
+ + + + +
Enumerator
SHOW_DEFAULT 
SHOW_DEMUXERS 
SHOW_MUXERS 
+ +

Definition at line 109 of file fftools_cmdutils.c.

+ +
+
+

Function Documentation

+ +

◆ add_opt()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void add_opt (OptionParseContextoctx,
const OptionDefopt,
const char * key,
const char * val 
)
+
+static
+
+ +

Definition at line 712 of file fftools_cmdutils.c.

+ +
+
+ +

◆ check_options()

+ +
+
+ + + + + +
+ + + + + + + + +
static void check_options (const OptionDefpo)
+
+static
+
+ +

Definition at line 527 of file fftools_cmdutils.c.

+ +
+
+ +

◆ check_stream_specifier()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int check_stream_specifier (AVFormatContext * s,
AVStream * st,
const char * spec 
)
+
+

Check if the given stream matches a stream specifier.

+
Parameters
+ + + + +
sCorresponding format context.
stStream from s to be checked.
specA stream specifier of the [v|a|s|d]:[<stream index>] form.
+
+
+
Returns
1 if the stream matches, 0 if it doesn't, <0 on error
+ +

Definition at line 2148 of file fftools_cmdutils.c.

+ +
+
+ +

◆ compare_codec_desc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int compare_codec_desc (const void * a,
const void * b 
)
+
+static
+
+ +

Definition at line 1553 of file fftools_cmdutils.c.

+ +
+
+ +

◆ dump_argument()

+ +
+
+ + + + + +
+ + + + + + + + +
static void dump_argument (const char * a)
+
+static
+
+ +

Definition at line 503 of file fftools_cmdutils.c.

+ +
+
+ +

◆ exit_program()

+ +
+
+ + + + + + + + +
void exit_program (int ret)
+
+

Wraps exit with a program-specific cleanup routine.

+ +

Definition at line 160 of file fftools_cmdutils.c.

+ +
+
+ +

◆ expand_filename_template()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void expand_filename_template (AVBPrint * bp,
const char * template,
struct tm * tm 
)
+
+static
+
+ +

Definition at line 996 of file fftools_cmdutils.c.

+ +
+
+ +

◆ ffmpegkit_log_callback_function()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ffmpegkit_log_callback_function (void * ptr,
int level,
const char * format,
va_list vargs 
)
+
+

Callback function for FFmpeg/FFprobe logs.

+
Parameters
+ + + + + +
ptrpointer to AVClass struct
levellog level
formatformat string
vargsarguments
+
+
+ +

Definition at line 466 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ filter_codec_opts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AVDictionary* filter_codec_opts (AVDictionary * opts,
enum AVCodecID codec_id,
AVFormatContext * s,
AVStream * st,
const AVCodec * codec 
)
+
+

Filter out options for given codec.

+

Create a new options dictionary containing only the options from opts which apply to the codec with ID codec_id.

+
Parameters
+ + + + + + +
optsdictionary to place options in
codec_idID of the codec that should be filtered for
sCorresponding format context.
stA stream from s for which the options should be filtered.
codecThe particular codec for which the options should be filtered. If null, the default one is looked up according to the codec id.
+
+
+
Returns
a pointer to the created dictionary
+ +

Definition at line 2156 of file fftools_cmdutils.c.

+ +
+
+ +

◆ find_option()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const OptionDef* find_option (const OptionDefpo,
const char * name 
)
+
+static
+
+ +

Definition at line 246 of file fftools_cmdutils.c.

+ +
+
+ +

◆ finish_group()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void finish_group (OptionParseContextoctx,
int group_idx,
const char * arg 
)
+
+static
+
+ +

Definition at line 682 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_codecs_sorted()

+ +
+
+ + + + + +
+ + + + + + + + +
static unsigned get_codecs_sorted (const AVCodecDescriptor *** rcodecs)
+
+static
+
+ +

Definition at line 1562 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_media_type_char()

+ +
+
+ + + + + +
+ + + + + + + + +
static char get_media_type_char (enum AVMediaType type)
+
+static
+
+ +

Definition at line 1529 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_preset_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FILE* get_preset_file (char * filename,
size_t filename_size,
const char * preset_name,
int is_path,
const char * codec_name 
)
+
+

Get a file corresponding to a preset file.

+

If is_path is non-zero, look for the file in the path preset_name. Otherwise search for a file named arg.ffpreset in the directories $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined at configuration time or in a "ffpresets" folder along the executable on win32, in that order. If no such file is found and codec_name is defined, then search for a file named codec_name-preset_name.avpreset in the above-mentioned directories.

+
Parameters
+ + + + + + +
filenamebuffer where the name of the found filename is written
filename_sizesize in bytes of the filename buffer
preset_namename of the preset to search
is_pathtell if preset_name is a filename path
codec_namename of the codec for which to look for the preset, may be NULL
+
+
+ +

Definition at line 2098 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_rotation()

+ +
+
+ + + + + + + + +
double get_rotation (AVStream * st)
+
+ +

Definition at line 2253 of file fftools_cmdutils.c.

+ +
+
+ +

◆ grow_array()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void* grow_array (void * array,
int elem_size,
intsize,
int new_size 
)
+
+

Realloc array to hold new_size elements of elem_size. Calls exit() on failure.

+
Parameters
+ + + + + +
arrayarray to reallocate
elem_sizesize in bytes of each element
sizenew element count will be written here
new_sizenumber of elements to place in reallocated array
+
+
+
Returns
reallocated array
+ +

Definition at line 2234 of file fftools_cmdutils.c.

+ +
+
+ +

◆ init_dynload()

+ +
+
+ + + + + + + + +
void init_dynload (void )
+
+

Initialize dynamic library loading

+ +

Definition at line 144 of file fftools_cmdutils.c.

+ +
+
+ +

◆ init_parse_context()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void init_parse_context (OptionParseContextoctx,
const OptionGroupDefgroups,
int nb_groups 
)
+
+static
+
+ +

Definition at line 724 of file fftools_cmdutils.c.

+ +
+
+ +

◆ init_report()

+ +
+
+ + + + + +
+ + + + + + + + +
static int init_report (const char * env)
+
+static
+
+ +

Definition at line 1024 of file fftools_cmdutils.c.

+ +
+
+ +

◆ is_device()

+ +
+
+ + + + + +
+ + + + + + + + +
static int is_device (const AVClass * avclass)
+
+static
+
+ +

Definition at line 1331 of file fftools_cmdutils.c.

+ +
+
+ +

◆ locate_option()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int locate_option (int argc,
char ** argv,
const OptionDefoptions,
const char * optname 
)
+
+

Return index of option opt in argv or 0 if not found.

+ +

Definition at line 477 of file fftools_cmdutils.c.

+ +
+
+ +

◆ log_callback_report()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void log_callback_report (void * ptr,
int level,
const char * fmt,
va_list vl 
)
+
+ +

Definition at line 124 of file fftools_cmdutils.c.

+ +
+
+ +

◆ match_group_separator()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int match_group_separator (const OptionGroupDefgroups,
int nb_groups,
const char * opt 
)
+
+static
+
+ +

Definition at line 662 of file fftools_cmdutils.c.

+ +
+
+ +

◆ next_codec_for_id()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static const AVCodec* next_codec_for_id (enum AVCodecID id,
void ** iter,
int encoder 
)
+
+static
+
+ +

Definition at line 1541 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_cpucount()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_cpucount (void * optctx,
const char * opt,
const char * arg 
)
+
+

Override the cpucount.

+ +

Definition at line 893 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_cpuflags()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_cpuflags (void * optctx,
const char * opt,
const char * arg 
)
+
+

Override the cpuflags.

+ +

Definition at line 881 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_default()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_default (void * optctx,
const char * opt,
const char * arg 
)
+
+

Fallback for options that are not explicitly handled, these will be parsed through AVOptions.

+ +

Definition at line 575 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_find()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static const AVOption* opt_find (void * obj,
const char * name,
const char * unit,
int opt_flags,
int search_flags 
)
+
+static
+
+ +

Definition at line 565 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_loglevel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_loglevel (void * optctx,
const char * opt,
const char * arg 
)
+
+

Set the libav* libraries log level.

+ +

Definition at line 919 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_max_alloc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_max_alloc (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 1107 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_report()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_report (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 1102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_timelimit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_timelimit (void * optctx,
const char * opt,
const char * arg 
)
+
+

Limit the execution time.

+ +

Definition at line 1121 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_loglevel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void parse_loglevel (int argc,
char ** argv,
const OptionDefoptions 
)
+
+

Find the '-loglevel' option in the command line args and apply it.

+ +

Definition at line 536 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_number_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double parse_number_or_die (const char * context,
const char * numstr,
int type,
double min,
double max 
)
+
+

Parse a string and return its corresponding value as a double. Exit from the application if the string cannot be correctly parsed or the corresponding value is invalid.

+
Parameters
+ + + + + + +
contextthe context of the value to be set (e.g. the corresponding command line option name)
numstrthe string to be parsed
typethe type (OPT_INT64 or OPT_FLOAT) as which the string should be parsed
minthe minimum valid accepted value
maxthe maximum valid accepted value
+
+
+ +

Definition at line 171 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_optgroup()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int parse_optgroup (void * optctx,
OptionGroupg 
)
+
+

Parse an options group and write results into optctx.

+
Parameters
+ + + +
optctxan app-specific options context. NULL for global options group
goption group
+
+
+ +

Definition at line 444 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_option()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int parse_option (void * optctx,
const char * opt,
const char * arg,
const OptionDefoptions 
)
+
+

Parse one given option.

+
Returns
on success 1 if arg was consumed, 0 otherwise; negative number on error
+ +

Definition at line 376 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_options()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void parse_options (void * optctx,
int argc,
char ** argv,
const OptionDefoptions,
void(*)(void *, const char *) parse_arg_function 
)
+
+ +

Definition at line 409 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_time_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int64_t parse_time_or_die (const char * context,
const char * timestr,
int is_duration 
)
+
+

Parse a string specifying a time and return its corresponding value as a number of microseconds. Exit from the application if the string cannot be correctly parsed.

+
Parameters
+ + + + +
contextthe context of the value to be set (e.g. the corresponding command line option name)
timestrthe string to be parsed
is_durationa flag which tells how to interpret timestr, if not zero timestr is interpreted as a duration, otherwise as a date
+
+
+
See also
av_parse_time()
+ +

Definition at line 192 of file fftools_cmdutils.c.

+ +
+
+ +

◆ prepare_app_arguments()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void prepare_app_arguments (intargc_ptr,
char *** argv_ptr 
)
+
+inlinestatic
+
+ +

Definition at line 315 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_all_libs_info()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_all_libs_info (int flags,
int level 
)
+
+static
+
+ +

Definition at line 1180 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_buildconf()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_buildconf (int flags,
int level 
)
+
+static
+
+ +

Definition at line 1205 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_codec()

+ +
+
+ + + + + +
+ + + + + + + + +
static void print_codec (const AVCodec * c)
+
+static
+
+ +

Definition at line 1434 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_codecs()

+ +
+
+ + + + + +
+ + + + + + + + +
static void print_codecs (int encoder)
+
+static
+
+ +

Definition at line 1652 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_codecs_for_id()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_codecs_for_id (enum AVCodecID id,
int encoder 
)
+
+static
+
+ +

Definition at line 1583 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_error()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void print_error (const char * filename,
int err 
)
+
+

Print an error message to stderr, indicating filename and a human readable description of the error code err.

+

If strerror_r() is not available the use of this function in a multithreaded application may be unsafe.

+
See also
av_strerror()
+ +

Definition at line 1134 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_program_info()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_program_info (int flags,
int level 
)
+
+static
+
+ +

Definition at line 1191 of file fftools_cmdutils.c.

+ +
+
+ +

◆ read_yesno()

+ +
+
+ + + + + + + + +
int read_yesno (void )
+
+

Return a positive value if a line read from standard input starts with [yY], otherwise return 0.

+ +

Definition at line 2087 of file fftools_cmdutils.c.

+ +
+
+ +

◆ register_exit()

+ +
+
+ + + + + + + + +
void register_exit (void(*)(int ret) cb)
+
+

Register a program-specific cleanup routine.

+ +

Definition at line 155 of file fftools_cmdutils.c.

+ +
+
+ +

◆ setup_find_stream_info_opts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
AVDictionary** setup_find_stream_info_opts (AVFormatContext * s,
AVDictionary * codec_opts 
)
+
+

Setup AVCodecContext options for avformat_find_stream_info().

+

Create an array of dictionaries, one dictionary for each stream contained in s. Each dictionary will contain the options from codec_opts which can be applied to the corresponding stream codec context.

+
Returns
pointer to the created array of dictionaries, NULL if it cannot be created
+ +

Definition at line 2214 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_banner()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void show_banner (int argc,
char ** argv,
const OptionDefoptions 
)
+
+

Print the program banner to stderr. The banner contents depend on the current version of the repository and of the libav* libraries used by the program.

+ +

Definition at line 1231 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_bsfs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_bsfs (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the bit stream filters supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1703 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_buildconf()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_buildconf (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the build configuration of the program to stdout. The contents depend on the definition of FFMPEG_CONFIGURATION. This option processing function does not utilize the arguments.

+ +

Definition at line 1250 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_codecs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_codecs (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the codecs supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1596 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_colors()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_colors (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the color names and values recognized by the program.

+ +

Definition at line 1777 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_decoders()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_decoders (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the decoders supported by the program.

+ +

Definition at line 1691 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_demuxers()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_demuxers (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the demuxer supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1411 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_devices()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_devices (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the devices supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1416 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_encoders()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_encoders (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the encoders supported by the program.

+ +

Definition at line 1697 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the filters supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1730 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_formats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_formats (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the formats supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1401 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_formats_devices()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int show_formats_devices (void * optctx,
const char * opt,
const char * arg,
int device_only,
int muxdemuxers 
)
+
+static
+
+ +

Definition at line 1338 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_help (void * optctx,
const char * opt,
const char * arg 
)
+
+

Generic -h handler common to all fftools.

+ +

Definition at line 2042 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_bsf()

+ +
+
+ + + + + +
+ + + + + + + + +
static void show_help_bsf (const char * name)
+
+static
+
+ +

Definition at line 2023 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_children()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_children (const AVClass * avClass,
int flags 
)
+
+

Show help for all options with given flags in class and all its children.

+ +

Definition at line 233 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_codec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void show_help_codec (const char * name,
int encoder 
)
+
+static
+
+ +

Definition at line 1862 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_demuxer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void show_help_demuxer (const char * name)
+
+static
+
+ +

Definition at line 1898 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_muxer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void show_help_muxer (const char * name)
+
+static
+
+ +

Definition at line 1934 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_options()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void show_help_options (const OptionDefoptions,
const char * msg,
int req_flags,
int rej_flags,
int alt_flags 
)
+
+

Print help for all options matching specified flags.

+
Parameters
+ + + + + + +
optionsa list of options
msgtitle of this group. Only printed if at least one option matches.
req_flagsprint only options which have all those flags set.
rej_flagsdon't print options which have any of those flags set.
alt_flagsprint only options that have at least one of those flags set
+
+
+ +

Definition at line 204 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_protocol()

+ +
+
+ + + + + +
+ + + + + + + + +
static void show_help_protocol (const char * name)
+
+static
+
+ +

Definition at line 1916 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_layouts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_layouts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the standard channel layouts supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1824 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_license()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_license (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the license of the program to stdout. The license depends on the license of the libraries compiled into the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1257 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_muxers()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_muxers (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the muxers supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1406 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_pix_fmts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_pix_fmts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the pixel formats supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1791 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_protocols()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_protocols (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the protocols supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1715 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_sample_fmts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_sample_fmts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the sample formats supported by the program.

+ +

Definition at line 1853 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_version()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_version (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the version of the program to stdout. The version message depends on the current versions of the repository and of the libav* libraries. This option processing function does not utilize the arguments.

+ +

Definition at line 1242 of file fftools_cmdutils.c.

+ +
+
+ +

◆ split_commandline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int split_commandline (OptionParseContextoctx,
int argc,
char * argv[],
const OptionDefoptions,
const OptionGroupDefgroups,
int nb_groups 
)
+
+

Split the commandline into an intermediate form convenient for further processing.

+

The commandline is assumed to be composed of options which either belong to a group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global (everything else).

+

A group (defined by an OptionGroupDef struct) is a sequence of options terminated by either a group separator option (e.g. -i) or a parameter that is not an option (doesn't start with -). A group without a separator option must always be first in the supplied groups list.

+

All options within the same group are stored in one OptionGroup struct in an OptionGroupList, all groups with the same group definition are stored in one OptionGroupList in OptionParseContext.groups. The order of group lists is the same as the order of group definitions.

+ +

Definition at line 770 of file fftools_cmdutils.c.

+ +
+
+ +

◆ uninit_opts()

+ +
+
+ + + + + + + + +
void uninit_opts (void )
+
+

Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.

+ +

Definition at line 115 of file fftools_cmdutils.c.

+ +
+
+ +

◆ uninit_parse_context()

+ +
+
+ + + + + + + + +
void uninit_parse_context (OptionParseContextoctx)
+
+

Free all allocated memory in an OptionParseContext.

+ +

Definition at line 744 of file fftools_cmdutils.c.

+ +
+
+ +

◆ write_option()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int write_option (void * optctx,
const OptionDefpo,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 321 of file fftools_cmdutils.c.

+ +
+
+

Variable Documentation

+ +

◆ codec_opts

+ +
+
+ + + + +
__thread AVDictionary * codec_opts
+
+ +

Definition at line 102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ format_opts

+ +
+
+ + + + +
__thread AVDictionary* format_opts
+
+ +

Definition at line 102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ hide_banner

+ +
+
+ + + + +
__thread int hide_banner = 0
+
+ +

Definition at line 106 of file fftools_cmdutils.c.

+ +
+
+ +

◆ longjmp_value

+ +
+
+ + + + +
__thread volatile int longjmp_value = 0
+
+ +

Definition at line 107 of file fftools_cmdutils.c.

+ +
+
+ +

◆ program_birth_year

+ +
+
+ + + + +
__thread int program_birth_year
+
+

program birth year, defined by the program for show_banner()

+ +

Definition at line 98 of file fftools_cmdutils.c.

+ +
+
+ +

◆ program_exit

+ +
+
+ + + + + +
+ + + + +
__thread void(* program_exit) (int ret)
+
+static
+
+ +

Definition at line 153 of file fftools_cmdutils.c.

+ +
+
+ +

◆ program_name

+ +
+
+ + + + +
__thread char* program_name
+
+

program name, defined by the program for show_version().

+ +

Definition at line 97 of file fftools_cmdutils.c.

+ +
+
+ +

◆ report_callback

+ +
+
+ + + + +
void(* report_callback) (int, float, float, int64_t, int, double, double)
+
+ +

Definition at line 194 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ report_file

+ +
+
+ + + + +
FILE* report_file
+
+ +

Definition at line 104 of file fftools_cmdutils.c.

+ +
+
+ +

◆ report_file_level

+ +
+
+ + + + +
int report_file_level = AV_LOG_DEBUG
+
+ +

Definition at line 105 of file fftools_cmdutils.c.

+ +
+
+ +

◆ resample_opts

+ +
+
+ + + + +
__thread AVDictionary * resample_opts
+
+ +

Definition at line 102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ swr_opts

+ +
+
+ + + + +
__thread AVDictionary* swr_opts
+
+ +

Definition at line 101 of file fftools_cmdutils.c.

+ +
+
+ +

◆ sws_dict

+ +
+
+ + + + +
__thread AVDictionary* sws_dict
+
+ +

Definition at line 100 of file fftools_cmdutils.c.

+ +
+
+ +

◆ warned_cfg

+ +
+
+ + + + +
__thread int warned_cfg = 0
+
+ +

Definition at line 1144 of file fftools_cmdutils.c.

+ +
+
+
+
warned_cfg
__thread int warned_cfg
Definition: fftools_cmdutils.c:1144
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
SHOW_CONFIG
#define SHOW_CONFIG
Definition: fftools_cmdutils.c:1148
+
SHOW_VERSION
#define SHOW_VERSION
Definition: fftools_cmdutils.c:1147
+
INDENT
#define INDENT
Definition: fftools_cmdutils.c:1146
+ + + + diff --git a/docs/linux/html/d7/dcc/fftools__cmdutils_8c_source.html b/docs/linux/html/d7/dcc/fftools__cmdutils_8c_source.html new file mode 100644 index 0000000..e12b0c3 --- /dev/null +++ b/docs/linux/html/d7/dcc/fftools__cmdutils_8c_source.html @@ -0,0 +1,2677 @@ + + + + + + + +FFmpegKit Linux API: fftools_cmdutils.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_cmdutils.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * Various utilities for command line tools
+
3  * Copyright (c) 2000-2003 Fabrice Bellard
+
4  *
+
5  * This file is part of FFmpeg.
+
6  *
+
7  * FFmpeg is free software; you can redistribute it and/or
+
8  * modify it under the terms of the GNU Lesser General Public
+
9  * License as published by the Free Software Foundation; either
+
10  * version 2.1 of the License, or (at your option) any later version.
+
11  *
+
12  * FFmpeg is distributed in the hope that it will be useful,
+
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
15  * Lesser General Public License for more details.
+
16  *
+
17  * You should have received a copy of the GNU Lesser General Public
+
18  * License along with FFmpeg; if not, write to the Free Software
+
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
20  */
+
21 
+
22 /*
+
23  * CHANGES 01.2020
+
24  * - ffprobe support changes
+
25  * - (optindex < argc) validation in parse_options() method updated with (optindex >= argc) check
+
26  *
+
27  * CHANGES 12.2019
+
28  * - Concurrent execution support
+
29  * - log_callback_report method re-added to fix -report option issues
+
30  *
+
31  * CHANGES 08.2018
+
32  * --------------------------------------------------------
+
33  * - fftools_ prefix added to the file name and parent header
+
34  *
+
35  * CHANGES 07.2018
+
36  * --------------------------------------------------------
+
37  * - Unused headers removed
+
38  * - Parentheses placed around assignments in conditions to prevent -Wparentheses warning
+
39  * - exit_program updated with longjmp, disabling exit
+
40  * - longjmp_value added to store exit code
+
41  * - (optindex < argc) validation added before accessing argv[optindex] inside split_commandline()
+
42  * and parse_options()
+
43  * - All av_log_set_callback invocations updated to set ffmpegkit_log_callback_function from FFmpegKitConfig.m. Unused
+
44  * log_callback_help and log_callback_help methods removed
+
45  * - (idx + 1 < argc) validation added in parse_loglevel()
+
46  */
+
47 
+
48 #include <string.h>
+
49 #include <stdint.h>
+
50 #include <stdlib.h>
+
51 #include <errno.h>
+
52 #include <math.h>
+
53 
+
54 #include "ffmpegkit_exception.h"
+
55 
+
56 /* Include only the enabled headers since some compilers (namely, Sun
+
57  Studio) will not omit unused inline functions and create undefined
+
58  references to libraries that are not being built. */
+
59 
+
60 #include "config.h"
+
61 #include "libavformat/avformat.h"
+
62 #include "libavfilter/avfilter.h"
+
63 #include "libavdevice/avdevice.h"
+
64 #include "libswscale/swscale.h"
+
65 #include "libswresample/swresample.h"
+
66 #include "libavutil/attributes.h"
+
67 #include "libavutil/avassert.h"
+
68 #include "libavutil/avstring.h"
+
69 #include "libavutil/bprint.h"
+
70 #include "libavutil/channel_layout.h"
+
71 #include "libavutil/display.h"
+
72 #include "libavutil/mathematics.h"
+
73 #include "libavutil/imgutils.h"
+
74 #include "libavutil/libm.h"
+
75 #include "libavutil/parseutils.h"
+
76 #include "libavutil/pixdesc.h"
+
77 #include "libavutil/eval.h"
+
78 #include "libavutil/dict.h"
+
79 #include "libavutil/opt.h"
+
80 #include "libavutil/cpu.h"
+
81 #include "libavutil/ffversion.h"
+
82 #include "libavutil/version.h"
+
83 #include "libavcodec/bsf.h"
+
84 #include "fftools_cmdutils.h"
+
85 #if HAVE_SYS_RESOURCE_H
+
86 #include <sys/time.h>
+
87 #include <sys/resource.h>
+
88 #endif
+
89 #ifdef _WIN32
+
90 #include <windows.h>
+
91 #endif
+
92 
+
93 static int init_report(const char *env);
+
94 extern void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs);
+
95 extern void (*report_callback)(int, float, float, int64_t, int, double, double);
+
96 
+
97 __thread char *program_name;
+
98 __thread int program_birth_year;
+
99 
+
100 __thread AVDictionary *sws_dict;
+
101 __thread AVDictionary *swr_opts;
+
102 __thread AVDictionary *format_opts, *codec_opts, *resample_opts;
+
103 
+ +
105 int report_file_level = AV_LOG_DEBUG;
+
106 __thread int hide_banner = 0;
+
107 __thread volatile int longjmp_value = 0;
+
108 
+ + + + +
113 };
+
114 
+
115 void uninit_opts(void)
+
116 {
+
117  av_dict_free(&swr_opts);
+
118  av_dict_free(&sws_dict);
+
119  av_dict_free(&format_opts);
+
120  av_dict_free(&codec_opts);
+
121  av_dict_free(&resample_opts);
+
122 }
+
123 
+
124 void log_callback_report(void *ptr, int level, const char *fmt, va_list vl)
+
125 {
+
126  va_list vl2;
+
127  char line[1024];
+
128  static int print_prefix = 1;
+
129 
+
130  va_copy(vl2, vl);
+
131  if (report_callback == NULL) {
+
132  av_log_default_callback(ptr, level, fmt, vl);
+
133  } else {
+
134  ffmpegkit_log_callback_function(ptr, level, fmt, vl);
+
135  }
+
136  av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
+
137  va_end(vl2);
+
138  if (report_file_level >= level) {
+
139  fputs(line, report_file);
+
140  fflush(report_file);
+
141  }
+
142 }
+
143 
+
144 void init_dynload(void)
+
145 {
+
146 #if HAVE_SETDLLDIRECTORY && defined(_WIN32)
+
147  /* Calling SetDllDirectory with the empty string (but not NULL) removes the
+
148  * current working directory from the DLL search path as a security pre-caution. */
+
149  SetDllDirectory("");
+
150 #endif
+
151 }
+
152 
+
153 static __thread void (*program_exit)(int ret);
+
154 
+
155 void register_exit(void (*cb)(int ret))
+
156 {
+
157  program_exit = cb;
+
158 }
+
159 
+
160 void exit_program(int ret)
+
161 {
+
162  if (program_exit)
+
163  program_exit(ret);
+
164 
+
165  // exit disabled and replaced with longjmp, exit value stored in longjmp_value
+
166  // exit(ret);
+
167  longjmp_value = ret;
+
168  longjmp(ex_buf__, ret);
+
169 }
+
170 
+
171 double parse_number_or_die(const char *context, const char *numstr, int type,
+
172  double min, double max)
+
173 {
+
174  char *tail;
+
175  const char *error;
+
176  double d = av_strtod(numstr, &tail);
+
177  if (*tail)
+
178  error = "Expected number for %s but found: %s\n";
+
179  else if (d < min || d > max)
+
180  error = "The value for %s was %s which is not within %f - %f\n";
+
181  else if (type == OPT_INT64 && (int64_t)d != d)
+
182  error = "Expected int64 for %s but found %s\n";
+
183  else if (type == OPT_INT && (int)d != d)
+
184  error = "Expected int for %s but found %s\n";
+
185  else
+
186  return d;
+
187  av_log(NULL, AV_LOG_FATAL, error, context, numstr, min, max);
+
188  exit_program(1);
+
189  return 0;
+
190 }
+
191 
+
192 int64_t parse_time_or_die(const char *context, const char *timestr,
+
193  int is_duration)
+
194 {
+
195  int64_t us;
+
196  if (av_parse_time(&us, timestr, is_duration) < 0) {
+
197  av_log(NULL, AV_LOG_FATAL, "Invalid %s specification for %s: %s\n",
+
198  is_duration ? "duration" : "date", context, timestr);
+
199  exit_program(1);
+
200  }
+
201  return us;
+
202 }
+
203 
+
204 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
+
205  int rej_flags, int alt_flags)
+
206 {
+
207  const OptionDef *po;
+
208  int first;
+
209 
+
210  first = 1;
+
211  for (po = options; po->name; po++) {
+
212  char buf[128];
+
213 
+
214  if (((po->flags & req_flags) != req_flags) ||
+
215  (alt_flags && !(po->flags & alt_flags)) ||
+
216  (po->flags & rej_flags))
+
217  continue;
+
218 
+
219  if (first) {
+
220  av_log(NULL, AV_LOG_STDERR, "%s\n", msg);
+
221  first = 0;
+
222  }
+
223  av_strlcpy(buf, po->name, sizeof(buf));
+
224  if (po->argname) {
+
225  av_strlcat(buf, " ", sizeof(buf));
+
226  av_strlcat(buf, po->argname, sizeof(buf));
+
227  }
+
228  av_log(NULL, AV_LOG_STDERR, "-%-17s %s\n", buf, po->help);
+
229  }
+
230  av_log(NULL, AV_LOG_STDERR, "\n");
+
231 }
+
232 
+
233 void show_help_children(const AVClass *avClass, int flags)
+
234 {
+
235  void *iter = NULL;
+
236  const AVClass *child;
+
237  if (avClass->option) {
+
238  av_opt_show2(&avClass, NULL, flags, 0);
+
239  av_log(NULL, AV_LOG_STDERR, "\n");
+
240  }
+
241 
+
242  while ((child = av_opt_child_class_iterate(avClass, &iter)))
+
243  show_help_children(child, flags);
+
244 }
+
245 
+
246 static const OptionDef *find_option(const OptionDef *po, const char *name)
+
247 {
+
248  while (po->name) {
+
249  const char *end;
+
250  if (av_strstart(name, po->name, &end) && (!*end || *end == ':'))
+
251  break;
+
252  po++;
+
253  }
+
254  return po;
+
255 }
+
256 
+
257 /* _WIN32 means using the windows libc - cygwin doesn't define that
+
258  * by default. HAVE_COMMANDLINETOARGVW is true on cygwin, while
+
259  * it doesn't provide the actual command line via GetCommandLineW(). */
+
260 #if HAVE_COMMANDLINETOARGVW && defined(_WIN32)
+
261 #include <shellapi.h>
+
262 /* Will be leaked on exit */
+
263 static char** win32_argv_utf8 = NULL;
+
264 static int win32_argc = 0;
+
265 
+
273 static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
+
274 {
+
275  char *argstr_flat;
+
276  wchar_t **argv_w;
+
277  int i, buffsize = 0, offset = 0;
+
278 
+
279  if (win32_argv_utf8) {
+
280  *argc_ptr = win32_argc;
+
281  *argv_ptr = win32_argv_utf8;
+
282  return;
+
283  }
+
284 
+
285  win32_argc = 0;
+
286  argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc);
+
287  if (win32_argc <= 0 || !argv_w)
+
288  return;
+
289 
+
290  /* determine the UTF-8 buffer size (including NULL-termination symbols) */
+
291  for (i = 0; i < win32_argc; i++)
+
292  buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
+
293  NULL, 0, NULL, NULL);
+
294 
+
295  win32_argv_utf8 = av_mallocz(sizeof(char *) * (win32_argc + 1) + buffsize);
+
296  argstr_flat = (char *)win32_argv_utf8 + sizeof(char *) * (win32_argc + 1);
+
297  if (!win32_argv_utf8) {
+
298  LocalFree(argv_w);
+
299  return;
+
300  }
+
301 
+
302  for (i = 0; i < win32_argc; i++) {
+
303  win32_argv_utf8[i] = &argstr_flat[offset];
+
304  offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[i], -1,
+
305  &argstr_flat[offset],
+
306  buffsize - offset, NULL, NULL);
+
307  }
+
308  win32_argv_utf8[i] = NULL;
+
309  LocalFree(argv_w);
+
310 
+
311  *argc_ptr = win32_argc;
+
312  *argv_ptr = win32_argv_utf8;
+
313 }
+
314 #else
+
315 static inline void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
+
316 {
+
317  /* nothing to do */
+
318 }
+
319 #endif /* HAVE_COMMANDLINETOARGVW */
+
320 
+
321 static int write_option(void *optctx, const OptionDef *po, const char *opt,
+
322  const char *arg)
+
323 {
+
324  /* new-style options contain an offset into optctx, old-style address of
+
325  * a global var*/
+
326  void *dst = po->flags & (OPT_OFFSET | OPT_SPEC) ?
+
327  (uint8_t *)optctx + po->u.off : po->u.dst_ptr;
+
328  int *dstcount;
+
329 
+
330  if (po->flags & OPT_SPEC) {
+
331  SpecifierOpt **so = dst;
+
332  char *p = strchr(opt, ':');
+
333  char *str;
+
334 
+
335  dstcount = (int *)(so + 1);
+
336  *so = grow_array(*so, sizeof(**so), dstcount, *dstcount + 1);
+
337  str = av_strdup(p ? p + 1 : "");
+
338  if (!str)
+
339  return AVERROR(ENOMEM);
+
340  (*so)[*dstcount - 1].specifier = str;
+
341  dst = &(*so)[*dstcount - 1].u;
+
342  }
+
343 
+
344  if (po->flags & OPT_STRING) {
+
345  char *str;
+
346  str = av_strdup(arg);
+
347  av_freep(dst);
+
348  if (!str)
+
349  return AVERROR(ENOMEM);
+
350  *(char **)dst = str;
+
351  } else if (po->flags & OPT_BOOL || po->flags & OPT_INT) {
+
352  *(int *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT_MIN, INT_MAX);
+
353  } else if (po->flags & OPT_INT64) {
+
354  *(int64_t *)dst = parse_number_or_die(opt, arg, OPT_INT64, INT64_MIN, (double)INT64_MAX);
+
355  } else if (po->flags & OPT_TIME) {
+
356  *(int64_t *)dst = parse_time_or_die(opt, arg, 1);
+
357  } else if (po->flags & OPT_FLOAT) {
+
358  *(float *)dst = parse_number_or_die(opt, arg, OPT_FLOAT, -INFINITY, INFINITY);
+
359  } else if (po->flags & OPT_DOUBLE) {
+
360  *(double *)dst = parse_number_or_die(opt, arg, OPT_DOUBLE, -INFINITY, INFINITY);
+
361  } else if (po->u.func_arg) {
+
362  int ret = po->u.func_arg(optctx, opt, arg);
+
363  if (ret < 0) {
+
364  av_log(NULL, AV_LOG_ERROR,
+
365  "Failed to set value '%s' for option '%s': %s\n",
+
366  arg, opt, av_err2str(ret));
+
367  return ret;
+
368  }
+
369  }
+
370  if (po->flags & OPT_EXIT)
+
371  exit_program(0);
+
372 
+
373  return 0;
+
374 }
+
375 
+
376 int parse_option(void *optctx, const char *opt, const char *arg,
+
377  const OptionDef *options)
+
378 {
+
379  const OptionDef *po;
+
380  int ret;
+
381 
+
382  po = find_option(options, opt);
+
383  if (!po->name && opt[0] == 'n' && opt[1] == 'o') {
+
384  /* handle 'no' bool option */
+
385  po = find_option(options, opt + 2);
+
386  if ((po->name && (po->flags & OPT_BOOL)))
+
387  arg = "0";
+
388  } else if (po->flags & OPT_BOOL)
+
389  arg = "1";
+
390 
+
391  if (!po->name)
+
392  po = find_option(options, "default");
+
393  if (!po->name) {
+
394  av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'\n", opt);
+
395  return AVERROR(EINVAL);
+
396  }
+
397  if (po->flags & HAS_ARG && !arg) {
+
398  av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'\n", opt);
+
399  return AVERROR(EINVAL);
+
400  }
+
401 
+
402  ret = write_option(optctx, po, opt, arg);
+
403  if (ret < 0)
+
404  return ret;
+
405 
+
406  return !!(po->flags & HAS_ARG);
+
407 }
+
408 
+
409 void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
+
410  void (*parse_arg_function)(void *, const char*))
+
411 {
+
412  const char *opt;
+
413  int optindex, handleoptions = 1, ret;
+
414 
+
415  /* perform system-dependent conversions for arguments list */
+
416  prepare_app_arguments(&argc, &argv);
+
417 
+
418  /* parse options */
+
419  optindex = 1;
+
420  while (optindex < argc) {
+
421  opt = argv[optindex++];
+
422 
+
423  if (handleoptions && opt[0] == '-' && opt[1] != '\0') {
+
424  if (opt[1] == '-' && opt[2] == '\0') {
+
425  handleoptions = 0;
+
426  continue;
+
427  }
+
428  opt++;
+
429  if (optindex >= argc) {
+
430  if ((ret = parse_option(optctx, opt, NULL, options)) < 0)
+
431  exit_program(1);
+
432  } else {
+
433  if ((ret = parse_option(optctx, opt, argv[optindex], options)) < 0)
+
434  exit_program(1);
+
435  }
+
436  optindex += ret;
+
437  } else {
+
438  if (parse_arg_function)
+
439  parse_arg_function(optctx, opt);
+
440  }
+
441  }
+
442 }
+
443 
+
444 int parse_optgroup(void *optctx, OptionGroup *g)
+
445 {
+
446  int i, ret;
+
447 
+
448  av_log(NULL, AV_LOG_DEBUG, "Parsing a group of options: %s %s.\n",
+
449  g->group_def->name, g->arg);
+
450 
+
451  for (i = 0; i < g->nb_opts; i++) {
+
452  Option *o = &g->opts[i];
+
453 
+
454  if (g->group_def->flags &&
+
455  !(g->group_def->flags & o->opt->flags)) {
+
456  av_log(NULL, AV_LOG_ERROR, "Option %s (%s) cannot be applied to "
+
457  "%s %s -- you are trying to apply an input option to an "
+
458  "output file or vice versa. Move this option before the "
+
459  "file it belongs to.\n", o->key, o->opt->help,
+
460  g->group_def->name, g->arg);
+
461  return AVERROR(EINVAL);
+
462  }
+
463 
+
464  av_log(NULL, AV_LOG_DEBUG, "Applying option %s (%s) with argument %s.\n",
+
465  o->key, o->opt->help, o->val);
+
466 
+
467  ret = write_option(optctx, o->opt, o->key, o->val);
+
468  if (ret < 0)
+
469  return ret;
+
470  }
+
471 
+
472  av_log(NULL, AV_LOG_DEBUG, "Successfully parsed a group of options.\n");
+
473 
+
474  return 0;
+
475 }
+
476 
+
477 int locate_option(int argc, char **argv, const OptionDef *options,
+
478  const char *optname)
+
479 {
+
480  const OptionDef *po;
+
481  int i;
+
482 
+
483  for (i = 1; i < argc; i++) {
+
484  const char *cur_opt = argv[i];
+
485 
+
486  if (*cur_opt++ != '-')
+
487  continue;
+
488 
+
489  po = find_option(options, cur_opt);
+
490  if (!po->name && cur_opt[0] == 'n' && cur_opt[1] == 'o')
+
491  po = find_option(options, cur_opt + 2);
+
492 
+
493  if ((!po->name && !strcmp(cur_opt, optname)) ||
+
494  (po->name && !strcmp(optname, po->name)))
+
495  return i;
+
496 
+
497  if (!po->name || po->flags & HAS_ARG)
+
498  i++;
+
499  }
+
500  return 0;
+
501 }
+
502 
+
503 static void dump_argument(const char *a)
+
504 {
+
505  const unsigned char *p;
+
506 
+
507  for (p = a; *p; p++)
+
508  if (!((*p >= '+' && *p <= ':') || (*p >= '@' && *p <= 'Z') ||
+
509  *p == '_' || (*p >= 'a' && *p <= 'z')))
+
510  break;
+
511  if (!*p) {
+
512  fputs(a, report_file);
+
513  return;
+
514  }
+
515  fputc('"', report_file);
+
516  for (p = a; *p; p++) {
+
517  if (*p == '\\' || *p == '"' || *p == '$' || *p == '`')
+
518  fprintf(report_file, "\\%c", *p);
+
519  else if (*p < ' ' || *p > '~')
+
520  fprintf(report_file, "\\x%02x", *p);
+
521  else
+
522  fputc(*p, report_file);
+
523  }
+
524  fputc('"', report_file);
+
525 }
+
526 
+
527 static void check_options(const OptionDef *po)
+
528 {
+
529  while (po->name) {
+
530  if (po->flags & OPT_PERFILE)
+
531  av_assert0(po->flags & (OPT_INPUT | OPT_OUTPUT));
+
532  po++;
+
533  }
+
534 }
+
535 
+
536 void parse_loglevel(int argc, char **argv, const OptionDef *options)
+
537 {
+
538  int idx = locate_option(argc, argv, options, "loglevel");
+
539  const char *env;
+
540 
+
541  check_options(options);
+
542 
+
543  if (!idx)
+
544  idx = locate_option(argc, argv, options, "v");
+
545  if (idx && (idx + 1 < argc) && argv[idx + 1])
+
546  opt_loglevel(NULL, "loglevel", argv[idx + 1]);
+
547  idx = locate_option(argc, argv, options, "report");
+
548  if ((env = getenv("FFREPORT")) || idx) {
+
549  init_report(env);
+
550  if (report_file) {
+
551  int i;
+
552  fprintf(report_file, "Command line:\n");
+
553  for (i = 0; i < argc; i++) {
+
554  dump_argument(argv[i]);
+
555  fputc(i < argc - 1 ? ' ' : '\n', report_file);
+
556  }
+
557  fflush(report_file);
+
558  }
+
559  }
+
560  idx = locate_option(argc, argv, options, "hide_banner");
+
561  if (idx)
+
562  hide_banner = 1;
+
563 }
+
564 
+
565 static const AVOption *opt_find(void *obj, const char *name, const char *unit,
+
566  int opt_flags, int search_flags)
+
567 {
+
568  const AVOption *o = av_opt_find(obj, name, unit, opt_flags, search_flags);
+
569  if(o && !o->flags)
+
570  return NULL;
+
571  return o;
+
572 }
+
573 
+
574 #define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
+
575 int opt_default(void *optctx, const char *opt, const char *arg)
+
576 {
+
577  const AVOption *o;
+
578  int consumed = 0;
+
579  char opt_stripped[128];
+
580  const char *p;
+
581  const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class();
+
582 #if CONFIG_SWSCALE
+
583  const AVClass *sc = sws_get_class();
+
584 #endif
+
585 #if CONFIG_SWRESAMPLE
+
586  const AVClass *swr_class = swr_get_class();
+
587 #endif
+
588 
+
589  if (!strcmp(opt, "debug") || !strcmp(opt, "fdebug"))
+
590  av_log_set_level(AV_LOG_DEBUG);
+
591 
+
592  if (!(p = strchr(opt, ':')))
+
593  p = opt + strlen(opt);
+
594  av_strlcpy(opt_stripped, opt, FFMIN(sizeof(opt_stripped), p - opt + 1));
+
595 
+
596  if ((o = opt_find(&cc, opt_stripped, NULL, 0,
+
597  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ)) ||
+
598  ((opt[0] == 'v' || opt[0] == 'a' || opt[0] == 's') &&
+
599  (o = opt_find(&cc, opt + 1, NULL, 0, AV_OPT_SEARCH_FAKE_OBJ)))) {
+
600  av_dict_set(&codec_opts, opt, arg, FLAGS);
+
601  consumed = 1;
+
602  }
+
603  if ((o = opt_find(&fc, opt, NULL, 0,
+
604  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
+
605  av_dict_set(&format_opts, opt, arg, FLAGS);
+
606  if (consumed)
+
607  av_log(NULL, AV_LOG_VERBOSE, "Routing option %s to both codec and muxer layer\n", opt);
+
608  consumed = 1;
+
609  }
+
610 #if CONFIG_SWSCALE
+
611  if (!consumed && (o = opt_find(&sc, opt, NULL, 0,
+
612  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
+
613  struct SwsContext *sws = sws_alloc_context();
+
614  int ret = av_opt_set(sws, opt, arg, 0);
+
615  sws_freeContext(sws);
+
616  if (!strcmp(opt, "srcw") || !strcmp(opt, "srch") ||
+
617  !strcmp(opt, "dstw") || !strcmp(opt, "dsth") ||
+
618  !strcmp(opt, "src_format") || !strcmp(opt, "dst_format")) {
+
619  av_log(NULL, AV_LOG_ERROR, "Directly using swscale dimensions/format options is not supported, please use the -s or -pix_fmt options\n");
+
620  return AVERROR(EINVAL);
+
621  }
+
622  if (ret < 0) {
+
623  av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt);
+
624  return ret;
+
625  }
+
626 
+
627  av_dict_set(&sws_dict, opt, arg, FLAGS);
+
628 
+
629  consumed = 1;
+
630  }
+
631 #else
+
632  if (!consumed && !strcmp(opt, "sws_flags")) {
+
633  av_log(NULL, AV_LOG_WARNING, "Ignoring %s %s, due to disabled swscale\n", opt, arg);
+
634  consumed = 1;
+
635  }
+
636 #endif
+
637 #if CONFIG_SWRESAMPLE
+
638  if (!consumed && (o=opt_find(&swr_class, opt, NULL, 0,
+
639  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
+
640  struct SwrContext *swr = swr_alloc();
+
641  int ret = av_opt_set(swr, opt, arg, 0);
+
642  swr_free(&swr);
+
643  if (ret < 0) {
+
644  av_log(NULL, AV_LOG_ERROR, "Error setting option %s.\n", opt);
+
645  return ret;
+
646  }
+
647  av_dict_set(&swr_opts, opt, arg, FLAGS);
+
648  consumed = 1;
+
649  }
+
650 #endif
+
651 
+
652  if (consumed)
+
653  return 0;
+
654  return AVERROR_OPTION_NOT_FOUND;
+
655 }
+
656 
+
657 /*
+
658  * Check whether given option is a group separator.
+
659  *
+
660  * @return index of the group definition that matched or -1 if none
+
661  */
+
662 static int match_group_separator(const OptionGroupDef *groups, int nb_groups,
+
663  const char *opt)
+
664 {
+
665  int i;
+
666 
+
667  for (i = 0; i < nb_groups; i++) {
+
668  const OptionGroupDef *p = &groups[i];
+
669  if (p->sep && !strcmp(p->sep, opt))
+
670  return i;
+
671  }
+
672 
+
673  return -1;
+
674 }
+
675 
+
676 /*
+
677  * Finish parsing an option group.
+
678  *
+
679  * @param group_idx which group definition should this group belong to
+
680  * @param arg argument of the group delimiting option
+
681  */
+
682 static void finish_group(OptionParseContext *octx, int group_idx,
+
683  const char *arg)
+
684 {
+
685  OptionGroupList *l = &octx->groups[group_idx];
+
686  OptionGroup *g;
+
687 
+
688  GROW_ARRAY(l->groups, l->nb_groups);
+
689  g = &l->groups[l->nb_groups - 1];
+
690 
+
691  *g = octx->cur_group;
+
692  g->arg = arg;
+
693  g->group_def = l->group_def;
+
694  g->sws_dict = sws_dict;
+
695  g->swr_opts = swr_opts;
+
696  g->codec_opts = codec_opts;
+ + +
699 
+
700  codec_opts = NULL;
+
701  format_opts = NULL;
+
702  resample_opts = NULL;
+
703  sws_dict = NULL;
+
704  swr_opts = NULL;
+
705 
+
706  memset(&octx->cur_group, 0, sizeof(octx->cur_group));
+
707 }
+
708 
+
709 /*
+
710  * Add an option instance to currently parsed group.
+
711  */
+
712 static void add_opt(OptionParseContext *octx, const OptionDef *opt,
+
713  const char *key, const char *val)
+
714 {
+
715  int global = !(opt->flags & (OPT_PERFILE | OPT_SPEC | OPT_OFFSET));
+
716  OptionGroup *g = global ? &octx->global_opts : &octx->cur_group;
+
717 
+
718  GROW_ARRAY(g->opts, g->nb_opts);
+
719  g->opts[g->nb_opts - 1].opt = opt;
+
720  g->opts[g->nb_opts - 1].key = key;
+
721  g->opts[g->nb_opts - 1].val = val;
+
722 }
+
723 
+ +
725  const OptionGroupDef *groups, int nb_groups)
+
726 {
+
727  static const OptionGroupDef global_group = { "global" };
+
728  int i;
+
729 
+
730  memset(octx, 0, sizeof(*octx));
+
731 
+
732  octx->nb_groups = nb_groups;
+
733  octx->groups = av_mallocz_array(octx->nb_groups, sizeof(*octx->groups));
+
734  if (!octx->groups)
+
735  exit_program(1);
+
736 
+
737  for (i = 0; i < octx->nb_groups; i++)
+
738  octx->groups[i].group_def = &groups[i];
+
739 
+
740  octx->global_opts.group_def = &global_group;
+
741  octx->global_opts.arg = "";
+
742 }
+
743 
+ +
745 {
+
746  int i, j;
+
747 
+
748  for (i = 0; i < octx->nb_groups; i++) {
+
749  OptionGroupList *l = &octx->groups[i];
+
750 
+
751  for (j = 0; j < l->nb_groups; j++) {
+
752  av_freep(&l->groups[j].opts);
+
753  av_dict_free(&l->groups[j].codec_opts);
+
754  av_dict_free(&l->groups[j].format_opts);
+
755  av_dict_free(&l->groups[j].resample_opts);
+
756 
+
757  av_dict_free(&l->groups[j].sws_dict);
+
758  av_dict_free(&l->groups[j].swr_opts);
+
759  }
+
760  av_freep(&l->groups);
+
761  }
+
762  av_freep(&octx->groups);
+
763 
+
764  av_freep(&octx->cur_group.opts);
+
765  av_freep(&octx->global_opts.opts);
+
766 
+
767  uninit_opts();
+
768 }
+
769 
+
770 int split_commandline(OptionParseContext *octx, int argc, char *argv[],
+
771  const OptionDef *options,
+
772  const OptionGroupDef *groups, int nb_groups)
+
773 {
+
774  int optindex = 1;
+
775  int dashdash = -2;
+
776 
+
777  /* perform system-dependent conversions for arguments list */
+
778  prepare_app_arguments(&argc, &argv);
+
779 
+
780  init_parse_context(octx, groups, nb_groups);
+
781  av_log(NULL, AV_LOG_DEBUG, "Splitting the commandline.\n");
+
782 
+
783  while (optindex < argc) {
+
784  const char *opt = argv[optindex++], *arg;
+
785  const OptionDef *po;
+
786  int ret;
+
787 
+
788  av_log(NULL, AV_LOG_DEBUG, "Reading option '%s' ...", opt);
+
789 
+
790  if (opt[0] == '-' && opt[1] == '-' && !opt[2]) {
+
791  dashdash = optindex;
+
792  continue;
+
793  }
+
794  /* unnamed group separators, e.g. output filename */
+
795  if (opt[0] != '-' || !opt[1] || dashdash+1 == optindex) {
+
796  finish_group(octx, 0, opt);
+
797  av_log(NULL, AV_LOG_DEBUG, " matched as %s.\n", groups[0].name);
+
798  continue;
+
799  }
+
800  opt++;
+
801 
+
802 #define GET_ARG(arg) \
+
803 do { \
+
804  if (optindex < argc) { \
+
805  arg = argv[optindex++]; \
+
806  } else { \
+
807  av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\
+
808  return AVERROR(EINVAL); \
+
809  } \
+
810 } while (0)
+
811 
+
812  /* named group separators, e.g. -i */
+
813  if ((ret = match_group_separator(groups, nb_groups, opt)) >= 0) {
+
814  GET_ARG(arg);
+
815  finish_group(octx, ret, arg);
+
816  av_log(NULL, AV_LOG_DEBUG, " matched as %s with argument '%s'.\n",
+
817  groups[ret].name, arg);
+
818  continue;
+
819  }
+
820 
+
821  /* normal options */
+
822  po = find_option(options, opt);
+
823  if (po->name) {
+
824  if (po->flags & OPT_EXIT) {
+
825  /* optional argument, e.g. -h */
+
826  if (optindex < argc) {
+
827  arg = argv[optindex++];
+
828  } else {
+
829  arg = NULL;
+
830  }
+
831  } else if (po->flags & HAS_ARG) {
+
832  GET_ARG(arg);
+
833  } else {
+
834  arg = "1";
+
835  }
+
836 
+
837  add_opt(octx, po, opt, arg);
+
838  av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with "
+
839  "argument '%s'.\n", po->name, po->help, arg);
+
840  continue;
+
841  }
+
842 
+
843  /* AVOptions */
+
844  if ((optindex < argc) && argv[optindex]) {
+
845  ret = opt_default(NULL, opt, argv[optindex]);
+
846  if (ret >= 0) {
+
847  av_log(NULL, AV_LOG_DEBUG, " matched as AVOption '%s' with "
+
848  "argument '%s'.\n", opt, argv[optindex]);
+
849  optindex++;
+
850  continue;
+
851  } else if (ret != AVERROR_OPTION_NOT_FOUND) {
+
852  av_log(NULL, AV_LOG_ERROR, "Error parsing option '%s' "
+
853  "with argument '%s'.\n", opt, argv[optindex]);
+
854  return ret;
+
855  }
+
856  }
+
857 
+
858  /* boolean -nofoo options */
+
859  if (opt[0] == 'n' && opt[1] == 'o' &&
+
860  (po = find_option(options, opt + 2)) &&
+
861  po->name && po->flags & OPT_BOOL) {
+
862  add_opt(octx, po, opt, "0");
+
863  av_log(NULL, AV_LOG_DEBUG, " matched as option '%s' (%s) with "
+
864  "argument 0.\n", po->name, po->help);
+
865  continue;
+
866  }
+
867 
+
868  av_log(NULL, AV_LOG_ERROR, "Unrecognized option '%s'.\n", opt);
+
869  return AVERROR_OPTION_NOT_FOUND;
+
870  }
+
871 
+ +
873  av_log(NULL, AV_LOG_WARNING, "Trailing option(s) found in the "
+
874  "command: may be ignored.\n");
+
875 
+
876  av_log(NULL, AV_LOG_DEBUG, "Finished splitting the commandline.\n");
+
877 
+
878  return 0;
+
879 }
+
880 
+
881 int opt_cpuflags(void *optctx, const char *opt, const char *arg)
+
882 {
+
883  int ret;
+
884  unsigned flags = av_get_cpu_flags();
+
885 
+
886  if ((ret = av_parse_cpu_caps(&flags, arg)) < 0)
+
887  return ret;
+
888 
+
889  av_force_cpu_flags(flags);
+
890  return 0;
+
891 }
+
892 
+
893 int opt_cpucount(void *optctx, const char *opt, const char *arg)
+
894 {
+
895  int ret;
+
896  int count;
+
897 
+
898  static const AVOption opts[] = {
+
899  {"count", NULL, 0, AV_OPT_TYPE_INT, { .i64 = -1}, -1, INT_MAX, 0},
+
900  {NULL},
+
901  };
+
902  static const AVClass class = {
+
903  .class_name = "cpucount",
+
904  .item_name = av_default_item_name,
+
905  .option = opts,
+
906  .version = LIBAVUTIL_VERSION_INT,
+
907  };
+
908  const AVClass *pclass = &class;
+
909 
+
910  ret = av_opt_eval_int(&pclass, opts, arg, &count);
+
911 
+
912  if (!ret) {
+
913  av_cpu_force_count(count);
+
914  }
+
915 
+
916  return ret;
+
917 }
+
918 
+
919 int opt_loglevel(void *optctx, const char *opt, const char *arg)
+
920 {
+
921  const struct { const char *name; int level; } log_levels[] = {
+
922  { "quiet" , AV_LOG_QUIET },
+
923  { "panic" , AV_LOG_PANIC },
+
924  { "fatal" , AV_LOG_FATAL },
+
925  { "error" , AV_LOG_ERROR },
+
926  { "warning", AV_LOG_WARNING },
+
927  { "info" , AV_LOG_INFO },
+
928  { "verbose", AV_LOG_VERBOSE },
+
929  { "debug" , AV_LOG_DEBUG },
+
930  { "trace" , AV_LOG_TRACE },
+
931  };
+
932  const char *token;
+
933  char *tail;
+
934  int flags = av_log_get_flags();
+
935  int level = av_log_get_level();
+
936  int cmd, i = 0;
+
937 
+
938  av_assert0(arg);
+
939  while (*arg) {
+
940  token = arg;
+
941  if (*token == '+' || *token == '-') {
+
942  cmd = *token++;
+
943  } else {
+
944  cmd = 0;
+
945  }
+
946  if (!i && !cmd) {
+
947  flags = 0; /* missing relative prefix, build absolute value */
+
948  }
+
949  if (av_strstart(token, "repeat", &arg)) {
+
950  if (cmd == '-') {
+
951  flags |= AV_LOG_SKIP_REPEATED;
+
952  } else {
+
953  flags &= ~AV_LOG_SKIP_REPEATED;
+
954  }
+
955  } else if (av_strstart(token, "level", &arg)) {
+
956  if (cmd == '-') {
+
957  flags &= ~AV_LOG_PRINT_LEVEL;
+
958  } else {
+
959  flags |= AV_LOG_PRINT_LEVEL;
+
960  }
+
961  } else {
+
962  break;
+
963  }
+
964  i++;
+
965  }
+
966  if (!*arg) {
+
967  goto end;
+
968  } else if (*arg == '+') {
+
969  arg++;
+
970  } else if (!i) {
+
971  flags = av_log_get_flags(); /* level value without prefix, reset flags */
+
972  }
+
973 
+
974  for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++) {
+
975  if (!strcmp(log_levels[i].name, arg)) {
+
976  level = log_levels[i].level;
+
977  goto end;
+
978  }
+
979  }
+
980 
+
981  level = strtol(arg, &tail, 10);
+
982  if (*tail) {
+
983  av_log(NULL, AV_LOG_FATAL, "Invalid loglevel \"%s\". "
+
984  "Possible levels are numbers or:\n", arg);
+
985  for (i = 0; i < FF_ARRAY_ELEMS(log_levels); i++)
+
986  av_log(NULL, AV_LOG_FATAL, "\"%s\"\n", log_levels[i].name);
+
987  exit_program(1);
+
988  }
+
989 
+
990 end:
+
991  av_log_set_flags(flags);
+
992  av_log_set_level(level);
+
993  return 0;
+
994 }
+
995 
+
996 static void expand_filename_template(AVBPrint *bp, const char *template,
+
997  struct tm *tm)
+
998 {
+
999  int c;
+
1000 
+
1001  while ((c = *(template++))) {
+
1002  if (c == '%') {
+
1003  if (!(c = *(template++)))
+
1004  break;
+
1005  switch (c) {
+
1006  case 'p':
+
1007  av_bprintf(bp, "%s", program_name);
+
1008  break;
+
1009  case 't':
+
1010  av_bprintf(bp, "%04d%02d%02d-%02d%02d%02d",
+
1011  tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+
1012  tm->tm_hour, tm->tm_min, tm->tm_sec);
+
1013  break;
+
1014  case '%':
+
1015  av_bprint_chars(bp, c, 1);
+
1016  break;
+
1017  }
+
1018  } else {
+
1019  av_bprint_chars(bp, c, 1);
+
1020  }
+
1021  }
+
1022 }
+
1023 
+
1024 static int init_report(const char *env)
+
1025 {
+
1026  char *filename_template = NULL;
+
1027  char *key, *val;
+
1028  int ret, count = 0;
+
1029  int prog_loglevel, envlevel = 0;
+
1030  time_t now;
+
1031  struct tm *tm;
+
1032  AVBPrint filename;
+
1033 
+
1034  if (report_file) /* already opened */
+
1035  return 0;
+
1036  time(&now);
+
1037  tm = localtime(&now);
+
1038 
+
1039  while (env && *env) {
+
1040  if ((ret = av_opt_get_key_value(&env, "=", ":", 0, &key, &val)) < 0) {
+
1041  if (count)
+
1042  av_log(NULL, AV_LOG_ERROR,
+
1043  "Failed to parse FFREPORT environment variable: %s\n",
+
1044  av_err2str(ret));
+
1045  break;
+
1046  }
+
1047  if (*env)
+
1048  env++;
+
1049  count++;
+
1050  if (!strcmp(key, "file")) {
+
1051  av_free(filename_template);
+
1052  filename_template = val;
+
1053  val = NULL;
+
1054  } else if (!strcmp(key, "level")) {
+
1055  char *tail;
+
1056  report_file_level = strtol(val, &tail, 10);
+
1057  if (*tail) {
+
1058  av_log(NULL, AV_LOG_FATAL, "Invalid report file level\n");
+
1059  exit_program(1);
+
1060  }
+
1061  envlevel = 1;
+
1062  } else {
+
1063  av_log(NULL, AV_LOG_ERROR, "Unknown key '%s' in FFREPORT\n", key);
+
1064  }
+
1065  av_free(val);
+
1066  av_free(key);
+
1067  }
+
1068 
+
1069  av_bprint_init(&filename, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
1070  expand_filename_template(&filename,
+
1071  av_x_if_null(filename_template, "%p-%t.log"), tm);
+
1072  av_free(filename_template);
+
1073  if (!av_bprint_is_complete(&filename)) {
+
1074  av_log(NULL, AV_LOG_ERROR, "Out of memory building report file name\n");
+
1075  return AVERROR(ENOMEM);
+
1076  }
+
1077 
+
1078  prog_loglevel = av_log_get_level();
+
1079  if (!envlevel)
+
1080  report_file_level = FFMAX(report_file_level, prog_loglevel);
+
1081 
+
1082  report_file = fopen(filename.str, "w");
+
1083  if (!report_file) {
+
1084  int ret = AVERROR(errno);
+
1085  av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n",
+
1086  filename.str, strerror(errno));
+
1087  return ret;
+
1088  }
+
1089  av_log_set_callback(log_callback_report);
+
1090  av_log(NULL, AV_LOG_INFO,
+
1091  "%s started on %04d-%02d-%02d at %02d:%02d:%02d\n"
+
1092  "Report written to \"%s\"\n"
+
1093  "Log level: %d\n",
+
1094  program_name,
+
1095  tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+
1096  tm->tm_hour, tm->tm_min, tm->tm_sec,
+
1097  filename.str, report_file_level);
+
1098  av_bprint_finalize(&filename, NULL);
+
1099  return 0;
+
1100 }
+
1101 
+
1102 int opt_report(void *optctx, const char *opt, const char *arg)
+
1103 {
+
1104  return init_report(NULL);
+
1105 }
+
1106 
+
1107 int opt_max_alloc(void *optctx, const char *opt, const char *arg)
+
1108 {
+
1109  char *tail;
+
1110  size_t max;
+
1111 
+
1112  max = strtol(arg, &tail, 10);
+
1113  if (*tail) {
+
1114  av_log(NULL, AV_LOG_FATAL, "Invalid max_alloc \"%s\".\n", arg);
+
1115  exit_program(1);
+
1116  }
+
1117  av_max_alloc(max);
+
1118  return 0;
+
1119 }
+
1120 
+
1121 int opt_timelimit(void *optctx, const char *opt, const char *arg)
+
1122 {
+
1123 #if HAVE_SETRLIMIT
+
1124  int lim = parse_number_or_die(opt, arg, OPT_INT64, 0, INT_MAX);
+
1125  struct rlimit rl = { lim, lim + 1 };
+
1126  if (setrlimit(RLIMIT_CPU, &rl))
+
1127  perror("setrlimit");
+
1128 #else
+
1129  av_log(NULL, AV_LOG_WARNING, "-%s not implemented on this OS\n", opt);
+
1130 #endif
+
1131  return 0;
+
1132 }
+
1133 
+
1134 void print_error(const char *filename, int err)
+
1135 {
+
1136  char errbuf[128];
+
1137  const char *errbuf_ptr = errbuf;
+
1138 
+
1139  if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
+
1140  errbuf_ptr = strerror(AVUNERROR(err));
+
1141  av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr);
+
1142 }
+
1143 
+
1144 __thread int warned_cfg = 0;
+
1145 
+
1146 #define INDENT 1
+
1147 #define SHOW_VERSION 2
+
1148 #define SHOW_CONFIG 4
+
1149 #define SHOW_COPYRIGHT 8
+
1150 
+
1151 #define PRINT_LIB_INFO(libname, LIBNAME, flags, level) \
+
1152  if (CONFIG_##LIBNAME) { \
+
1153  const char *indent = flags & INDENT? " " : ""; \
+
1154  if (flags & SHOW_VERSION) { \
+
1155  unsigned int version = libname##_version(); \
+
1156  av_log(NULL, level, \
+
1157  "%slib%-11s %2d.%3d.%3d / %2d.%3d.%3d\n", \
+
1158  indent, #libname, \
+
1159  LIB##LIBNAME##_VERSION_MAJOR, \
+
1160  LIB##LIBNAME##_VERSION_MINOR, \
+
1161  LIB##LIBNAME##_VERSION_MICRO, \
+
1162  AV_VERSION_MAJOR(version), AV_VERSION_MINOR(version),\
+
1163  AV_VERSION_MICRO(version)); \
+
1164  } \
+
1165  if (flags & SHOW_CONFIG) { \
+
1166  const char *cfg = libname##_configuration(); \
+
1167  if (strcmp(FFMPEG_CONFIGURATION, cfg)) { \
+
1168  if (!warned_cfg) { \
+
1169  av_log(NULL, level, \
+
1170  "%sWARNING: library configuration mismatch\n", \
+
1171  indent); \
+
1172  warned_cfg = 1; \
+
1173  } \
+
1174  av_log(NULL, level, "%s%-11s configuration: %s\n", \
+
1175  indent, #libname, cfg); \
+
1176  } \
+
1177  } \
+
1178  } \
+
1179 
+
1180 static void print_all_libs_info(int flags, int level)
+
1181 {
+
1182  PRINT_LIB_INFO(avutil, AVUTIL, flags, level);
+
1183  PRINT_LIB_INFO(avcodec, AVCODEC, flags, level);
+
1184  PRINT_LIB_INFO(avformat, AVFORMAT, flags, level);
+
1185  PRINT_LIB_INFO(avdevice, AVDEVICE, flags, level);
+
1186  PRINT_LIB_INFO(avfilter, AVFILTER, flags, level);
+
1187  PRINT_LIB_INFO(swscale, SWSCALE, flags, level);
+
1188  PRINT_LIB_INFO(swresample, SWRESAMPLE, flags, level);
+
1189 }
+
1190 
+
1191 static void print_program_info(int flags, int level)
+
1192 {
+
1193  const char *indent = flags & INDENT? " " : "";
+
1194 
+
1195  av_log(NULL, level, "%s version " FFMPEG_VERSION, program_name);
+
1196  if (flags & SHOW_COPYRIGHT)
+
1197  av_log(NULL, level, " Copyright (c) %d-%d the FFmpeg developers",
+
1198  program_birth_year, CONFIG_THIS_YEAR);
+
1199  av_log(NULL, level, "\n");
+
1200  av_log(NULL, level, "%sbuilt with %s\n", indent, CC_IDENT);
+
1201 
+
1202  av_log(NULL, level, "%sconfiguration: " FFMPEG_CONFIGURATION "\n", indent);
+
1203 }
+
1204 
+
1205 static void print_buildconf(int flags, int level)
+
1206 {
+
1207  const char *indent = flags & INDENT ? " " : "";
+
1208  char str[] = { FFMPEG_CONFIGURATION };
+
1209  char *conflist, *remove_tilde, *splitconf;
+
1210 
+
1211  // Change all the ' --' strings to '~--' so that
+
1212  // they can be identified as tokens.
+
1213  while ((conflist = strstr(str, " --")) != NULL) {
+
1214  conflist[0] = '~';
+
1215  }
+
1216 
+
1217  // Compensate for the weirdness this would cause
+
1218  // when passing 'pkg-config --static'.
+
1219  while ((remove_tilde = strstr(str, "pkg-config~")) != NULL) {
+
1220  remove_tilde[sizeof("pkg-config~") - 2] = ' ';
+
1221  }
+
1222 
+
1223  splitconf = strtok(str, "~");
+
1224  av_log(NULL, level, "\n%sconfiguration:\n", indent);
+
1225  while (splitconf != NULL) {
+
1226  av_log(NULL, level, "%s%s%s\n", indent, indent, splitconf);
+
1227  splitconf = strtok(NULL, "~");
+
1228  }
+
1229 }
+
1230 
+
1231 void show_banner(int argc, char **argv, const OptionDef *options)
+
1232 {
+
1233  int idx = locate_option(argc, argv, options, "version");
+
1234  if (hide_banner || idx)
+
1235  return;
+
1236 
+
1237  print_program_info (INDENT|SHOW_COPYRIGHT, AV_LOG_INFO);
+
1238  print_all_libs_info(INDENT|SHOW_CONFIG, AV_LOG_INFO);
+
1239  print_all_libs_info(INDENT|SHOW_VERSION, AV_LOG_INFO);
+
1240 }
+
1241 
+
1242 int show_version(void *optctx, const char *opt, const char *arg)
+
1243 {
+
1244  print_program_info (SHOW_COPYRIGHT, AV_LOG_INFO);
+
1245  print_all_libs_info(SHOW_VERSION, AV_LOG_INFO);
+
1246 
+
1247  return 0;
+
1248 }
+
1249 
+
1250 int show_buildconf(void *optctx, const char *opt, const char *arg)
+
1251 {
+
1252  print_buildconf (INDENT|0, AV_LOG_INFO);
+
1253 
+
1254  return 0;
+
1255 }
+
1256 
+
1257 int show_license(void *optctx, const char *opt, const char *arg)
+
1258 {
+
1259 #if CONFIG_NONFREE
+
1260  av_log(NULL, AV_LOG_STDERR,
+
1261  "This version of %s has nonfree parts compiled in.\n"
+
1262  "Therefore it is not legally redistributable.\n",
+
1263  program_name );
+
1264 #elif CONFIG_GPLV3
+
1265  av_log(NULL, AV_LOG_STDERR,
+
1266  "%s is free software; you can redistribute it and/or modify\n"
+
1267  "it under the terms of the GNU General Public License as published by\n"
+
1268  "the Free Software Foundation; either version 3 of the License, or\n"
+
1269  "(at your option) any later version.\n"
+
1270  "\n"
+
1271  "%s is distributed in the hope that it will be useful,\n"
+
1272  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+
1273  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+
1274  "GNU General Public License for more details.\n"
+
1275  "\n"
+
1276  "You should have received a copy of the GNU General Public License\n"
+
1277  "along with %s. If not, see <http://www.gnu.org/licenses/>.\n",
+ +
1279 #elif CONFIG_GPL
+
1280  av_log(NULL, AV_LOG_STDERR,
+
1281  "%s is free software; you can redistribute it and/or modify\n"
+
1282  "it under the terms of the GNU General Public License as published by\n"
+
1283  "the Free Software Foundation; either version 2 of the License, or\n"
+
1284  "(at your option) any later version.\n"
+
1285  "\n"
+
1286  "%s is distributed in the hope that it will be useful,\n"
+
1287  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+
1288  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+
1289  "GNU General Public License for more details.\n"
+
1290  "\n"
+
1291  "You should have received a copy of the GNU General Public License\n"
+
1292  "along with %s; if not, write to the Free Software\n"
+
1293  "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
+ +
1295 #elif CONFIG_LGPLV3
+
1296  av_log(NULL, AV_LOG_STDERR,
+
1297  "%s is free software; you can redistribute it and/or modify\n"
+
1298  "it under the terms of the GNU Lesser General Public License as published by\n"
+
1299  "the Free Software Foundation; either version 3 of the License, or\n"
+
1300  "(at your option) any later version.\n"
+
1301  "\n"
+
1302  "%s is distributed in the hope that it will be useful,\n"
+
1303  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+
1304  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+
1305  "GNU Lesser General Public License for more details.\n"
+
1306  "\n"
+
1307  "You should have received a copy of the GNU Lesser General Public License\n"
+
1308  "along with %s. If not, see <http://www.gnu.org/licenses/>.\n",
+ +
1310 #else
+
1311  av_log(NULL, AV_LOG_STDERR,
+
1312  "%s is free software; you can redistribute it and/or\n"
+
1313  "modify it under the terms of the GNU Lesser General Public\n"
+
1314  "License as published by the Free Software Foundation; either\n"
+
1315  "version 2.1 of the License, or (at your option) any later version.\n"
+
1316  "\n"
+
1317  "%s is distributed in the hope that it will be useful,\n"
+
1318  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+
1319  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+
1320  "Lesser General Public License for more details.\n"
+
1321  "\n"
+
1322  "You should have received a copy of the GNU Lesser General Public\n"
+
1323  "License along with %s; if not, write to the Free Software\n"
+
1324  "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
+ +
1326 #endif
+
1327 
+
1328  return 0;
+
1329 }
+
1330 
+
1331 static int is_device(const AVClass *avclass)
+
1332 {
+
1333  if (!avclass)
+
1334  return 0;
+
1335  return AV_IS_INPUT_DEVICE(avclass->category) || AV_IS_OUTPUT_DEVICE(avclass->category);
+
1336 }
+
1337 
+
1338 static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers)
+
1339 {
+
1340  void *ifmt_opaque = NULL;
+
1341  const AVInputFormat *ifmt = NULL;
+
1342  void *ofmt_opaque = NULL;
+
1343  const AVOutputFormat *ofmt = NULL;
+
1344  const char *last_name;
+
1345  int is_dev;
+
1346 
+
1347  av_log(NULL, AV_LOG_STDERR, "%s\n"
+
1348  " D. = Demuxing supported\n"
+
1349  " .E = Muxing supported\n"
+
1350  " --\n", device_only ? "Devices:" : "File formats:");
+
1351  last_name = "000";
+
1352  for (;;) {
+
1353  int decode = 0;
+
1354  int encode = 0;
+
1355  const char *name = NULL;
+
1356  const char *long_name = NULL;
+
1357 
+
1358  if (muxdemuxers !=SHOW_DEMUXERS) {
+
1359  ofmt_opaque = NULL;
+
1360  while ((ofmt = av_muxer_iterate(&ofmt_opaque))) {
+
1361  is_dev = is_device(ofmt->priv_class);
+
1362  if (!is_dev && device_only)
+
1363  continue;
+
1364  if ((!name || strcmp(ofmt->name, name) < 0) &&
+
1365  strcmp(ofmt->name, last_name) > 0) {
+
1366  name = ofmt->name;
+
1367  long_name = ofmt->long_name;
+
1368  encode = 1;
+
1369  }
+
1370  }
+
1371  }
+
1372  if (muxdemuxers != SHOW_MUXERS) {
+
1373  ifmt_opaque = NULL;
+
1374  while ((ifmt = av_demuxer_iterate(&ifmt_opaque))) {
+
1375  is_dev = is_device(ifmt->priv_class);
+
1376  if (!is_dev && device_only)
+
1377  continue;
+
1378  if ((!name || strcmp(ifmt->name, name) < 0) &&
+
1379  strcmp(ifmt->name, last_name) > 0) {
+
1380  name = ifmt->name;
+
1381  long_name = ifmt->long_name;
+
1382  encode = 0;
+
1383  }
+
1384  if (name && strcmp(ifmt->name, name) == 0)
+
1385  decode = 1;
+
1386  }
+
1387  }
+
1388  if (!name)
+
1389  break;
+
1390  last_name = name;
+
1391 
+
1392  av_log(NULL, AV_LOG_STDERR, " %s%s %-15s %s\n",
+
1393  decode ? "D" : " ",
+
1394  encode ? "E" : " ",
+
1395  name,
+
1396  long_name ? long_name:" ");
+
1397  }
+
1398  return 0;
+
1399 }
+
1400 
+
1401 int show_formats(void *optctx, const char *opt, const char *arg)
+
1402 {
+
1403  return show_formats_devices(optctx, opt, arg, 0, SHOW_DEFAULT);
+
1404 }
+
1405 
+
1406 int show_muxers(void *optctx, const char *opt, const char *arg)
+
1407 {
+
1408  return show_formats_devices(optctx, opt, arg, 0, SHOW_MUXERS);
+
1409 }
+
1410 
+
1411 int show_demuxers(void *optctx, const char *opt, const char *arg)
+
1412 {
+
1413  return show_formats_devices(optctx, opt, arg, 0, SHOW_DEMUXERS);
+
1414 }
+
1415 
+
1416 int show_devices(void *optctx, const char *opt, const char *arg)
+
1417 {
+
1418  return show_formats_devices(optctx, opt, arg, 1, SHOW_DEFAULT);
+
1419 }
+
1420 
+
1421 #define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \
+
1422  if (codec->field) { \
+
1423  const type *p = codec->field; \
+
1424  \
+
1425  av_log(NULL, AV_LOG_STDERR, " Supported " list_name ":"); \
+
1426  while (*p != term) { \
+
1427  get_name(*p); \
+
1428  av_log(NULL, AV_LOG_STDERR, " %s", name); \
+
1429  p++; \
+
1430  } \
+
1431  av_log(NULL, AV_LOG_STDERR, "\n"); \
+
1432  } \
+
1433 
+
1434 static void print_codec(const AVCodec *c)
+
1435 {
+
1436  int encoder = av_codec_is_encoder(c);
+
1437 
+
1438  av_log(NULL, AV_LOG_STDERR, "%s %s [%s]:\n", encoder ? "Encoder" : "Decoder", c->name,
+
1439  c->long_name ? c->long_name : "");
+
1440 
+
1441  av_log(NULL, AV_LOG_STDERR, " General capabilities: ");
+
1442  if (c->capabilities & AV_CODEC_CAP_DRAW_HORIZ_BAND)
+
1443  av_log(NULL, AV_LOG_STDERR, "horizband ");
+
1444  if (c->capabilities & AV_CODEC_CAP_DR1)
+
1445  av_log(NULL, AV_LOG_STDERR, "dr1 ");
+
1446  if (c->capabilities & AV_CODEC_CAP_TRUNCATED)
+
1447  av_log(NULL, AV_LOG_STDERR, "trunc ");
+
1448  if (c->capabilities & AV_CODEC_CAP_DELAY)
+
1449  av_log(NULL, AV_LOG_STDERR, "delay ");
+
1450  if (c->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME)
+
1451  av_log(NULL, AV_LOG_STDERR, "small ");
+
1452  if (c->capabilities & AV_CODEC_CAP_SUBFRAMES)
+
1453  av_log(NULL, AV_LOG_STDERR, "subframes ");
+
1454  if (c->capabilities & AV_CODEC_CAP_EXPERIMENTAL)
+
1455  av_log(NULL, AV_LOG_STDERR, "exp ");
+
1456  if (c->capabilities & AV_CODEC_CAP_CHANNEL_CONF)
+
1457  av_log(NULL, AV_LOG_STDERR, "chconf ");
+
1458  if (c->capabilities & AV_CODEC_CAP_PARAM_CHANGE)
+
1459  av_log(NULL, AV_LOG_STDERR, "paramchange ");
+
1460  if (c->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)
+
1461  av_log(NULL, AV_LOG_STDERR, "variable ");
+
1462  if (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
+
1463  AV_CODEC_CAP_SLICE_THREADS |
+
1464  AV_CODEC_CAP_OTHER_THREADS))
+
1465  av_log(NULL, AV_LOG_STDERR, "threads ");
+
1466  if (c->capabilities & AV_CODEC_CAP_AVOID_PROBING)
+
1467  av_log(NULL, AV_LOG_STDERR, "avoidprobe ");
+
1468  if (c->capabilities & AV_CODEC_CAP_HARDWARE)
+
1469  av_log(NULL, AV_LOG_STDERR, "hardware ");
+
1470  if (c->capabilities & AV_CODEC_CAP_HYBRID)
+
1471  av_log(NULL, AV_LOG_STDERR, "hybrid ");
+
1472  if (!c->capabilities)
+
1473  av_log(NULL, AV_LOG_STDERR, "none");
+
1474  av_log(NULL, AV_LOG_STDERR, "\n");
+
1475 
+
1476  if (c->type == AVMEDIA_TYPE_VIDEO ||
+
1477  c->type == AVMEDIA_TYPE_AUDIO) {
+
1478  av_log(NULL, AV_LOG_STDERR, " Threading capabilities: ");
+
1479  switch (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
+
1480  AV_CODEC_CAP_SLICE_THREADS |
+
1481  AV_CODEC_CAP_OTHER_THREADS)) {
+
1482  case AV_CODEC_CAP_FRAME_THREADS |
+
1483  AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "frame and slice"); break;
+
1484  case AV_CODEC_CAP_FRAME_THREADS: av_log(NULL, AV_LOG_STDERR, "frame"); break;
+
1485  case AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "slice"); break;
+
1486  case AV_CODEC_CAP_OTHER_THREADS : av_log(NULL, AV_LOG_STDERR, "other"); break;
+
1487  default: av_log(NULL, AV_LOG_STDERR, "none"); break;
+
1488  }
+
1489  av_log(NULL, AV_LOG_STDERR, "\n");
+
1490  }
+
1491 
+
1492  if (avcodec_get_hw_config(c, 0)) {
+
1493  av_log(NULL, AV_LOG_STDERR, " Supported hardware devices: ");
+
1494  for (int i = 0;; i++) {
+
1495  const AVCodecHWConfig *config = avcodec_get_hw_config(c, i);
+
1496  if (!config)
+
1497  break;
+
1498  av_log(NULL, AV_LOG_STDERR, "%s ", av_hwdevice_get_type_name(config->device_type));
+
1499  }
+
1500  av_log(NULL, AV_LOG_STDERR, "\n");
+
1501  }
+
1502 
+
1503  if (c->supported_framerates) {
+
1504  const AVRational *fps = c->supported_framerates;
+
1505 
+
1506  av_log(NULL, AV_LOG_STDERR, " Supported framerates:");
+
1507  while (fps->num) {
+
1508  av_log(NULL, AV_LOG_STDERR, " %d/%d", fps->num, fps->den);
+
1509  fps++;
+
1510  }
+
1511  av_log(NULL, AV_LOG_STDERR, "\n");
+
1512  }
+
1513  PRINT_CODEC_SUPPORTED(c, pix_fmts, enum AVPixelFormat, "pixel formats",
+
1514  AV_PIX_FMT_NONE, GET_PIX_FMT_NAME);
+
1515  PRINT_CODEC_SUPPORTED(c, supported_samplerates, int, "sample rates", 0,
+ +
1517  PRINT_CODEC_SUPPORTED(c, sample_fmts, enum AVSampleFormat, "sample formats",
+
1518  AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME);
+
1519  PRINT_CODEC_SUPPORTED(c, channel_layouts, uint64_t, "channel layouts",
+
1520  0, GET_CH_LAYOUT_DESC);
+
1521 
+
1522  if (c->priv_class) {
+
1523  show_help_children(c->priv_class,
+
1524  AV_OPT_FLAG_ENCODING_PARAM |
+
1525  AV_OPT_FLAG_DECODING_PARAM);
+
1526  }
+
1527 }
+
1528 
+
1529 static char get_media_type_char(enum AVMediaType type)
+
1530 {
+
1531  switch (type) {
+
1532  case AVMEDIA_TYPE_VIDEO: return 'V';
+
1533  case AVMEDIA_TYPE_AUDIO: return 'A';
+
1534  case AVMEDIA_TYPE_DATA: return 'D';
+
1535  case AVMEDIA_TYPE_SUBTITLE: return 'S';
+
1536  case AVMEDIA_TYPE_ATTACHMENT:return 'T';
+
1537  default: return '?';
+
1538  }
+
1539 }
+
1540 
+
1541 static const AVCodec *next_codec_for_id(enum AVCodecID id, void **iter,
+
1542  int encoder)
+
1543 {
+
1544  const AVCodec *c;
+
1545  while ((c = av_codec_iterate(iter))) {
+
1546  if (c->id == id &&
+
1547  (encoder ? av_codec_is_encoder(c) : av_codec_is_decoder(c)))
+
1548  return c;
+
1549  }
+
1550  return NULL;
+
1551 }
+
1552 
+
1553 static int compare_codec_desc(const void *a, const void *b)
+
1554 {
+
1555  const AVCodecDescriptor * const *da = a;
+
1556  const AVCodecDescriptor * const *db = b;
+
1557 
+
1558  return (*da)->type != (*db)->type ? FFDIFFSIGN((*da)->type, (*db)->type) :
+
1559  strcmp((*da)->name, (*db)->name);
+
1560 }
+
1561 
+
1562 static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs)
+
1563 {
+
1564  const AVCodecDescriptor *desc = NULL;
+
1565  const AVCodecDescriptor **codecs;
+
1566  unsigned nb_codecs = 0, i = 0;
+
1567 
+
1568  while ((desc = avcodec_descriptor_next(desc)))
+
1569  nb_codecs++;
+
1570  if (!(codecs = av_calloc(nb_codecs, sizeof(*codecs)))) {
+
1571  av_log(NULL, AV_LOG_ERROR, "Out of memory\n");
+
1572  exit_program(1);
+
1573  }
+
1574  desc = NULL;
+
1575  while ((desc = avcodec_descriptor_next(desc)))
+
1576  codecs[i++] = desc;
+
1577  av_assert0(i == nb_codecs);
+
1578  qsort(codecs, nb_codecs, sizeof(*codecs), compare_codec_desc);
+
1579  *rcodecs = codecs;
+
1580  return nb_codecs;
+
1581 }
+
1582 
+
1583 static void print_codecs_for_id(enum AVCodecID id, int encoder)
+
1584 {
+
1585  void *iter = NULL;
+
1586  const AVCodec *codec;
+
1587 
+
1588  av_log(NULL, AV_LOG_STDERR, " (%s: ", encoder ? "encoders" : "decoders");
+
1589 
+
1590  while ((codec = next_codec_for_id(id, &iter, encoder)))
+
1591  av_log(NULL, AV_LOG_STDERR, "%s ", codec->name);
+
1592 
+
1593  av_log(NULL, AV_LOG_STDERR, ")");
+
1594 }
+
1595 
+
1596 int show_codecs(void *optctx, const char *opt, const char *arg)
+
1597 {
+
1598  const AVCodecDescriptor **codecs;
+
1599  unsigned i, nb_codecs = get_codecs_sorted(&codecs);
+
1600 
+
1601  av_log(NULL, AV_LOG_STDERR, "Codecs:\n"
+
1602  " D..... = Decoding supported\n"
+
1603  " .E.... = Encoding supported\n"
+
1604  " ..V... = Video codec\n"
+
1605  " ..A... = Audio codec\n"
+
1606  " ..S... = Subtitle codec\n"
+
1607  " ...I.. = Intra frame-only codec\n"
+
1608  " ....L. = Lossy compression\n"
+
1609  " .....S = Lossless compression\n"
+
1610  " -------\n");
+
1611  for (i = 0; i < nb_codecs; i++) {
+
1612  const AVCodecDescriptor *desc = codecs[i];
+
1613  const AVCodec *codec;
+
1614  void *iter = NULL;
+
1615 
+
1616  if (strstr(desc->name, "_deprecated"))
+
1617  continue;
+
1618 
+
1619  av_log(NULL, AV_LOG_STDERR, " ");
+
1620  av_log(NULL, AV_LOG_STDERR, avcodec_find_decoder(desc->id) ? "D" : ".");
+
1621  av_log(NULL, AV_LOG_STDERR, avcodec_find_encoder(desc->id) ? "E" : ".");
+
1622 
+
1623  av_log(NULL, AV_LOG_STDERR, "%c", get_media_type_char(desc->type));
+
1624  av_log(NULL, AV_LOG_STDERR, (desc->props & AV_CODEC_PROP_INTRA_ONLY) ? "I" : ".");
+
1625  av_log(NULL, AV_LOG_STDERR, (desc->props & AV_CODEC_PROP_LOSSY) ? "L" : ".");
+
1626  av_log(NULL, AV_LOG_STDERR, (desc->props & AV_CODEC_PROP_LOSSLESS) ? "S" : ".");
+
1627 
+
1628  av_log(NULL, AV_LOG_STDERR, " %-20s %s", desc->name, desc->long_name ? desc->long_name : "");
+
1629 
+
1630  /* print decoders/encoders when there's more than one or their
+
1631  * names are different from codec name */
+
1632  while ((codec = next_codec_for_id(desc->id, &iter, 0))) {
+
1633  if (strcmp(codec->name, desc->name)) {
+
1634  print_codecs_for_id(desc->id, 0);
+
1635  break;
+
1636  }
+
1637  }
+
1638  iter = NULL;
+
1639  while ((codec = next_codec_for_id(desc->id, &iter, 1))) {
+
1640  if (strcmp(codec->name, desc->name)) {
+
1641  print_codecs_for_id(desc->id, 1);
+
1642  break;
+
1643  }
+
1644  }
+
1645 
+
1646  av_log(NULL, AV_LOG_STDERR, "\n");
+
1647  }
+
1648  av_free(codecs);
+
1649  return 0;
+
1650 }
+
1651 
+
1652 static void print_codecs(int encoder)
+
1653 {
+
1654  const AVCodecDescriptor **codecs;
+
1655  unsigned i, nb_codecs = get_codecs_sorted(&codecs);
+
1656 
+
1657  av_log(NULL, AV_LOG_STDERR, "%s:\n"
+
1658  " V..... = Video\n"
+
1659  " A..... = Audio\n"
+
1660  " S..... = Subtitle\n"
+
1661  " .F.... = Frame-level multithreading\n"
+
1662  " ..S... = Slice-level multithreading\n"
+
1663  " ...X.. = Codec is experimental\n"
+
1664  " ....B. = Supports draw_horiz_band\n"
+
1665  " .....D = Supports direct rendering method 1\n"
+
1666  " ------\n",
+
1667  encoder ? "Encoders" : "Decoders");
+
1668  for (i = 0; i < nb_codecs; i++) {
+
1669  const AVCodecDescriptor *desc = codecs[i];
+
1670  const AVCodec *codec;
+
1671  void *iter = NULL;
+
1672 
+
1673  while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
+
1674  av_log(NULL, AV_LOG_STDERR, " %c", get_media_type_char(desc->type));
+
1675  av_log(NULL, AV_LOG_STDERR, (codec->capabilities & AV_CODEC_CAP_FRAME_THREADS) ? "F" : ".");
+
1676  av_log(NULL, AV_LOG_STDERR, (codec->capabilities & AV_CODEC_CAP_SLICE_THREADS) ? "S" : ".");
+
1677  av_log(NULL, AV_LOG_STDERR, (codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL) ? "X" : ".");
+
1678  av_log(NULL, AV_LOG_STDERR, (codec->capabilities & AV_CODEC_CAP_DRAW_HORIZ_BAND)?"B" : ".");
+
1679  av_log(NULL, AV_LOG_STDERR, (codec->capabilities & AV_CODEC_CAP_DR1) ? "D" : ".");
+
1680 
+
1681  av_log(NULL, AV_LOG_STDERR, " %-20s %s", codec->name, codec->long_name ? codec->long_name : "");
+
1682  if (strcmp(codec->name, desc->name))
+
1683  av_log(NULL, AV_LOG_STDERR, " (codec %s)", desc->name);
+
1684 
+
1685  av_log(NULL, AV_LOG_STDERR, "\n");
+
1686  }
+
1687  }
+
1688  av_free(codecs);
+
1689 }
+
1690 
+
1691 int show_decoders(void *optctx, const char *opt, const char *arg)
+
1692 {
+
1693  print_codecs(0);
+
1694  return 0;
+
1695 }
+
1696 
+
1697 int show_encoders(void *optctx, const char *opt, const char *arg)
+
1698 {
+
1699  print_codecs(1);
+
1700  return 0;
+
1701 }
+
1702 
+
1703 int show_bsfs(void *optctx, const char *opt, const char *arg)
+
1704 {
+
1705  const AVBitStreamFilter *bsf = NULL;
+
1706  void *opaque = NULL;
+
1707 
+
1708  av_log(NULL, AV_LOG_STDERR, "Bitstream filters:\n");
+
1709  while ((bsf = av_bsf_iterate(&opaque)))
+
1710  av_log(NULL, AV_LOG_STDERR, "%s\n", bsf->name);
+
1711  av_log(NULL, AV_LOG_STDERR, "\n");
+
1712  return 0;
+
1713 }
+
1714 
+
1715 int show_protocols(void *optctx, const char *opt, const char *arg)
+
1716 {
+
1717  void *opaque = NULL;
+
1718  const char *name;
+
1719 
+
1720  av_log(NULL, AV_LOG_STDERR, "Supported file protocols:\n"
+
1721  "Input:\n");
+
1722  while ((name = avio_enum_protocols(&opaque, 0)))
+
1723  av_log(NULL, AV_LOG_STDERR, " %s\n", name);
+
1724  av_log(NULL, AV_LOG_STDERR, "Output:\n");
+
1725  while ((name = avio_enum_protocols(&opaque, 1)))
+
1726  av_log(NULL, AV_LOG_STDERR, " %s\n", name);
+
1727  return 0;
+
1728 }
+
1729 
+
1730 int show_filters(void *optctx, const char *opt, const char *arg)
+
1731 {
+
1732 #if CONFIG_AVFILTER
+
1733  const AVFilter *filter = NULL;
+
1734  char descr[64], *descr_cur;
+
1735  void *opaque = NULL;
+
1736  int i, j;
+
1737  const AVFilterPad *pad;
+
1738 
+
1739  av_log(NULL, AV_LOG_STDERR, "Filters:\n"
+
1740  " T.. = Timeline support\n"
+
1741  " .S. = Slice threading\n"
+
1742  " ..C = Command support\n"
+
1743  " A = Audio input/output\n"
+
1744  " V = Video input/output\n"
+
1745  " N = Dynamic number and/or type of input/output\n"
+
1746  " | = Source or sink filter\n");
+
1747  while ((filter = av_filter_iterate(&opaque))) {
+
1748  descr_cur = descr;
+
1749  for (i = 0; i < 2; i++) {
+
1750  if (i) {
+
1751  *(descr_cur++) = '-';
+
1752  *(descr_cur++) = '>';
+
1753  }
+
1754  pad = i ? filter->outputs : filter->inputs;
+
1755  for (j = 0; pad && avfilter_pad_get_name(pad, j); j++) {
+
1756  if (descr_cur >= descr + sizeof(descr) - 4)
+
1757  break;
+
1758  *(descr_cur++) = get_media_type_char(avfilter_pad_get_type(pad, j));
+
1759  }
+
1760  if (!j)
+
1761  *(descr_cur++) = ((!i && (filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)) ||
+
1762  ( i && (filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS))) ? 'N' : '|';
+
1763  }
+
1764  *descr_cur = 0;
+
1765  av_log(NULL, AV_LOG_STDERR, " %c%c%c %-17s %-10s %s\n",
+
1766  filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE ? 'T' : '.',
+
1767  filter->flags & AVFILTER_FLAG_SLICE_THREADS ? 'S' : '.',
+
1768  filter->process_command ? 'C' : '.',
+
1769  filter->name, descr, filter->description);
+
1770  }
+
1771 #else
+
1772  av_log(NULL, AV_LOG_STDERR, "No filters available: libavfilter disabled\n");
+
1773 #endif
+
1774  return 0;
+
1775 }
+
1776 
+
1777 int show_colors(void *optctx, const char *opt, const char *arg)
+
1778 {
+
1779  const char *name;
+
1780  const uint8_t *rgb;
+
1781  int i;
+
1782 
+
1783  av_log(NULL, AV_LOG_STDERR, "%-32s #RRGGBB\n", "name");
+
1784 
+
1785  for (i = 0; (name = av_get_known_color_name(i, &rgb)); i++)
+
1786  av_log(NULL, AV_LOG_STDERR, "%-32s #%02x%02x%02x\n", name, rgb[0], rgb[1], rgb[2]);
+
1787 
+
1788  return 0;
+
1789 }
+
1790 
+
1791 int show_pix_fmts(void *optctx, const char *opt, const char *arg)
+
1792 {
+
1793  const AVPixFmtDescriptor *pix_desc = NULL;
+
1794 
+
1795  av_log(NULL, AV_LOG_STDERR, "Pixel formats:\n"
+
1796  "I.... = Supported Input format for conversion\n"
+
1797  ".O... = Supported Output format for conversion\n"
+
1798  "..H.. = Hardware accelerated format\n"
+
1799  "...P. = Paletted format\n"
+
1800  "....B = Bitstream format\n"
+
1801  "FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL\n"
+
1802  "-----\n");
+
1803 
+
1804 #if !CONFIG_SWSCALE
+
1805 # define sws_isSupportedInput(x) 0
+
1806 # define sws_isSupportedOutput(x) 0
+
1807 #endif
+
1808 
+
1809  while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) {
+
1810  enum AVPixelFormat av_unused pix_fmt = av_pix_fmt_desc_get_id(pix_desc);
+
1811  av_log(NULL, AV_LOG_STDERR, "%c%c%c%c%c %-16s %d %2d\n",
+
1812  sws_isSupportedInput (pix_fmt) ? 'I' : '.',
+
1813  sws_isSupportedOutput(pix_fmt) ? 'O' : '.',
+
1814  pix_desc->flags & AV_PIX_FMT_FLAG_HWACCEL ? 'H' : '.',
+
1815  pix_desc->flags & AV_PIX_FMT_FLAG_PAL ? 'P' : '.',
+
1816  pix_desc->flags & AV_PIX_FMT_FLAG_BITSTREAM ? 'B' : '.',
+
1817  pix_desc->name,
+
1818  pix_desc->nb_components,
+
1819  av_get_bits_per_pixel(pix_desc));
+
1820  }
+
1821  return 0;
+
1822 }
+
1823 
+
1824 int show_layouts(void *optctx, const char *opt, const char *arg)
+
1825 {
+
1826  int i = 0;
+
1827  uint64_t layout, j;
+
1828  const char *name, *descr;
+
1829 
+
1830  av_log(NULL, AV_LOG_STDERR, "Individual channels:\n"
+
1831  "NAME DESCRIPTION\n");
+
1832  for (i = 0; i < 63; i++) {
+
1833  name = av_get_channel_name((uint64_t)1 << i);
+
1834  if (!name)
+
1835  continue;
+
1836  descr = av_get_channel_description((uint64_t)1 << i);
+
1837  av_log(NULL, AV_LOG_STDERR, "%-14s %s\n", name, descr);
+
1838  }
+
1839  av_log(NULL, AV_LOG_STDERR, "\nStandard channel layouts:\n"
+
1840  "NAME DECOMPOSITION\n");
+
1841  for (i = 0; !av_get_standard_channel_layout(i, &layout, &name); i++) {
+
1842  if (name) {
+
1843  av_log(NULL, AV_LOG_STDERR, "%-14s ", name);
+
1844  for (j = 1; j; j <<= 1)
+
1845  if ((layout & j))
+
1846  av_log(NULL, AV_LOG_STDERR, "%s%s", (layout & (j - 1)) ? "+" : "", av_get_channel_name(j));
+
1847  av_log(NULL, AV_LOG_STDERR, "\n");
+
1848  }
+
1849  }
+
1850  return 0;
+
1851 }
+
1852 
+
1853 int show_sample_fmts(void *optctx, const char *opt, const char *arg)
+
1854 {
+
1855  int i;
+
1856  char fmt_str[128];
+
1857  for (i = -1; i < AV_SAMPLE_FMT_NB; i++)
+
1858  av_log(NULL, AV_LOG_STDERR, "%s\n", av_get_sample_fmt_string(fmt_str, sizeof(fmt_str), i));
+
1859  return 0;
+
1860 }
+
1861 
+
1862 static void show_help_codec(const char *name, int encoder)
+
1863 {
+
1864  const AVCodecDescriptor *desc;
+
1865  const AVCodec *codec;
+
1866 
+
1867  if (!name) {
+
1868  av_log(NULL, AV_LOG_ERROR, "No codec name specified.\n");
+
1869  return;
+
1870  }
+
1871 
+
1872  codec = encoder ? avcodec_find_encoder_by_name(name) :
+
1873  avcodec_find_decoder_by_name(name);
+
1874 
+
1875  if (codec)
+
1876  print_codec(codec);
+
1877  else if ((desc = avcodec_descriptor_get_by_name(name))) {
+
1878  void *iter = NULL;
+
1879  int printed = 0;
+
1880 
+
1881  while ((codec = next_codec_for_id(desc->id, &iter, encoder))) {
+
1882  printed = 1;
+
1883  print_codec(codec);
+
1884  }
+
1885 
+
1886  if (!printed) {
+
1887  av_log(NULL, AV_LOG_ERROR, "Codec '%s' is known to FFmpeg, "
+
1888  "but no %s for it are available. FFmpeg might need to be "
+
1889  "recompiled with additional external libraries.\n",
+
1890  name, encoder ? "encoders" : "decoders");
+
1891  }
+
1892  } else {
+
1893  av_log(NULL, AV_LOG_ERROR, "Codec '%s' is not recognized by FFmpeg.\n",
+
1894  name);
+
1895  }
+
1896 }
+
1897 
+
1898 static void show_help_demuxer(const char *name)
+
1899 {
+
1900  const AVInputFormat *fmt = av_find_input_format(name);
+
1901 
+
1902  if (!fmt) {
+
1903  av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
+
1904  return;
+
1905  }
+
1906 
+
1907  av_log(NULL, AV_LOG_STDERR, "Demuxer %s [%s]:\n", fmt->name, fmt->long_name);
+
1908 
+
1909  if (fmt->extensions)
+
1910  av_log(NULL, AV_LOG_STDERR, " Common extensions: %s.\n", fmt->extensions);
+
1911 
+
1912  if (fmt->priv_class)
+
1913  show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
+
1914 }
+
1915 
+
1916 static void show_help_protocol(const char *name)
+
1917 {
+
1918  const AVClass *proto_class;
+
1919 
+
1920  if (!name) {
+
1921  av_log(NULL, AV_LOG_ERROR, "No protocol name specified.\n");
+
1922  return;
+
1923  }
+
1924 
+
1925  proto_class = avio_protocol_get_class(name);
+
1926  if (!proto_class) {
+
1927  av_log(NULL, AV_LOG_ERROR, "Unknown protocol '%s'.\n", name);
+
1928  return;
+
1929  }
+
1930 
+
1931  show_help_children(proto_class, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
+
1932 }
+
1933 
+
1934 static void show_help_muxer(const char *name)
+
1935 {
+
1936  const AVCodecDescriptor *desc;
+
1937  const AVOutputFormat *fmt = av_guess_format(name, NULL, NULL);
+
1938 
+
1939  if (!fmt) {
+
1940  av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
+
1941  return;
+
1942  }
+
1943 
+
1944  av_log(NULL, AV_LOG_STDERR, "Muxer %s [%s]:\n", fmt->name, fmt->long_name);
+
1945 
+
1946  if (fmt->extensions)
+
1947  av_log(NULL, AV_LOG_STDERR, " Common extensions: %s.\n", fmt->extensions);
+
1948  if (fmt->mime_type)
+
1949  av_log(NULL, AV_LOG_STDERR, " Mime type: %s.\n", fmt->mime_type);
+
1950  if (fmt->video_codec != AV_CODEC_ID_NONE &&
+
1951  (desc = avcodec_descriptor_get(fmt->video_codec))) {
+
1952  av_log(NULL, AV_LOG_STDERR, " Default video codec: %s.\n", desc->name);
+
1953  }
+
1954  if (fmt->audio_codec != AV_CODEC_ID_NONE &&
+
1955  (desc = avcodec_descriptor_get(fmt->audio_codec))) {
+
1956  av_log(NULL, AV_LOG_STDERR, " Default audio codec: %s.\n", desc->name);
+
1957  }
+
1958  if (fmt->subtitle_codec != AV_CODEC_ID_NONE &&
+
1959  (desc = avcodec_descriptor_get(fmt->subtitle_codec))) {
+
1960  av_log(NULL, AV_LOG_STDERR, " Default subtitle codec: %s.\n", desc->name);
+
1961  }
+
1962 
+
1963  if (fmt->priv_class)
+
1964  show_help_children(fmt->priv_class, AV_OPT_FLAG_ENCODING_PARAM);
+
1965 }
+
1966 
+
1967 #if CONFIG_AVFILTER
+
1968 static void show_help_filter(const char *name)
+
1969 {
+
1970 #if CONFIG_AVFILTER
+
1971  const AVFilter *f = avfilter_get_by_name(name);
+
1972  int i, count;
+
1973 
+
1974  if (!name) {
+
1975  av_log(NULL, AV_LOG_ERROR, "No filter name specified.\n");
+
1976  return;
+
1977  } else if (!f) {
+
1978  av_log(NULL, AV_LOG_ERROR, "Unknown filter '%s'.\n", name);
+
1979  return;
+
1980  }
+
1981 
+
1982  av_log(NULL, AV_LOG_STDERR, "Filter %s\n", f->name);
+
1983  if (f->description)
+
1984  av_log(NULL, AV_LOG_STDERR, " %s\n", f->description);
+
1985 
+
1986  if (f->flags & AVFILTER_FLAG_SLICE_THREADS)
+
1987  av_log(NULL, AV_LOG_STDERR, " slice threading supported\n");
+
1988 
+
1989  av_log(NULL, AV_LOG_STDERR, " Inputs:\n");
+
1990  count = avfilter_pad_count(f->inputs);
+
1991  for (i = 0; i < count; i++) {
+
1992  av_log(NULL, AV_LOG_STDERR, " #%d: %s (%s)\n", i, avfilter_pad_get_name(f->inputs, i),
+
1993  media_type_string(avfilter_pad_get_type(f->inputs, i)));
+
1994  }
+
1995  if (f->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)
+
1996  av_log(NULL, AV_LOG_STDERR, " dynamic (depending on the options)\n");
+
1997  else if (!count)
+
1998  av_log(NULL, AV_LOG_STDERR, " none (source filter)\n");
+
1999 
+
2000  av_log(NULL, AV_LOG_STDERR, " Outputs:\n");
+
2001  count = avfilter_pad_count(f->outputs);
+
2002  for (i = 0; i < count; i++) {
+
2003  av_log(NULL, AV_LOG_STDERR, " #%d: %s (%s)\n", i, avfilter_pad_get_name(f->outputs, i),
+
2004  media_type_string(avfilter_pad_get_type(f->outputs, i)));
+
2005  }
+
2006  if (f->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS)
+
2007  av_log(NULL, AV_LOG_STDERR, " dynamic (depending on the options)\n");
+
2008  else if (!count)
+
2009  av_log(NULL, AV_LOG_STDERR, " none (sink filter)\n");
+
2010 
+
2011  if (f->priv_class)
+
2012  show_help_children(f->priv_class, AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_FILTERING_PARAM |
+
2013  AV_OPT_FLAG_AUDIO_PARAM);
+
2014  if (f->flags & AVFILTER_FLAG_SUPPORT_TIMELINE)
+
2015  av_log(NULL, AV_LOG_STDERR, "This filter has support for timeline through the 'enable' option.\n");
+
2016 #else
+
2017  av_log(NULL, AV_LOG_ERROR, "Build without libavfilter; "
+
2018  "can not to satisfy request\n");
+
2019 #endif
+
2020 }
+
2021 #endif
+
2022 
+
2023 static void show_help_bsf(const char *name)
+
2024 {
+
2025  const AVBitStreamFilter *bsf = av_bsf_get_by_name(name);
+
2026 
+
2027  if (!name) {
+
2028  av_log(NULL, AV_LOG_ERROR, "No bitstream filter name specified.\n");
+
2029  return;
+
2030  } else if (!bsf) {
+
2031  av_log(NULL, AV_LOG_ERROR, "Unknown bit stream filter '%s'.\n", name);
+
2032  return;
+
2033  }
+
2034 
+
2035  av_log(NULL, AV_LOG_STDERR, "Bit stream filter %s\n", bsf->name);
+
2036  PRINT_CODEC_SUPPORTED(bsf, codec_ids, enum AVCodecID, "codecs",
+
2037  AV_CODEC_ID_NONE, GET_CODEC_NAME);
+
2038  if (bsf->priv_class)
+
2039  show_help_children(bsf->priv_class, AV_OPT_FLAG_BSF_PARAM);
+
2040 }
+
2041 
+
2042 int show_help(void *optctx, const char *opt, const char *arg)
+
2043 {
+
2044  char *topic, *par;
+
2045 
+
2046  topic = av_strdup(arg ? arg : "");
+
2047  if (!topic)
+
2048  return AVERROR(ENOMEM);
+
2049  par = strchr(topic, '=');
+
2050  if (par)
+
2051  *par++ = 0;
+
2052 
+
2053  if (!*topic) {
+
2054  if (program_name && !strcmp(program_name, "ffmpeg")) {
+
2055  show_help_default_ffmpeg(topic, par);
+
2056  } else {
+
2057  show_help_default_ffprobe(topic, par);
+
2058  }
+
2059  } else if (!strcmp(topic, "decoder")) {
+
2060  show_help_codec(par, 0);
+
2061  } else if (!strcmp(topic, "encoder")) {
+
2062  show_help_codec(par, 1);
+
2063  } else if (!strcmp(topic, "demuxer")) {
+
2064  show_help_demuxer(par);
+
2065  } else if (!strcmp(topic, "muxer")) {
+
2066  show_help_muxer(par);
+
2067  } else if (!strcmp(topic, "protocol")) {
+
2068  show_help_protocol(par);
+
2069 #if CONFIG_AVFILTER
+
2070  } else if (!strcmp(topic, "filter")) {
+
2071  show_help_filter(par);
+
2072 #endif
+
2073  } else if (!strcmp(topic, "bsf")) {
+
2074  show_help_bsf(par);
+
2075  } else {
+
2076  if (program_name && !strcmp(program_name, "ffmpeg")) {
+
2077  show_help_default_ffmpeg(topic, par);
+
2078  } else {
+
2079  show_help_default_ffprobe(topic, par);
+
2080  }
+
2081  }
+
2082 
+
2083  av_freep(&topic);
+
2084  return 0;
+
2085 }
+
2086 
+
2087 int read_yesno(void)
+
2088 {
+
2089  int c = getchar();
+
2090  int yesno = (av_toupper(c) == 'Y');
+
2091 
+
2092  while (c != '\n' && c != EOF)
+
2093  c = getchar();
+
2094 
+
2095  return yesno;
+
2096 }
+
2097 
+
2098 FILE *get_preset_file(char *filename, size_t filename_size,
+
2099  const char *preset_name, int is_path,
+
2100  const char *codec_name)
+
2101 {
+
2102  FILE *f = NULL;
+
2103  int i;
+
2104  const char *base[3] = { getenv("FFMPEG_DATADIR"),
+
2105  getenv("HOME"),
+
2106  FFMPEG_DATADIR, };
+
2107 
+
2108  if (is_path) {
+
2109  av_strlcpy(filename, preset_name, filename_size);
+
2110  f = fopen(filename, "r");
+
2111  } else {
+
2112 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
+
2113  char datadir[MAX_PATH], *ls;
+
2114  base[2] = NULL;
+
2115 
+
2116  if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1))
+
2117  {
+
2118  for (ls = datadir; ls < datadir + strlen(datadir); ls++)
+
2119  if (*ls == '\\') *ls = '/';
+
2120 
+
2121  if (ls = strrchr(datadir, '/'))
+
2122  {
+
2123  *ls = 0;
+
2124  strncat(datadir, "/ffpresets", sizeof(datadir) - 1 - strlen(datadir));
+
2125  base[2] = datadir;
+
2126  }
+
2127  }
+
2128 #endif
+
2129  for (i = 0; i < 3 && !f; i++) {
+
2130  if (!base[i])
+
2131  continue;
+
2132  snprintf(filename, filename_size, "%s%s/%s.ffpreset", base[i],
+
2133  i != 1 ? "" : "/.ffmpeg", preset_name);
+
2134  f = fopen(filename, "r");
+
2135  if (!f && codec_name) {
+
2136  snprintf(filename, filename_size,
+
2137  "%s%s/%s-%s.ffpreset",
+
2138  base[i], i != 1 ? "" : "/.ffmpeg", codec_name,
+
2139  preset_name);
+
2140  f = fopen(filename, "r");
+
2141  }
+
2142  }
+
2143  }
+
2144 
+
2145  return f;
+
2146 }
+
2147 
+
2148 int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
+
2149 {
+
2150  int ret = avformat_match_stream_specifier(s, st, spec);
+
2151  if (ret < 0)
+
2152  av_log(s, AV_LOG_ERROR, "Invalid stream specifier: %s.\n", spec);
+
2153  return ret;
+
2154 }
+
2155 
+
2156 AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
+
2157  AVFormatContext *s, AVStream *st, const AVCodec *codec)
+
2158 {
+
2159  AVDictionary *ret = NULL;
+
2160  AVDictionaryEntry *t = NULL;
+
2161  int flags = s->oformat ? AV_OPT_FLAG_ENCODING_PARAM
+
2162  : AV_OPT_FLAG_DECODING_PARAM;
+
2163  char prefix = 0;
+
2164  const AVClass *cc = avcodec_get_class();
+
2165 
+
2166  if (!codec)
+
2167  codec = s->oformat ? avcodec_find_encoder(codec_id)
+
2168  : avcodec_find_decoder(codec_id);
+
2169 
+
2170  switch (st->codecpar->codec_type) {
+
2171  case AVMEDIA_TYPE_VIDEO:
+
2172  prefix = 'v';
+
2173  flags |= AV_OPT_FLAG_VIDEO_PARAM;
+
2174  break;
+
2175  case AVMEDIA_TYPE_AUDIO:
+
2176  prefix = 'a';
+
2177  flags |= AV_OPT_FLAG_AUDIO_PARAM;
+
2178  break;
+
2179  case AVMEDIA_TYPE_SUBTITLE:
+
2180  prefix = 's';
+
2181  flags |= AV_OPT_FLAG_SUBTITLE_PARAM;
+
2182  break;
+
2183  }
+
2184 
+
2185  while ((t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX))) {
+
2186  const AVClass *priv_class;
+
2187  char *p = strchr(t->key, ':');
+
2188 
+
2189  /* check stream specification in opt name */
+
2190  if (p)
+
2191  switch (check_stream_specifier(s, st, p + 1)) {
+
2192  case 1: *p = 0; break;
+
2193  case 0: continue;
+
2194  default: exit_program(1);
+
2195  }
+
2196 
+
2197  if (av_opt_find(&cc, t->key, NULL, flags, AV_OPT_SEARCH_FAKE_OBJ) ||
+
2198  !codec ||
+
2199  ((priv_class = codec->priv_class) &&
+
2200  av_opt_find(&priv_class, t->key, NULL, flags,
+
2201  AV_OPT_SEARCH_FAKE_OBJ)))
+
2202  av_dict_set(&ret, t->key, t->value, 0);
+
2203  else if (t->key[0] == prefix &&
+
2204  av_opt_find(&cc, t->key + 1, NULL, flags,
+
2205  AV_OPT_SEARCH_FAKE_OBJ))
+
2206  av_dict_set(&ret, t->key + 1, t->value, 0);
+
2207 
+
2208  if (p)
+
2209  *p = ':';
+
2210  }
+
2211  return ret;
+
2212 }
+
2213 
+
2214 AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
+
2215  AVDictionary *codec_opts)
+
2216 {
+
2217  int i;
+
2218  AVDictionary **opts;
+
2219 
+
2220  if (!s->nb_streams)
+
2221  return NULL;
+
2222  opts = av_mallocz_array(s->nb_streams, sizeof(*opts));
+
2223  if (!opts) {
+
2224  av_log(NULL, AV_LOG_ERROR,
+
2225  "Could not alloc memory for stream options.\n");
+
2226  return NULL;
+
2227  }
+
2228  for (i = 0; i < s->nb_streams; i++)
+
2229  opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codecpar->codec_id,
+
2230  s, s->streams[i], NULL);
+
2231  return opts;
+
2232 }
+
2233 
+
2234 void *grow_array(void *array, int elem_size, int *size, int new_size)
+
2235 {
+
2236  if (new_size >= INT_MAX / elem_size) {
+
2237  av_log(NULL, AV_LOG_ERROR, "Array too big.\n");
+
2238  exit_program(1);
+
2239  }
+
2240  if (*size < new_size) {
+
2241  uint8_t *tmp = av_realloc_array(array, new_size, elem_size);
+
2242  if (!tmp) {
+
2243  av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
+
2244  exit_program(1);
+
2245  }
+
2246  memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
+
2247  *size = new_size;
+
2248  return tmp;
+
2249  }
+
2250  return array;
+
2251 }
+
2252 
+
2253 double get_rotation(AVStream *st)
+
2254 {
+
2255  uint8_t* displaymatrix = av_stream_get_side_data(st,
+
2256  AV_PKT_DATA_DISPLAYMATRIX, NULL);
+
2257  double theta = 0;
+
2258  if (displaymatrix)
+
2259  theta = -av_display_rotation_get((int32_t*) displaymatrix);
+
2260 
+
2261  theta -= 360*floor(theta/360 + 0.9/360);
+
2262 
+
2263  if (fabs(theta - 90*round(theta/90)) > 2)
+
2264  av_log(NULL, AV_LOG_WARNING, "Odd rotation angle.\n"
+
2265  "If you want to help, upload a sample "
+
2266  "of this file to https://streams.videolan.org/upload/ "
+
2267  "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)");
+
2268 
+
2269  return theta;
+
2270 }
+
2271 
+
2272 #if CONFIG_AVDEVICE
+
2273 static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
+
2274 {
+
2275  int ret, i;
+
2276  AVDeviceInfoList *device_list = NULL;
+
2277 
+
2278  if (!fmt || !fmt->priv_class || !AV_IS_INPUT_DEVICE(fmt->priv_class->category))
+
2279  return AVERROR(EINVAL);
+
2280 
+
2281  av_log(NULL, AV_LOG_STDERR, "Auto-detected sources for %s:\n", fmt->name);
+
2282  if (!fmt->get_device_list) {
+
2283  ret = AVERROR(ENOSYS);
+
2284  av_log(NULL, AV_LOG_STDERR, "Cannot list sources. Not implemented.\n");
+
2285  goto fail;
+
2286  }
+
2287 
+
2288  if ((ret = avdevice_list_input_sources(fmt, NULL, opts, &device_list)) < 0) {
+
2289  av_log(NULL, AV_LOG_STDERR, "Cannot list sources.\n");
+
2290  goto fail;
+
2291  }
+
2292 
+
2293  for (i = 0; i < device_list->nb_devices; i++) {
+
2294  av_log(NULL, AV_LOG_STDERR, "%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
+
2295  device_list->devices[i]->device_name, device_list->devices[i]->device_description);
+
2296  }
+
2297 
+
2298  fail:
+
2299  avdevice_free_list_devices(&device_list);
+
2300  return ret;
+
2301 }
+
2302 
+
2303 static int print_device_sinks(const AVOutputFormat *fmt, AVDictionary *opts)
+
2304 {
+
2305  int ret, i;
+
2306  AVDeviceInfoList *device_list = NULL;
+
2307 
+
2308  if (!fmt || !fmt->priv_class || !AV_IS_OUTPUT_DEVICE(fmt->priv_class->category))
+
2309  return AVERROR(EINVAL);
+
2310 
+
2311  av_log(NULL, AV_LOG_STDERR, "Auto-detected sinks for %s:\n", fmt->name);
+
2312  if (!fmt->get_device_list) {
+
2313  ret = AVERROR(ENOSYS);
+
2314  av_log(NULL, AV_LOG_STDERR, "Cannot list sinks. Not implemented.\n");
+
2315  goto fail;
+
2316  }
+
2317 
+
2318  if ((ret = avdevice_list_output_sinks(fmt, NULL, opts, &device_list)) < 0) {
+
2319  av_log(NULL, AV_LOG_STDERR, "Cannot list sinks.\n");
+
2320  goto fail;
+
2321  }
+
2322 
+
2323  for (i = 0; i < device_list->nb_devices; i++) {
+
2324  av_log(NULL, AV_LOG_STDERR, "%s %s [%s]\n", device_list->default_device == i ? "*" : " ",
+
2325  device_list->devices[i]->device_name, device_list->devices[i]->device_description);
+
2326  }
+
2327 
+
2328  fail:
+
2329  avdevice_free_list_devices(&device_list);
+
2330  return ret;
+
2331 }
+
2332 
+
2333 static int show_sinks_sources_parse_arg(const char *arg, char **dev, AVDictionary **opts)
+
2334 {
+
2335  int ret;
+
2336  if (arg) {
+
2337  char *opts_str = NULL;
+
2338  av_assert0(dev && opts);
+
2339  *dev = av_strdup(arg);
+
2340  if (!*dev)
+
2341  return AVERROR(ENOMEM);
+
2342  if ((opts_str = strchr(*dev, ','))) {
+
2343  *(opts_str++) = '\0';
+
2344  if (opts_str[0] && ((ret = av_dict_parse_string(opts, opts_str, "=", ":", 0)) < 0)) {
+
2345  av_freep(dev);
+
2346  return ret;
+
2347  }
+
2348  }
+
2349  } else
+
2350  av_log(NULL, AV_LOG_STDERR, "\nDevice name is not provided.\n"
+
2351  "You can pass devicename[,opt1=val1[,opt2=val2...]] as an argument.\n\n");
+
2352  return 0;
+
2353 }
+
2354 
+
2355 int show_sources(void *optctx, const char *opt, const char *arg)
+
2356 {
+
2357  const AVInputFormat *fmt = NULL;
+
2358  char *dev = NULL;
+
2359  AVDictionary *opts = NULL;
+
2360  int ret = 0;
+
2361  int error_level = av_log_get_level();
+
2362 
+
2363  av_log_set_level(AV_LOG_WARNING);
+
2364 
+
2365  if ((ret = show_sinks_sources_parse_arg(arg, &dev, &opts)) < 0)
+
2366  goto fail;
+
2367 
+
2368  do {
+
2369  fmt = av_input_audio_device_next(fmt);
+
2370  if (fmt) {
+
2371  if (!strcmp(fmt->name, "lavfi"))
+
2372  continue; //it's pointless to probe lavfi
+
2373  if (dev && !av_match_name(dev, fmt->name))
+
2374  continue;
+
2375  print_device_sources(fmt, opts);
+
2376  }
+
2377  } while (fmt);
+
2378  do {
+
2379  fmt = av_input_video_device_next(fmt);
+
2380  if (fmt) {
+
2381  if (dev && !av_match_name(dev, fmt->name))
+
2382  continue;
+
2383  print_device_sources(fmt, opts);
+
2384  }
+
2385  } while (fmt);
+
2386  fail:
+
2387  av_dict_free(&opts);
+
2388  av_free(dev);
+
2389  av_log_set_level(error_level);
+
2390  return ret;
+
2391 }
+
2392 
+
2393 int show_sinks(void *optctx, const char *opt, const char *arg)
+
2394 {
+
2395  const AVOutputFormat *fmt = NULL;
+
2396  char *dev = NULL;
+
2397  AVDictionary *opts = NULL;
+
2398  int ret = 0;
+
2399  int error_level = av_log_get_level();
+
2400 
+
2401  av_log_set_level(AV_LOG_WARNING);
+
2402 
+
2403  if ((ret = show_sinks_sources_parse_arg(arg, &dev, &opts)) < 0)
+
2404  goto fail;
+
2405 
+
2406  do {
+
2407  fmt = av_output_audio_device_next(fmt);
+
2408  if (fmt) {
+
2409  if (dev && !av_match_name(dev, fmt->name))
+
2410  continue;
+
2411  print_device_sinks(fmt, opts);
+
2412  }
+
2413  } while (fmt);
+
2414  do {
+
2415  fmt = av_output_video_device_next(fmt);
+
2416  if (fmt) {
+
2417  if (dev && !av_match_name(dev, fmt->name))
+
2418  continue;
+
2419  print_device_sinks(fmt, opts);
+
2420  }
+
2421  } while (fmt);
+
2422  fail:
+
2423  av_dict_free(&opts);
+
2424  av_free(dev);
+
2425  av_log_set_level(error_level);
+
2426  return ret;
+
2427 }
+
2428 
+
2429 #endif
+
+
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Definition: fftools_cmdutils.c:2148
+
grow_array
void * grow_array(void *array, int elem_size, int *size, int new_size)
Definition: fftools_cmdutils.c:2234
+
show_muxdemuxers
show_muxdemuxers
Definition: fftools_cmdutils.c:109
+
uninit_parse_context
void uninit_parse_context(OptionParseContext *octx)
Definition: fftools_cmdutils.c:744
+
OptionGroupList::nb_groups
int nb_groups
Definition: fftools_cmdutils.h:322
+
print_codecs
static void print_codecs(int encoder)
Definition: fftools_cmdutils.c:1652
+
show_decoders
int show_decoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1691
+
OptionDef::flags
int flags
Definition: fftools_cmdutils.h:192
+
show_help_default_ffmpeg
void show_help_default_ffmpeg(const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3296
+
Option::val
const char * val
Definition: fftools_cmdutils.h:282
+
show_help_codec
static void show_help_codec(const char *name, int encoder)
Definition: fftools_cmdutils.c:1862
+
ex_buf__
__thread jmp_buf ex_buf__
Definition: ffmpegkit_exception.cpp:23
+
OPT_EXIT
#define OPT_EXIT
Definition: fftools_cmdutils.h:203
+
filter_codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Definition: fftools_cmdutils.c:2156
+
get_media_type_char
static char get_media_type_char(enum AVMediaType type)
Definition: fftools_cmdutils.c:1529
+
compare_codec_desc
static int compare_codec_desc(const void *a, const void *b)
Definition: fftools_cmdutils.c:1553
+
program_name
__thread char * program_name
Definition: fftools_cmdutils.c:97
+
codec_opts
__thread AVDictionary * codec_opts
Definition: fftools_cmdutils.c:102
+
show_help_default_ffprobe
void show_help_default_ffprobe(const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3422
+
Option
Definition: fftools_cmdutils.h:279
+
OPT_OFFSET
#define OPT_OFFSET
Definition: fftools_cmdutils.h:206
+
PRINT_LIB_INFO
#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)
Definition: fftools_cmdutils.c:1151
+
OPT_INPUT
#define OPT_INPUT
Definition: fftools_cmdutils.h:210
+
finish_group
static void finish_group(OptionParseContext *octx, int group_idx, const char *arg)
Definition: fftools_cmdutils.c:682
+
print_codecs_for_id
static void print_codecs_for_id(enum AVCodecID id, int encoder)
Definition: fftools_cmdutils.c:1583
+
OptionDef::name
const char * name
Definition: fftools_cmdutils.h:191
+
show_pix_fmts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1791
+
OPT_TIME
#define OPT_TIME
Definition: fftools_cmdutils.h:208
+
sws_dict
__thread AVDictionary * sws_dict
Definition: fftools_cmdutils.c:100
+
longjmp_value
__thread volatile int longjmp_value
Definition: fftools_cmdutils.c:107
+
exit_program
void exit_program(int ret)
Definition: fftools_cmdutils.c:160
+
SHOW_MUXERS
@ SHOW_MUXERS
Definition: fftools_cmdutils.c:112
+
parse_options
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
Definition: fftools_cmdutils.c:409
+
show_encoders
int show_encoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1697
+
SHOW_DEMUXERS
@ SHOW_DEMUXERS
Definition: fftools_cmdutils.c:111
+
OPT_DOUBLE
#define OPT_DOUBLE
Definition: fftools_cmdutils.h:209
+
show_demuxers
int show_demuxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1411
+
swr_opts
__thread AVDictionary * swr_opts
Definition: fftools_cmdutils.c:101
+
GET_SAMPLE_FMT_NAME
#define GET_SAMPLE_FMT_NAME(sample_fmt)
Definition: fftools_cmdutils.h:621
+
show_muxers
int show_muxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1406
+
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Definition: fftools_cmdutils.c:204
+
OptionGroup::codec_opts
AVDictionary * codec_opts
Definition: fftools_cmdutils.h:307
+
OPT_OUTPUT
#define OPT_OUTPUT
Definition: fftools_cmdutils.h:211
+
print_all_libs_info
static void print_all_libs_info(int flags, int level)
Definition: fftools_cmdutils.c:1180
+
OptionDef::argname
const char * argname
Definition: fftools_cmdutils.h:218
+
init_report
static int init_report(const char *env)
Definition: fftools_cmdutils.c:1024
+
decode
static int decode(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *pkt)
Definition: fftools_ffmpeg.c:2461
+
OptionGroupList
Definition: fftools_cmdutils.h:318
+
prepare_app_arguments
static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
Definition: fftools_cmdutils.c:315
+
warned_cfg
__thread int warned_cfg
Definition: fftools_cmdutils.c:1144
+
show_help
int show_help(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:2042
+
parse_number_or_die
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
Definition: fftools_cmdutils.c:171
+
OptionGroup::swr_opts
AVDictionary * swr_opts
Definition: fftools_cmdutils.h:311
+
GET_PIX_FMT_NAME
#define GET_PIX_FMT_NAME(pix_fmt)
Definition: fftools_cmdutils.h:615
+
report_file
FILE * report_file
Definition: fftools_cmdutils.c:104
+
OPT_INT
#define OPT_INT
Definition: fftools_cmdutils.h:199
+
OptionGroup::sws_dict
AVDictionary * sws_dict
Definition: fftools_cmdutils.h:310
+
opt_default
int opt_default(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:575
+
show_filters
int show_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1730
+
dump_argument
static void dump_argument(const char *a)
Definition: fftools_cmdutils.c:503
+
show_version
int show_version(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1242
+
OptionDef::off
size_t off
Definition: fftools_cmdutils.h:215
+
get_preset_file
FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
Definition: fftools_cmdutils.c:2098
+
init_parse_context
static void init_parse_context(OptionParseContext *octx, const OptionGroupDef *groups, int nb_groups)
Definition: fftools_cmdutils.c:724
+
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:536
+
HAS_ARG
#define HAS_ARG
Definition: fftools_cmdutils.h:193
+
OptionGroup::opts
Option * opts
Definition: fftools_cmdutils.h:304
+
ffmpegkit_exception.h
+
show_help_muxer
static void show_help_muxer(const char *name)
Definition: fftools_cmdutils.c:1934
+
OPT_FLOAT
#define OPT_FLOAT
Definition: fftools_cmdutils.h:200
+
get_codecs_sorted
static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs)
Definition: fftools_cmdutils.c:1562
+
OPT_STRING
#define OPT_STRING
Definition: fftools_cmdutils.h:196
+
parse_time_or_die
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
Definition: fftools_cmdutils.c:192
+
OptionParseContext::nb_groups
int nb_groups
Definition: fftools_cmdutils.h:329
+
show_colors
int show_colors(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1777
+
OptionGroupDef::sep
const char * sep
Definition: fftools_cmdutils.h:292
+
show_bsfs
int show_bsfs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1703
+
opt_find
static const AVOption * opt_find(void *obj, const char *name, const char *unit, int opt_flags, int search_flags)
Definition: fftools_cmdutils.c:565
+
OptionGroupList::groups
OptionGroup * groups
Definition: fftools_cmdutils.h:321
+
split_commandline
int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
Definition: fftools_cmdutils.c:770
+
locate_option
int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)
Definition: fftools_cmdutils.c:477
+
show_help_demuxer
static void show_help_demuxer(const char *name)
Definition: fftools_cmdutils.c:1898
+
show_help_bsf
static void show_help_bsf(const char *name)
Definition: fftools_cmdutils.c:2023
+
expand_filename_template
static void expand_filename_template(AVBPrint *bp, const char *template, struct tm *tm)
Definition: fftools_cmdutils.c:996
+
program_birth_year
__thread int program_birth_year
Definition: fftools_cmdutils.c:98
+
report_callback
void(* report_callback)(int, float, float, int64_t, int, double, double)
Definition: fftools_ffmpeg.c:194
+
uninit_opts
void uninit_opts(void)
Definition: fftools_cmdutils.c:115
+
filter
ost filter
Definition: fftools_ffmpeg_filter.c:186
+
GROW_ARRAY
#define GROW_ARRAY(array, nb_elems)
Definition: fftools_cmdutils.h:612
+
OptionGroup::arg
const char * arg
Definition: fftools_cmdutils.h:302
+
format_opts
__thread AVDictionary * format_opts
Definition: fftools_cmdutils.c:102
+
opt_loglevel
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:919
+
show_sample_fmts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1853
+
OptionDef::u
union OptionDef::@1 u
+
register_exit
void register_exit(void(*cb)(int ret))
Definition: fftools_cmdutils.c:155
+
show_help_children
void show_help_children(const AVClass *avClass, int flags)
Definition: fftools_cmdutils.c:233
+
read_yesno
int read_yesno(void)
Definition: fftools_cmdutils.c:2087
+
print_error
void print_error(const char *filename, int err)
Definition: fftools_cmdutils.c:1134
+
SpecifierOpt
Definition: fftools_cmdutils.h:178
+
resample_opts
__thread AVDictionary * resample_opts
Definition: fftools_cmdutils.c:102
+
OptionParseContext
Definition: fftools_cmdutils.h:325
+
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:1231
+
opt_cpucount
int opt_cpucount(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:893
+
OptionGroupDef
Definition: fftools_cmdutils.h:285
+
report_file_level
int report_file_level
Definition: fftools_cmdutils.c:105
+
OptionParseContext::groups
OptionGroupList * groups
Definition: fftools_cmdutils.h:328
+
d
d
Definition: fftools_ffmpeg_filter.c:165
+
find_option
static const OptionDef * find_option(const OptionDef *po, const char *name)
Definition: fftools_cmdutils.c:246
+
GET_CODEC_NAME
#define GET_CODEC_NAME(id)
Definition: fftools_cmdutils.h:618
+
opt_cpuflags
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:881
+
print_codec
static void print_codec(const AVCodec *c)
Definition: fftools_cmdutils.c:1434
+
print_buildconf
static void print_buildconf(int flags, int level)
Definition: fftools_cmdutils.c:1205
+
Option::opt
const OptionDef * opt
Definition: fftools_cmdutils.h:280
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
format
fg outputs[0] format
Definition: fftools_ffmpeg_filter.c:184
+
next_codec_for_id
static const AVCodec * next_codec_for_id(enum AVCodecID id, void **iter, int encoder)
Definition: fftools_cmdutils.c:1541
+
show_protocols
int show_protocols(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1715
+
OptionGroup::nb_opts
int nb_opts
Definition: fftools_cmdutils.h:305
+
match_group_separator
static int match_group_separator(const OptionGroupDef *groups, int nb_groups, const char *opt)
Definition: fftools_cmdutils.c:662
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
show_codecs
int show_codecs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1596
+
add_opt
static void add_opt(OptionParseContext *octx, const OptionDef *opt, const char *key, const char *val)
Definition: fftools_cmdutils.c:712
+
PRINT_CODEC_SUPPORTED
#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name)
Definition: fftools_cmdutils.c:1421
+
hide_banner
__thread int hide_banner
Definition: fftools_cmdutils.c:106
+
OPT_SPEC
#define OPT_SPEC
Definition: fftools_cmdutils.h:207
+
OPT_PERFILE
#define OPT_PERFILE
Definition: fftools_cmdutils.h:205
+
show_help_protocol
static void show_help_protocol(const char *name)
Definition: fftools_cmdutils.c:1916
+
OptionGroup::group_def
const OptionGroupDef * group_def
Definition: fftools_cmdutils.h:301
+
OptionDef
Definition: fftools_cmdutils.h:190
+
opt_report
int opt_report(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1102
+
OptionGroupDef::name
const char * name
Definition: fftools_cmdutils.h:287
+
OptionDef::func_arg
int(* func_arg)(void *, const char *, const char *)
Definition: fftools_cmdutils.h:214
+
show_formats_devices
static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers)
Definition: fftools_cmdutils.c:1338
+
SHOW_DEFAULT
@ SHOW_DEFAULT
Definition: fftools_cmdutils.c:110
+
OptionGroupList::group_def
const OptionGroupDef * group_def
Definition: fftools_cmdutils.h:319
+
OptionGroup::resample_opts
AVDictionary * resample_opts
Definition: fftools_cmdutils.h:309
+
show_devices
int show_devices(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1416
+
Option::key
const char * key
Definition: fftools_cmdutils.h:281
+
log_callback_report
void log_callback_report(void *ptr, int level, const char *fmt, va_list vl)
Definition: fftools_cmdutils.c:124
+
OptionGroup::format_opts
AVDictionary * format_opts
Definition: fftools_cmdutils.h:308
+
OPT_BOOL
#define OPT_BOOL
Definition: fftools_cmdutils.h:194
+
fftools_cmdutils.h
+
media_type_string
#define media_type_string
Definition: fftools_cmdutils.h:610
+
get_rotation
double get_rotation(AVStream *st)
Definition: fftools_cmdutils.c:2253
+
OptionDef::dst_ptr
void * dst_ptr
Definition: fftools_cmdutils.h:213
+
FLAGS
#define FLAGS
Definition: fftools_cmdutils.c:574
+
OptionParseContext::cur_group
OptionGroup cur_group
Definition: fftools_cmdutils.h:332
+
setup_find_stream_info_opts
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Definition: fftools_cmdutils.c:2214
+
OptionParseContext::global_opts
OptionGroup global_opts
Definition: fftools_cmdutils.h:326
+
OptionGroupDef::flags
int flags
Definition: fftools_cmdutils.h:297
+
show_layouts
int show_layouts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1824
+
check_options
static void check_options(const OptionDef *po)
Definition: fftools_cmdutils.c:527
+
show_license
int show_license(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1257
+
parse_option
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Definition: fftools_cmdutils.c:376
+
show_buildconf
int show_buildconf(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1250
+
show_formats
int show_formats(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1401
+
OptionDef::help
const char * help
Definition: fftools_cmdutils.h:217
+
write_option
static int write_option(void *optctx, const OptionDef *po, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:321
+
OptionGroup
Definition: fftools_cmdutils.h:300
+
GET_CH_LAYOUT_DESC
#define GET_CH_LAYOUT_DESC(ch_layout)
Definition: fftools_cmdutils.h:632
+
SHOW_CONFIG
#define SHOW_CONFIG
Definition: fftools_cmdutils.c:1148
+
GET_ARG
#define GET_ARG(arg)
+
SHOW_VERSION
#define SHOW_VERSION
Definition: fftools_cmdutils.c:1147
+
opt_max_alloc
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1107
+
ffmpegkit_log_callback_function
void ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs)
Definition: FFmpegKitConfig.cpp:466
+
is_device
static int is_device(const AVClass *avclass)
Definition: fftools_cmdutils.c:1331
+
opt_timelimit
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1121
+
INDENT
#define INDENT
Definition: fftools_cmdutils.c:1146
+
init_dynload
void init_dynload(void)
Definition: fftools_cmdutils.c:144
+
sws_isSupportedInput
#define sws_isSupportedInput(x)
+
GET_SAMPLE_RATE_NAME
#define GET_SAMPLE_RATE_NAME(rate)
Definition: fftools_cmdutils.h:624
+
SHOW_COPYRIGHT
#define SHOW_COPYRIGHT
Definition: fftools_cmdutils.c:1149
+
sws_isSupportedOutput
#define sws_isSupportedOutput(x)
+
print_program_info
static void print_program_info(int flags, int level)
Definition: fftools_cmdutils.c:1191
+
program_exit
static __thread void(* program_exit)(int ret)
Definition: fftools_cmdutils.c:153
+
parse_optgroup
int parse_optgroup(void *optctx, OptionGroup *g)
Definition: fftools_cmdutils.c:444
+
OPT_INT64
#define OPT_INT64
Definition: fftools_cmdutils.h:202
+ + + + diff --git a/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp.html b/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp.html new file mode 100644 index 0000000..4914a01 --- /dev/null +++ b/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp.html @@ -0,0 +1,1858 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKitConfig.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Macros | +Enumerations | +Functions | +Variables
+
+
FFmpegKitConfig.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  CallbackData
 
+ + + +

+Macros

#define SESSION_MAP_SIZE   1000
 
+ + + +

+Enumerations

enum  CallbackType { LogType, +StatisticsType + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static std::atomic< long > pipeIndexGenerator (1)
 
int ffmpeg_execute (int argc, char **argv)
 
int ffprobe_execute (int argc, char **argv)
 
void ffmpegkit_log_callback_function (void *ptr, int level, const char *format, va_list vargs)
 
void * ffmpegKitInitialize ()
 
static bool fs_exists (const std::string &s, const bool isFile, const bool isDirectory)
 
static bool fs_create_dir (const std::string &s)
 
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Session > session)
 
static void callbackWait (int milliSeconds)
 
static void callbackNotify ()
 
static const char * avutil_log_get_level_str (int level)
 
static void avutil_log_format_line (void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix)
 
static void avutil_log_sanitize (char *line)
 
static void logCallbackDataAdd (int level, AVBPrint *data)
 
static void statisticsCallbackDataAdd (int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)
 
static CallbackDatacallbackDataRemove ()
 
static void registerSessionId (long sessionId)
 
static void removeSession (long sessionId)
 
void cancelSession (long sessionId)
 
int cancelRequested (long sessionId)
 
static void resetMessagesInTransmit (long sessionId)
 
void ffmpegkit_statistics_callback_function (int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)
 
static void process_log (long sessionId, int levelValueInt, AVBPrint *logMessage)
 
void process_statistics (long sessionId, int videoFrameNumber, float videoFps, float videoQuality, long size, int time, double bitrate, double speed)
 
void * callbackThreadFunction (void *pointer)
 
static int executeFFmpeg (const long sessionId, const std::shared_ptr< std::list< std::string >> arguments)
 
int executeFFprobe (const long sessionId, const std::shared_ptr< std::list< std::string >> arguments)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

static int sessionHistorySize
 
static std::map< long, std::shared_ptr< ffmpegkit::Session > > sessionHistoryMap
 
static std::list< std::shared_ptr< ffmpegkit::Session > > sessionHistoryList
 
static std::recursive_mutex sessionMutex
 
static std::atomic< short > sessionMap [SESSION_MAP_SIZE]
 
static std::atomic< intsessionInTransitMessageCountMap [SESSION_MAP_SIZE]
 
static ffmpegkit::LogCallback logCallback
 
static ffmpegkit::StatisticsCallback statisticsCallback
 
static ffmpegkit::FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback
 
static ffmpegkit::FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback
 
static ffmpegkit::MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback
 
static ffmpegkit::LogRedirectionStrategy globalLogRedirectionStrategy
 
static int redirectionEnabled
 
static std::recursive_mutex callbackDataMutex
 
static std::mutex callbackMutex
 
static std::condition_variable callbackMonitor
 
static std::list< CallbackData * > callbackDataList
 
volatile int handleSIGQUIT = 1
 
volatile int handleSIGINT = 1
 
volatile int handleSIGTERM = 1
 
volatile int handleSIGXCPU = 1
 
volatile int handleSIGPIPE = 1
 
__thread volatile long globalSessionId = 0
 
int configuredLogLevel = ffmpegkit::LevelAVLogInfo
 
static std::once_flag ffmpegKitInitializerFlag
 
static pthread_t callbackThread
 
const void * _ffmpegKitConfigInitializer {ffmpegKitInitialize()}
 
+

Macro Definition Documentation

+ +

◆ SESSION_MAP_SIZE

+ +
+
+ + + + +
#define SESSION_MAP_SIZE   1000
+
+

Session control variables

+ +

Definition at line 58 of file FFmpegKitConfig.cpp.

+ +
+
+

Enumeration Type Documentation

+ +

◆ CallbackType

+ +
+
+ + + + +
enum CallbackType
+
+ + + +
Enumerator
LogType 
StatisticsType 
+ +

Definition at line 119 of file FFmpegKitConfig.cpp.

+ +
+
+

Function Documentation

+ +

◆ addSessionToSessionHistory()

+ +
+
+ + + + + + + + +
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Sessionsession)
+
+ +

Definition at line 149 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ avutil_log_format_line()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void avutil_log_format_line (void * avcl,
int level,
const char * fmt,
va_list vl,
AVBPrint part[4],
intprint_prefix 
)
+
+static
+
+ +

Definition at line 308 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ avutil_log_get_level_str()

+ +
+
+ + + + + +
+ + + + + + + + +
static const char* avutil_log_get_level_str (int level)
+
+static
+
+ +

Definition at line 283 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ avutil_log_sanitize()

+ +
+
+ + + + + +
+ + + + + + + + +
static void avutil_log_sanitize (char * line)
+
+static
+
+ +

Definition at line 340 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackDataRemove()

+ +
+
+ + + + + +
+ + + + + + + +
static CallbackData* callbackDataRemove ()
+
+static
+
+

Removes head of callback data list.

+ +

Definition at line 386 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackNotify()

+ +
+
+ + + + + +
+ + + + + + + +
static void callbackNotify ()
+
+static
+
+

Notifies threads waiting on callback semaphore.

+ +

Definition at line 279 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackThreadFunction()

+ +
+
+ + + + + + + + +
void* callbackThreadFunction (void * pointer)
+
+

Forwards asynchronous messages to Callbacks.

+ +

Definition at line 634 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackWait()

+ +
+
+ + + + + +
+ + + + + + + + +
static void callbackWait (int milliSeconds)
+
+static
+
+

Waits on the callback semaphore for the given time.

+
Parameters
+ + +
milliSecondswait time in milliseconds
+
+
+ +

Definition at line 271 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ cancelRequested()

+ +
+
+ + + + + + + + +
int cancelRequested (long sessionId)
+
+

Checks whether a cancel request for the given session id exists in the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+
Returns
1 if exists, false otherwise
+ +

Definition at line 437 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ cancelSession()

+ +
+
+ + + + + + + + +
void cancelSession (long sessionId)
+
+

Adds a cancel session request to the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+ +

Definition at line 427 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ executeFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int executeFFmpeg (const long sessionId,
const std::shared_ptr< std::list< std::string >> arguments 
)
+
+static
+
+ +

Definition at line 682 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ executeFFprobe()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int executeFFprobe (const long sessionId,
const std::shared_ptr< std::list< std::string >> arguments 
)
+
+ +

Definition at line 722 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpeg_execute()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ffmpeg_execute (int argc,
char ** argv 
)
+
+

Forward declaration for function defined in fftools_ffmpeg.c

+ +

Definition at line 5210 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ ffmpegkit_log_callback_function()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ffmpegkit_log_callback_function (void * ptr,
int level,
const char * format,
va_list vargs 
)
+
+

Callback function for FFmpeg/FFprobe logs.

+
Parameters
+ + + + + +
ptrpointer to AVClass struct
levellog level
formatformat string
vargsarguments
+
+
+ +

Definition at line 466 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpegkit_statistics_callback_function()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void ffmpegkit_statistics_callback_function (int frameNumber,
float fps,
float quality,
int64_t size,
int time,
double bitrate,
double speed 
)
+
+

Callback function for FFmpeg statistics.

+
Parameters
+ + + + + + + + +
frameNumberlast processed frame number
fpsframes processed per second
qualityquality of the output stream (video only)
sizesize in bytes
timeprocessed output duration
bitrateoutput bit rate in kbits/s
speedprocessing speed = processed duration / operation duration
+
+
+ +

Definition at line 515 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpegKitInitialize()

+ +
+
+ + + + + + + +
void* ffmpegKitInitialize ()
+
+ +

Definition at line 762 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffprobe_execute()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ffprobe_execute (int argc,
char ** argv 
)
+
+

Forward declaration for function defined in fftools_ffprobe.c

+ +

Definition at line 3717 of file fftools_ffprobe.c.

+ +
+
+ +

◆ fs_create_dir()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool fs_create_dir (const std::string & s)
+
+static
+
+ +

Definition at line 139 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ fs_exists()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static bool fs_exists (const std::string & s,
const bool isFile,
const bool isDirectory 
)
+
+static
+
+ +

Definition at line 124 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ logCallbackDataAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void logCallbackDataAdd (int level,
AVBPrint * data 
)
+
+static
+
+

Adds log data to the end of callback data list.

+
Parameters
+ + + +
levellog level
datalog data
+
+
+ +

Definition at line 354 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ pipeIndexGenerator()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::atomic<long> pipeIndexGenerator ()
+
+static
+
+

Generates ids for named ffmpeg kit pipes.

+ +
+
+ +

◆ process_log()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void process_log (long sessionId,
int levelValueInt,
AVBPrint * logMessage 
)
+
+static
+
+ +

Definition at line 519 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ process_statistics()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void process_statistics (long sessionId,
int videoFrameNumber,
float videoFps,
float videoQuality,
long size,
int time,
double bitrate,
double speed 
)
+
+ +

Definition at line 603 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ registerSessionId()

+ +
+
+ + + + + +
+ + + + + + + + +
static void registerSessionId (long sessionId)
+
+static
+
+

Registers a session id to the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+ +

Definition at line 405 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ removeSession()

+ +
+
+ + + + + +
+ + + + + + + + +
static void removeSession (long sessionId)
+
+static
+
+

Removes a session id from the session map.

+
Parameters
+ + +
sessionIdsession id
+
+
+ +

Definition at line 414 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ resetMessagesInTransmit()

+ +
+
+ + + + + +
+ + + + + + + + +
static void resetMessagesInTransmit (long sessionId)
+
+static
+
+

Resets the number of messages in transmit for this session.

+
Parameters
+ + +
sessionIdsession id
+
+
+ +

Definition at line 454 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ statisticsCallbackDataAdd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void statisticsCallbackDataAdd (int frameNumber,
float fps,
float quality,
int64_t size,
int time,
double bitrate,
double speed 
)
+
+static
+
+

Adds statistics data to the end of callback data list.

+ +

Definition at line 370 of file FFmpegKitConfig.cpp.

+ +
+
+

Variable Documentation

+ +

◆ _ffmpegKitConfigInitializer

+ +
+
+ + + + +
const void* _ffmpegKitConfigInitializer {ffmpegKitInitialize()}
+
+ +

Definition at line 117 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackDataList

+ +
+
+ + + + + +
+ + + + +
std::list<CallbackData*> callbackDataList
+
+static
+
+ +

Definition at line 80 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackDataMutex

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex callbackDataMutex
+
+static
+
+ +

Definition at line 77 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackMonitor

+ +
+
+ + + + + +
+ + + + +
std::condition_variable callbackMonitor
+
+static
+
+ +

Definition at line 79 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackMutex

+ +
+
+ + + + + +
+ + + + +
std::mutex callbackMutex
+
+static
+
+ +

Definition at line 78 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ callbackThread

+ +
+
+ + + + + +
+ + + + +
pthread_t callbackThread
+
+static
+
+ +

Definition at line 113 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ configuredLogLevel

+ +
+
+ + + + +
int configuredLogLevel = ffmpegkit::LevelAVLogInfo
+
+

Holds the default log level

+ +

Definition at line 94 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpegKitInitializerFlag

+ +
+
+ + + + + +
+ + + + +
std::once_flag ffmpegKitInitializerFlag
+
+static
+
+ +

Definition at line 112 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpegSessionCompleteCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback
+
+static
+
+

Holds complete callbacks defined to redirect asynchronous execution results

+ +

Definition at line 69 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffprobeSessionCompleteCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback
+
+static
+
+ +

Definition at line 70 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ globalLogRedirectionStrategy

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::LogRedirectionStrategy globalLogRedirectionStrategy
+
+static
+
+ +

Definition at line 73 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ globalSessionId

+ +
+
+ + + + +
__thread volatile long globalSessionId = 0
+
+

Holds the id of the current execution

+ +

Definition at line 91 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGINT

+ +
+
+ + + + +
volatile int handleSIGINT = 1
+
+ +

Definition at line 85 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGPIPE

+ +
+
+ + + + +
volatile int handleSIGPIPE = 1
+
+ +

Definition at line 88 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGQUIT

+ +
+
+ + + + +
volatile int handleSIGQUIT = 1
+
+

Fields that control the handling of SIGNALs

+ +

Definition at line 84 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGTERM

+ +
+
+ + + + +
volatile int handleSIGTERM = 1
+
+ +

Definition at line 86 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ handleSIGXCPU

+ +
+
+ + + + +
volatile int handleSIGXCPU = 1
+
+ +

Definition at line 87 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ logCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::LogCallback logCallback
+
+static
+
+

Holds callback defined to redirect logs

+ +

Definition at line 63 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ mediaInformationSessionCompleteCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback
+
+static
+
+ +

Definition at line 71 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ redirectionEnabled

+ +
+
+ + + + + +
+ + + + +
int redirectionEnabled
+
+static
+
+

Redirection control variables

+ +

Definition at line 76 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionHistoryList

+ +
+
+ + + + + +
+ + + + +
std::list<std::shared_ptr<ffmpegkit::Session> > sessionHistoryList
+
+static
+
+ +

Definition at line 54 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionHistoryMap

+ +
+
+ + + + + +
+ + + + +
std::map<long, std::shared_ptr<ffmpegkit::Session> > sessionHistoryMap
+
+static
+
+ +

Definition at line 53 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionHistorySize

+ +
+
+ + + + + +
+ + + + +
int sessionHistorySize
+
+static
+
+ +

Definition at line 52 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionInTransitMessageCountMap

+ +
+
+ + + + + +
+ + + + +
std::atomic<int> sessionInTransitMessageCountMap[SESSION_MAP_SIZE]
+
+static
+
+ +

Definition at line 60 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionMap

+ +
+
+ + + + + +
+ + + + +
std::atomic<short> sessionMap[SESSION_MAP_SIZE]
+
+static
+
+ +

Definition at line 59 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionMutex

+ +
+
+ + + + + +
+ + + + +
std::recursive_mutex sessionMutex
+
+static
+
+ +

Definition at line 55 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ statisticsCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::StatisticsCallback statisticsCallback
+
+static
+
+

Holds callback defined to redirect statistics

+ +

Definition at line 66 of file FFmpegKitConfig.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp_source.html b/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp_source.html new file mode 100644 index 0000000..7c2a2f0 --- /dev/null +++ b/docs/linux/html/d8/d45/_f_fmpeg_kit_config_8cpp_source.html @@ -0,0 +1,1590 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKitConfig.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegKitConfig.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include <sys/types.h>
+
21 #include <sys/stat.h>
+
22 #include <pthread.h>
+
23 extern "C" {
+
24  #include "libavutil/ffversion.h"
+
25  #include "libavutil/bprint.h"
+
26  #include "fftools_ffmpeg.h"
+
27 }
+
28 #include "ArchDetect.h"
+
29 #include "FFmpegKit.h"
+
30 #include "FFmpegKitConfig.h"
+
31 #include "FFmpegSession.h"
+
32 #include "FFprobeKit.h"
+
33 #include "FFprobeSession.h"
+
34 #include "Level.h"
+
35 #include "LogRedirectionStrategy.h"
+ +
37 #include "Packages.h"
+
38 #include "SessionState.h"
+
39 #include <atomic>
+
40 #include <mutex>
+
41 #include <future>
+
42 #include <condition_variable>
+
43 #include <iostream>
+
44 #include <fstream>
+
45 
+
49 static std::atomic<long> pipeIndexGenerator(1);
+
50 
+
51 /* Session history variables */
+
52 static int sessionHistorySize;
+
53 static std::map<long, std::shared_ptr<ffmpegkit::Session>> sessionHistoryMap;
+
54 static std::list<std::shared_ptr<ffmpegkit::Session>> sessionHistoryList;
+
55 static std::recursive_mutex sessionMutex;
+
56 
+
58 #define SESSION_MAP_SIZE 1000
+
59 static std::atomic<short> sessionMap[SESSION_MAP_SIZE];
+ +
61 
+ +
64 
+ +
67 
+ + + +
72 
+ +
74 
+
76 static int redirectionEnabled;
+
77 static std::recursive_mutex callbackDataMutex;
+
78 static std::mutex callbackMutex;
+
79 static std::condition_variable callbackMonitor;
+ +
81 static std::list<CallbackData*> callbackDataList;
+
82 
+
84 volatile int handleSIGQUIT = 1;
+
85 volatile int handleSIGINT = 1;
+
86 volatile int handleSIGTERM = 1;
+
87 volatile int handleSIGXCPU = 1;
+
88 volatile int handleSIGPIPE = 1;
+
89 
+
91 __thread volatile long globalSessionId = 0;
+
92 
+ +
95 
+
96 #ifdef __cplusplus
+
97 extern "C" {
+
98 #endif
+
99 
+
101 int ffmpeg_execute(int argc, char **argv);
+
102 
+
104 int ffprobe_execute(int argc, char **argv);
+
105 
+
106 void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs);
+
107 
+
108 #ifdef __cplusplus
+
109 }
+
110 #endif
+
111 
+
112 static std::once_flag ffmpegKitInitializerFlag;
+
113 static pthread_t callbackThread;
+
114 
+
115 void* ffmpegKitInitialize();
+
116 
+ +
118 
+ + + +
122 };
+
123 
+
124 static bool fs_exists(const std::string& s, const bool isFile, const bool isDirectory) {
+
125  struct stat dir_info;
+
126 
+
127  if (stat(s.c_str(), &dir_info) == 0) {
+
128  if (isFile && S_ISREG(dir_info.st_mode)) {
+
129  return true;
+
130  }
+
131  if (isDirectory && S_ISDIR(dir_info.st_mode)) {
+
132  return true;
+
133  }
+
134  }
+
135 
+
136  return false;
+
137 }
+
138 
+
139 static bool fs_create_dir(const std::string& s) {
+
140  if (!fs_exists(s, false, true)) {
+
141  if (mkdir(s.c_str(), S_IRWXU | S_IRWXG | S_IROTH) != 0) {
+
142  std::cout << "Failed to create directory: " << s << ". Operation failed with " << errno << "." << std::endl;
+
143  return false;
+
144  }
+
145  }
+
146  return true;
+
147 }
+
148 
+
149 void addSessionToSessionHistory(const std::shared_ptr<ffmpegkit::Session> session) {
+
150  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
151 
+
152  const long sessionId = session->getSessionId();
+
153 
+
154  lock.lock();
+
155 
+
156  /*
+
157  * ASYNC SESSIONS CALL THIS METHOD TWICE
+
158  * THIS CHECK PREVENTS ADDING THE SAME SESSION TWICE
+
159  */
+
160  if (sessionHistoryMap.count(sessionId) == 0) {
+
161  sessionHistoryMap.insert({sessionId, session});
+
162  sessionHistoryList.push_back(session);
+
163  if (sessionHistoryList.size() > sessionHistorySize) {
+
164  auto first = sessionHistoryList.front();
+
165  if (first != nullptr) {
+
166  auto expiredSessionId = first->getSessionId();
+
167  sessionHistoryList.pop_front();
+
168  sessionHistoryMap.erase(expiredSessionId);
+
169  }
+
170  }
+
171  }
+
172 
+
173  lock.unlock();
+
174 }
+
175 
+ +
180  public:
+
181  CallbackData(const long sessionId, const int logLevel, const AVBPrint* data) :
+
182  _type{LogType}, _sessionId{sessionId}, _logLevel{logLevel} {
+
183  av_bprint_init(&_logData, 0, AV_BPRINT_SIZE_UNLIMITED);
+
184  av_bprintf(&_logData, "%s", data->str);
+
185  }
+
186 
+
187  CallbackData(const long sessionId,
+
188  const int videoFrameNumber,
+
189  const float videoFps,
+
190  const float videoQuality,
+
191  const int64_t size,
+
192  const int time,
+
193  const double bitrate,
+
194  const double speed) :
+ +
196  _sessionId{sessionId},
+
197  _statisticsFrameNumber{videoFrameNumber},
+
198  _statisticsFps{videoFps},
+
199  _statisticsQuality{videoQuality},
+
200  _statisticsSize{size},
+
201  _statisticsTime{time},
+
202  _statisticsBitrate{bitrate},
+
203  _statisticsSpeed{speed} {
+
204  }
+
205 
+ +
207  return _type;
+
208  }
+
209 
+
210  long getSessionId() {
+
211  return _sessionId;
+
212  }
+
213 
+
214  int getLogLevel() {
+
215  return _logLevel;
+
216  }
+
217 
+
218  AVBPrint* getLogData() {
+
219  return &_logData;
+
220  }
+
221 
+ +
223  return _statisticsFrameNumber;
+
224  }
+
225 
+ +
227  return _statisticsFps;
+
228  }
+
229 
+ +
231  return _statisticsQuality;
+
232  }
+
233 
+
234  int64_t getStatisticsSize() {
+
235  return _statisticsSize;
+
236  }
+
237 
+ +
239  return _statisticsTime;
+
240  }
+
241 
+ +
243  return _statisticsBitrate;
+
244  }
+
245 
+ +
247  return _statisticsSpeed;
+
248  }
+
249 
+
250  private:
+ +
252  long _sessionId; // session id
+
253 
+
254  int _logLevel; // log level
+
255  AVBPrint _logData; // log data
+
256 
+
257  int _statisticsFrameNumber; // statistics frame number
+
258  float _statisticsFps; // statistics fps
+
259  float _statisticsQuality; // statistics quality
+
260  int64_t _statisticsSize; // statistics size
+
261  int _statisticsTime; // statistics time
+
262  double _statisticsBitrate; // statistics bitrate
+
263  double _statisticsSpeed; // statistics speed
+
264 };
+
265 
+
271 static void callbackWait(int milliSeconds) {
+
272  std::unique_lock<std::mutex> callbackLock{callbackMutex};
+
273  callbackMonitor.wait_for(callbackLock, std::chrono::milliseconds(milliSeconds));
+
274 }
+
275 
+
279 static void callbackNotify() {
+
280  callbackMonitor.notify_one();
+
281 }
+
282 
+
283 static const char *avutil_log_get_level_str(int level) {
+
284  switch (level) {
+
285  case AV_LOG_STDERR:
+
286  return "stderr";
+
287  case AV_LOG_QUIET:
+
288  return "quiet";
+
289  case AV_LOG_DEBUG:
+
290  return "debug";
+
291  case AV_LOG_VERBOSE:
+
292  return "verbose";
+
293  case AV_LOG_INFO:
+
294  return "info";
+
295  case AV_LOG_WARNING:
+
296  return "warning";
+
297  case AV_LOG_ERROR:
+
298  return "error";
+
299  case AV_LOG_FATAL:
+
300  return "fatal";
+
301  case AV_LOG_PANIC:
+
302  return "panic";
+
303  default:
+
304  return "";
+
305  }
+
306 }
+
307 
+
308 static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix) {
+
309  int flags = av_log_get_flags();
+
310  AVClass* avc = avcl ? *(AVClass **) avcl : NULL;
+
311  av_bprint_init(part+0, 0, 1);
+
312  av_bprint_init(part+1, 0, 1);
+
313  av_bprint_init(part+2, 0, 1);
+
314  av_bprint_init(part+3, 0, 65536);
+
315 
+
316  if (*print_prefix && avc) {
+
317  if (avc->parent_log_context_offset) {
+
318  AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) +
+
319  avc->parent_log_context_offset);
+
320  if (parent && *parent) {
+
321  av_bprintf(part+0, "[%s @ %p] ",
+
322  (*parent)->item_name(parent), parent);
+
323  }
+
324  }
+
325  av_bprintf(part+1, "[%s @ %p] ",
+
326  avc->item_name(avcl), avcl);
+
327  }
+
328 
+
329  if (*print_prefix && (level > AV_LOG_QUIET) && (flags & AV_LOG_PRINT_LEVEL))
+
330  av_bprintf(part+2, "[%s] ", avutil_log_get_level_str(level));
+
331 
+
332  av_vbprintf(part+3, fmt, vl);
+
333 
+
334  if(*part[0].str || *part[1].str || *part[2].str || *part[3].str) {
+
335  char lastc = part[3].len && part[3].len <= part[3].size ? part[3].str[part[3].len - 1] : 0;
+
336  *print_prefix = lastc == '\n' || lastc == '\r';
+
337  }
+
338 }
+
339 
+
340 static void avutil_log_sanitize(char *line) {
+
341  while(*line){
+
342  if(*line < 0x08 || (*line > 0x0D && *line < 0x20))
+
343  *line='?';
+
344  line++;
+
345  }
+
346 }
+
347 
+
354 static void logCallbackDataAdd(int level, AVBPrint *data) {
+
355  std::unique_lock<std::recursive_mutex> lock(callbackDataMutex, std::defer_lock);
+
356  CallbackData* callbackData = new CallbackData(globalSessionId, level, data);
+
357 
+
358  lock.lock();
+
359  callbackDataList.push_back(callbackData);
+
360  lock.unlock();
+
361 
+
362  callbackNotify();
+
363 
+ +
365 }
+
366 
+
370 static void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
+
371  std::unique_lock<std::recursive_mutex> lock(callbackDataMutex, std::defer_lock);
+
372  CallbackData* callbackData = new CallbackData(globalSessionId, frameNumber, fps, quality, size, time, bitrate, speed);
+
373 
+
374  lock.lock();
+
375  callbackDataList.push_back(callbackData);
+
376  lock.unlock();
+
377 
+
378  callbackNotify();
+
379 
+ +
381 }
+
382 
+ +
387  std::unique_lock<std::recursive_mutex> lock(callbackDataMutex, std::defer_lock);
+
388  CallbackData* newData = nullptr;
+
389 
+
390  lock.lock();
+
391  if (callbackDataList.size() > 0) {
+
392  newData = callbackDataList.front();
+
393  callbackDataList.pop_front();
+
394  }
+
395  lock.unlock();
+
396 
+
397  return newData;
+
398 }
+
399 
+
405 static void registerSessionId(long sessionId) {
+
406  std::atomic_store(&sessionMap[sessionId % SESSION_MAP_SIZE], 1);
+
407 }
+
408 
+
414 static void removeSession(long sessionId) {
+
415  std::atomic_store(&sessionMap[sessionId % SESSION_MAP_SIZE], 0);
+
416 }
+
417 
+
418 #ifdef __cplusplus
+
419 extern "C" {
+
420 #endif
+
421 
+
427 void cancelSession(long sessionId) {
+
428  std::atomic_store(&sessionMap[sessionId % SESSION_MAP_SIZE], 2);
+
429 }
+
430 
+
437 int cancelRequested(long sessionId) {
+
438  if (std::atomic_load(&sessionMap[sessionId % SESSION_MAP_SIZE]) == 2) {
+
439  return 1;
+
440  } else {
+
441  return 0;
+
442  }
+
443 }
+
444 
+
445 #ifdef __cplusplus
+
446 }
+
447 #endif
+
448 
+
454 static void resetMessagesInTransmit(long sessionId) {
+
455  std::atomic_store(&sessionInTransitMessageCountMap[sessionId % SESSION_MAP_SIZE], 0);
+
456 }
+
457 
+
466 void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs) {
+
467  AVBPrint fullLine;
+
468  AVBPrint part[4];
+
469  int print_prefix = 1;
+
470 
+
471  // DO NOT PROCESS UNWANTED LOGS
+
472  if (level >= 0) {
+
473  level &= 0xff;
+
474  }
+
475  int activeLogLevel = av_log_get_level();
+
476 
+
477  // LevelAVLogStdErr logs are always redirected
+
478  if ((activeLogLevel == ffmpegkit::LevelAVLogQuiet && level != ffmpegkit::LevelAVLogStdErr) || (level > activeLogLevel)) {
+
479  return;
+
480  }
+
481 
+
482  av_bprint_init(&fullLine, 0, AV_BPRINT_SIZE_UNLIMITED);
+
483 
+
484  avutil_log_format_line(ptr, level, format, vargs, part, &print_prefix);
+
485  avutil_log_sanitize(part[0].str);
+
486  avutil_log_sanitize(part[1].str);
+
487  avutil_log_sanitize(part[2].str);
+
488  avutil_log_sanitize(part[3].str);
+
489 
+
490  // COMBINE ALL 4 LOG PARTS
+
491  av_bprintf(&fullLine, "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);
+
492 
+
493  if (fullLine.len > 0) {
+
494  logCallbackDataAdd(level, &fullLine);
+
495  }
+
496 
+
497  av_bprint_finalize(part, NULL);
+
498  av_bprint_finalize(part+1, NULL);
+
499  av_bprint_finalize(part+2, NULL);
+
500  av_bprint_finalize(part+3, NULL);
+
501  av_bprint_finalize(&fullLine, NULL);
+
502 }
+
503 
+
515 void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
+
516  statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed);
+
517 }
+
518 
+
519 static void process_log(long sessionId, int levelValueInt, AVBPrint* logMessage) {
+
520  int activeLogLevel = av_log_get_level();
+
521  ffmpegkit::Level levelValue = static_cast<ffmpegkit::Level>(levelValueInt);
+
522  std::shared_ptr<ffmpegkit::Log> log = std::make_shared<ffmpegkit::Log>(sessionId, levelValue, logMessage->str);
+
523  bool globalCallbackDefined = false;
+
524  bool sessionCallbackDefined = false;
+ +
526 
+
527  // LevelAVLogStdErr logs are always redirected
+
528  if ((activeLogLevel == ffmpegkit::LevelAVLogQuiet && levelValue != ffmpegkit::LevelAVLogStdErr) || (levelValue > activeLogLevel)) {
+
529  // LOG NEITHER PRINTED NOR FORWARDED
+
530  return;
+
531  }
+
532 
+
533  auto session = ffmpegkit::FFmpegKitConfig::getSession(sessionId);
+
534  if (session != nullptr) {
+
535  activeLogRedirectionStrategy = session->getLogRedirectionStrategy();
+
536  session->addLog(log);
+
537 
+
538  ffmpegkit::LogCallback sessionLogCallback = session->getLogCallback();
+
539  if (sessionLogCallback != nullptr) {
+
540  sessionCallbackDefined = true;
+
541 
+
542  try {
+
543  // NOTIFY SESSION CALLBACK DEFINED
+
544  sessionLogCallback(log);
+
545  } catch(const std::exception& exception) {
+
546  std::cout << "Exception thrown inside session log callback. " << exception.what() << std::endl;
+
547  }
+
548  }
+
549  }
+
550 
+
551  ffmpegkit::LogCallback globalLogCallback = logCallback;
+
552  if (globalLogCallback != nullptr) {
+
553  globalCallbackDefined = true;
+
554 
+
555  try {
+
556  // NOTIFY GLOBAL CALLBACK DEFINED
+
557  globalLogCallback(log);
+
558  } catch(const std::exception& exception) {
+
559  std::cout << "Exception thrown inside global log callback. " << exception.what() << std::endl;
+
560  }
+
561  }
+
562 
+
563  // EXECUTE THE LOG STRATEGY
+
564  switch (activeLogRedirectionStrategy) {
+ +
566  return;
+
567  }
+ +
569  if (globalCallbackDefined) {
+
570  return;
+
571  }
+
572  }
+
573  break;
+ +
575  if (sessionCallbackDefined) {
+
576  return;
+
577  }
+
578  }
+
579  break;
+ +
581  if (globalCallbackDefined || sessionCallbackDefined) {
+
582  return;
+
583  }
+
584  }
+
585  break;
+ +
587  }
+
588  break;
+
589  }
+
590 
+
591  // PRINT LOGS
+
592  switch (levelValue) {
+ +
594  // PRINT NO OUTPUT
+
595  break;
+
596  default:
+
597  // WRITE TO STDOUT
+
598  std::cout << ffmpegkit::FFmpegKitConfig::logLevelToString(levelValue) << ": " << logMessage->str;
+
599  break;
+
600  }
+
601 }
+
602 
+
603 void process_statistics(long sessionId, int videoFrameNumber, float videoFps, float videoQuality, long size, int time, double bitrate, double speed) {
+
604  std::shared_ptr<ffmpegkit::Statistics> statistics = std::make_shared<ffmpegkit::Statistics>(sessionId, videoFrameNumber, videoFps, videoQuality, size, time, bitrate, speed);
+
605 
+
606  auto session = ffmpegkit::FFmpegKitConfig::getSession(sessionId);
+
607  if (session != nullptr && session->isFFmpeg()) {
+
608  std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegSession = std::static_pointer_cast<ffmpegkit::FFmpegSession>(session);
+
609  ffmpegSession->addStatistics(statistics);
+
610 
+
611  ffmpegkit::StatisticsCallback sessionStatisticsCallback = ffmpegSession->getStatisticsCallback();
+
612  if (sessionStatisticsCallback != nullptr) {
+
613  try {
+
614  sessionStatisticsCallback(statistics);
+
615  } catch(const std::exception& exception) {
+
616  std::cout << "Exception thrown inside session statistics callback. " << exception.what() << std::endl;
+
617  }
+
618  }
+
619  }
+
620 
+
621  ffmpegkit::StatisticsCallback globalStatisticsCallback = statisticsCallback;
+
622  if (globalStatisticsCallback != nullptr) {
+
623  try {
+
624  globalStatisticsCallback(statistics);
+
625  } catch(const std::exception& exception) {
+
626  std::cout << "Exception thrown inside global statistics callback. " << exception.what() << std::endl;
+
627  }
+
628  }
+
629 }
+
630 
+
634 void *callbackThreadFunction(void *pointer) {
+
635  int activeLogLevel = av_log_get_level();
+
636  if ((activeLogLevel != ffmpegkit::LevelAVLogQuiet) && (ffmpegkit::LevelAVLogDebug <= activeLogLevel)) {
+
637  std::cout << "Async callback block started." << std::endl;
+
638  }
+
639 
+
640  while(redirectionEnabled) {
+
641  try {
+
642  CallbackData* callbackData = callbackDataRemove();
+
643 
+
644  if (callbackData != nullptr) {
+
645 
+
646  if (callbackData->getType() == LogType) {
+
647  process_log(callbackData->getSessionId(), callbackData->getLogLevel(), callbackData->getLogData());
+
648  av_bprint_finalize(callbackData->getLogData(), NULL);
+
649  } else {
+
650  process_statistics(callbackData->getSessionId(),
+
651  callbackData->getStatisticsFrameNumber(),
+
652  callbackData->getStatisticsFps(),
+
653  callbackData->getStatisticsQuality(),
+
654  callbackData->getStatisticsSize(),
+
655  callbackData->getStatisticsTime(),
+
656  callbackData->getStatisticsBitrate(),
+
657  callbackData->getStatisticsSpeed());
+
658  }
+
659 
+
660  std::atomic_fetch_sub(&sessionInTransitMessageCountMap[callbackData->getSessionId() % SESSION_MAP_SIZE], 1);
+
661 
+
662  } else {
+
663  callbackWait(100);
+
664  }
+
665 
+
666  } catch(const std::exception& exception) {
+
667  activeLogLevel = av_log_get_level();
+
668  if ((activeLogLevel != ffmpegkit::LevelAVLogQuiet) && (ffmpegkit::LevelAVLogWarning <= activeLogLevel)) {
+
669  std::cout << "Async callback block received error: " << exception.what() << std::endl;
+
670  }
+
671  }
+
672  }
+
673 
+
674  activeLogLevel = av_log_get_level();
+
675  if ((activeLogLevel != ffmpegkit::LevelAVLogQuiet) && (ffmpegkit::LevelAVLogDebug <= activeLogLevel)) {
+
676  std::cout << "Async callback block stopped." << std::endl;
+
677  }
+
678 
+
679  return NULL;
+
680 }
+
681 
+
682 static int executeFFmpeg(const long sessionId, const std::shared_ptr<std::list<std::string>> arguments) {
+
683  const char* LIB_NAME = "ffmpeg";
+
684 
+
685  // SETS DEFAULT LOG LEVEL BEFORE STARTING A NEW RUN
+
686  av_log_set_level(configuredLogLevel);
+
687 
+
688  char **commandCharPArray = (char **)av_malloc(sizeof(char*) * (arguments->size() + 1));
+
689 
+
690  /* PRESERVE USAGE FORMAT
+
691  *
+
692  * ffmpeg <arguments>
+
693  */
+
694  commandCharPArray[0] = (char *)av_malloc(sizeof(char) * (strlen(LIB_NAME) + 1));
+
695  strcpy(commandCharPArray[0], LIB_NAME);
+
696 
+
697  // PREPARE ARRAY ELEMENTS
+
698  int i = 0;
+
699  for (auto it=arguments->begin(); it != arguments->end(); it++, i++) {
+
700  commandCharPArray[i + 1] = (char*)it->c_str();
+
701  }
+
702 
+
703  // REGISTER THE ID BEFORE STARTING THE SESSION
+
704  globalSessionId = sessionId;
+
705  registerSessionId(sessionId);
+
706 
+
707  resetMessagesInTransmit(sessionId);
+
708 
+
709  // RUN
+
710  int returnCode = ffmpeg_execute((arguments->size() + 1), commandCharPArray);
+
711 
+
712  // ALWAYS REMOVE THE ID FROM THE MAP
+
713  removeSession(sessionId);
+
714 
+
715  // CLEANUP
+
716  av_free(commandCharPArray[0]);
+
717  av_free(commandCharPArray);
+
718 
+
719  return returnCode;
+
720 }
+
721 
+
722 int executeFFprobe(const long sessionId, const std::shared_ptr<std::list<std::string>> arguments) {
+
723  const char* LIB_NAME = "ffprobe";
+
724 
+
725  // SETS DEFAULT LOG LEVEL BEFORE STARTING A NEW RUN
+
726  av_log_set_level(configuredLogLevel);
+
727 
+
728  char **commandCharPArray = (char **)av_malloc(sizeof(char*) * (arguments->size() + 1));
+
729 
+
730  /* PRESERVE USAGE FORMAT
+
731  *
+
732  * ffprobe <arguments>
+
733  */
+
734  commandCharPArray[0] = (char *)av_malloc(sizeof(char) * (strlen(LIB_NAME) + 1));
+
735  strcpy(commandCharPArray[0], LIB_NAME);
+
736 
+
737  // PREPARE ARRAY ELEMENTS
+
738  int i = 0;
+
739  for (auto it=arguments->begin(); it != arguments->end(); it++, i++) {
+
740  commandCharPArray[i + 1] = (char*)it->c_str();
+
741  }
+
742 
+
743  // REGISTER THE ID BEFORE STARTING THE SESSION
+
744  globalSessionId = sessionId;
+
745  registerSessionId(sessionId);
+
746 
+
747  resetMessagesInTransmit(sessionId);
+
748 
+
749  // RUN
+
750  int returnCode = ffprobe_execute((arguments->size() + 1), commandCharPArray);
+
751 
+
752  // ALWAYS REMOVE THE ID FROM THE MAP
+
753  removeSession(sessionId);
+
754 
+
755  // CLEANUP
+
756  av_free(commandCharPArray[0]);
+
757  av_free(commandCharPArray);
+
758 
+
759  return returnCode;
+
760 }
+
761 
+ +
763  std::call_once(ffmpegKitInitializerFlag, [](){
+
764  std::cout << "Loading ffmpeg-kit." << std::endl;
+
765 
+
766  sessionHistorySize = 10;
+
767 
+
768  for(int i = 0; i<SESSION_MAP_SIZE; i++) {
+
769  std::atomic_init(&sessionMap[i], 0);
+
770  std::atomic_init(&sessionInTransitMessageCountMap[i], 0);
+
771  }
+
772 
+
773  logCallback = nullptr;
+
774  statisticsCallback = nullptr;
+ + + +
778 
+ +
780 
+
781  redirectionEnabled = 0;
+
782 
+ +
784 
+
785  std::cout << "Loaded ffmpeg-kit-" << ffmpegkit::Packages::getPackageName() << "-" << ffmpegkit::ArchDetect::getArch() << "-" << ffmpegkit::FFmpegKitConfig::getVersion() << "-" << ffmpegkit::FFmpegKitConfig::getBuildDate() << "." << std::endl;
+
786  });
+
787 
+
788  return NULL;
+
789 }
+
790 
+ +
792  std::unique_lock<std::recursive_mutex> lock(callbackDataMutex, std::defer_lock);
+
793  lock.lock();
+
794 
+
795  if (redirectionEnabled != 0) {
+
796  lock.unlock();
+
797  return;
+
798  }
+
799  redirectionEnabled = 1;
+
800 
+
801  lock.unlock();
+
802 
+
803  int rc = pthread_create(&callbackThread, NULL, callbackThreadFunction, NULL);
+
804  if (rc != 0) {
+
805  std::cout << "Failed to create async callback block: %d" << rc << std::endl;
+
806  lock.unlock();
+
807  return;
+
808  }
+
809 
+
810  av_log_set_callback(ffmpegkit_log_callback_function);
+ +
812 }
+
813 
+ +
815  std::unique_lock<std::recursive_mutex> lock(callbackDataMutex, std::defer_lock);
+
816 
+
817  lock.lock();
+
818 
+
819  if (redirectionEnabled != 1) {
+
820  lock.unlock();
+
821  return;
+
822  }
+
823  redirectionEnabled = 0;
+
824 
+
825  lock.unlock();
+
826 
+
827  callbackNotify();
+
828 
+
829  pthread_detach(callbackThread);
+
830 
+
831  av_log_set_callback(av_log_default_callback);
+
832  set_report_callback(NULL);
+
833 }
+
834 
+ +
836  return ffmpegkit::FFmpegKitConfig::setEnvironmentVariable("FONTCONFIG_PATH", path);
+
837 }
+
838 
+
839 void ffmpegkit::FFmpegKitConfig::setFontDirectory(const std::string& fontDirectoryPath, const std::map<std::string,std::string>& fontNameMapping) {
+
840  ffmpegkit::FFmpegKitConfig::setFontDirectoryList(std::list<std::string>{fontDirectoryPath}, fontNameMapping);
+
841 }
+
842 
+
843 void ffmpegkit::FFmpegKitConfig::setFontDirectoryList(const std::list<std::string>& fontDirectoryList, const std::map<std::string,std::string>& fontNameMapping) {
+
844  int validFontNameMappingCount = 0;
+
845 
+
846  const char *parentDirectory = std::getenv("HOME");
+
847  if (parentDirectory == NULL) {
+
848  parentDirectory = std::getenv("TMPDIR");
+
849  if (parentDirectory == NULL) {
+
850  parentDirectory = ".";
+
851  }
+
852  }
+
853 
+
854  auto tempConfigurationDirectory = std::string(parentDirectory) + "/.ffmpegkit/fontconfig";
+
855  auto fontConfigurationFile = std::string(tempConfigurationDirectory) + "/fonts.conf";
+
856 
+
857  if (!fs_exists(tempConfigurationDirectory, false, true)) {
+
858  if (mkdir(tempConfigurationDirectory.c_str(), S_IRWXU | S_IRWXG | S_IROTH) != 0) {
+
859  std::cout << "Failed to set font directory. Error received while creating temp conf directory: " << errno << std::endl;
+
860  return;
+
861  }
+
862  std::cout << "Created temporary font conf directory: TRUE." << std::endl;
+
863  }
+
864 
+
865  if (fs_exists(fontConfigurationFile, true, false)) {
+
866  bool fontConfigurationDeleted = std::remove(fontConfigurationFile.c_str());
+
867  std::cout << "Deleted old temporary font configuration: " << (fontConfigurationDeleted?"TRUE":"FALSE") << "." << std::endl;
+
868  }
+
869 
+
870  /* PROCESS MAPPINGS FIRST */
+
871  std::string fontNameMappingBlock = "";
+
872  for (auto const& pair : fontNameMapping) {
+
873  if ((pair.first.size() > 0) && (pair.second.size() > 0)) {
+
874 
+
875  fontNameMappingBlock += " <match target=\"pattern\">\n";
+
876  fontNameMappingBlock += " <test qual=\"any\" name=\"family\">\n";
+
877  fontNameMappingBlock += " <string>";
+
878  fontNameMappingBlock += pair.first;
+
879  fontNameMappingBlock += "</string>\n";
+
880  fontNameMappingBlock += " </test>\n";
+
881  fontNameMappingBlock += " <edit name=\"family\" mode=\"assign\" binding=\"same\">\n";
+
882  fontNameMappingBlock += " <string>";
+
883  fontNameMappingBlock += pair.second;
+
884  fontNameMappingBlock += "</string>\n";
+
885  fontNameMappingBlock += " </edit>\n";
+
886  fontNameMappingBlock += " </match>\n";
+
887 
+
888  validFontNameMappingCount++;
+
889  }
+
890  }
+
891 
+
892  std::string fontConfiguration;
+
893  fontConfiguration += "<?xml version=\"1.0\"?>\n";
+
894  fontConfiguration += "<!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">\n";
+
895  fontConfiguration += "<fontconfig>\n";
+
896  fontConfiguration += " <dir prefix=\"cwd\">.</dir>\n";
+
897 
+
898  for (const auto& fontDirectoryPath : fontDirectoryList) {
+
899  fontConfiguration += " <dir>";
+
900  fontConfiguration += fontDirectoryPath;
+
901  fontConfiguration += "</dir>\n";
+
902  }
+
903  fontConfiguration += fontNameMappingBlock;
+
904  fontConfiguration += "</fontconfig>\n";
+
905 
+
906  std::ofstream fontConfigurationStream(fontConfigurationFile, std::ios::out | std::ios::trunc);
+
907  if (fontConfigurationStream) {
+
908  fontConfigurationStream << fontConfiguration;
+
909  }
+
910  if (fontConfigurationStream.bad()) {
+
911  std::cout << "Failed to set font directory. Error received while saving font configuration: " << fontConfigurationStream.rdbuf() << "." << std::endl;
+
912  }
+
913  fontConfigurationStream.close();
+
914 
+
915  std::cout << "Saved new temporary font configuration with " << validFontNameMappingCount << " font name mappings." << std::endl;
+
916 
+
917  ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath(tempConfigurationDirectory.c_str());
+
918 
+
919  for (const auto& fontDirectoryPath : fontDirectoryList) {
+
920  std::cout << "Font directory " << fontDirectoryPath << " registered successfully." << std::endl;
+
921  }
+
922 }
+
923 
+ +
925  const char *parentDirectory = std::getenv("HOME");
+
926  if (parentDirectory == NULL) {
+
927  parentDirectory = std::getenv("TMPDIR");
+
928  if (parentDirectory == NULL) {
+
929  parentDirectory = ".";
+
930  }
+
931  }
+
932 
+
933  // PIPES ARE CREATED UNDER THE PIPES DIRECTORY
+
934  std::string ffmpegKitDir = std::string(parentDirectory) + "/.ffmpegkit";
+
935  std::string pipesDir = ffmpegKitDir + "/pipes";
+
936 
+
937  if (!fs_create_dir(ffmpegKitDir) || !fs_create_dir(pipesDir)) {
+
938  return nullptr;
+
939  }
+
940 
+
941  std::shared_ptr<std::string> newFFmpegPipePath = std::make_shared<std::string>(pipesDir + "/" + FFmpegKitNamedPipePrefix + std::to_string(pipeIndexGenerator++));
+
942 
+
943  // FIRST CLOSE OLD PIPES WITH THE SAME NAME
+
944  ffmpegkit::FFmpegKitConfig::closeFFmpegPipe(newFFmpegPipePath->c_str());
+
945 
+
946  int rc = mkfifo(newFFmpegPipePath->c_str(), S_IRWXU | S_IRWXG | S_IROTH);
+
947  if (rc == 0) {
+
948  return newFFmpegPipePath;
+
949  } else {
+
950  std::cout << "Failed to register new FFmpeg pipe " << newFFmpegPipePath << ". Operation failed with rc=" << rc << "." << std::endl;
+
951  return nullptr;
+
952  }
+
953 }
+
954 
+
955 void ffmpegkit::FFmpegKitConfig::closeFFmpegPipe(const std::string& ffmpegPipePath) {
+
956  std::remove(ffmpegPipePath.c_str());
+
957 }
+
958 
+ +
960  return FFMPEG_VERSION;
+
961 }
+
962 
+ + +
965  return std::string("").append(FFmpegKitVersion).append("-lts");
+
966  } else {
+
967  return FFmpegKitVersion;
+
968  }
+
969 }
+
970 
+ +
972  #if defined(FFMPEG_KIT_LTS)
+
973  return true;
+
974  #else
+
975  return false;
+
976  #endif
+
977 }
+
978 
+ +
980  char buildDate[10];
+
981  sprintf(buildDate, "%d", FFMPEG_KIT_BUILD_DATE);
+
982  return std::string(buildDate);
+
983 }
+
984 
+
985 int ffmpegkit::FFmpegKitConfig::setEnvironmentVariable(const std::string& variableName, const std::string& variableValue) {
+
986  return setenv(variableName.c_str(), variableValue.c_str(), true);
+
987 }
+
988 
+ +
990  if (signal == ffmpegkit::SignalQuit) {
+
991  handleSIGQUIT = 0;
+
992  } else if (signal == ffmpegkit::SignalInt) {
+
993  handleSIGINT = 0;
+
994  } else if (signal == ffmpegkit::SignalTerm) {
+
995  handleSIGTERM = 0;
+
996  } else if (signal == ffmpegkit::SignalXcpu) {
+
997  handleSIGXCPU = 0;
+
998  } else if (signal == ffmpegkit::SignalPipe) {
+
999  handleSIGPIPE = 0;
+
1000  }
+
1001 }
+
1002 
+
1003 void ffmpegkit::FFmpegKitConfig::ffmpegExecute(const std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegSession) {
+
1004  ffmpegSession->startRunning();
+
1005 
+
1006  try {
+
1007  int returnCode = executeFFmpeg(ffmpegSession->getSessionId(), ffmpegSession->getArguments());
+
1008  ffmpegSession->complete(std::make_shared<ffmpegkit::ReturnCode>(returnCode));
+
1009  } catch(const std::exception& exception) {
+
1010  ffmpegSession->fail(exception.what());
+
1011  std::cout << "FFmpeg execute failed: " << ffmpegkit::FFmpegKitConfig::argumentsToString(ffmpegSession->getArguments()) << "." << exception.what() << std::endl;
+
1012  }
+
1013 }
+
1014 
+
1015 void ffmpegkit::FFmpegKitConfig::ffprobeExecute(const std::shared_ptr<ffmpegkit::FFprobeSession> ffprobeSession) {
+
1016  ffprobeSession->startRunning();
+
1017 
+
1018  try {
+
1019  int returnCode = executeFFprobe(ffprobeSession->getSessionId(), ffprobeSession->getArguments());
+
1020  ffprobeSession->complete(std::make_shared<ffmpegkit::ReturnCode>(returnCode));
+
1021  } catch(const std::exception& exception) {
+
1022  ffprobeSession->fail(exception.what());
+
1023  std::cout << "FFprobe execute failed: " << ffmpegkit::FFmpegKitConfig::argumentsToString(ffprobeSession->getArguments()) << "." << exception.what() << std::endl;
+
1024  }
+
1025 }
+
1026 
+
1027 void ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(const std::shared_ptr<ffmpegkit::MediaInformationSession> mediaInformationSession, const int waitTimeout) {
+
1028  mediaInformationSession->startRunning();
+
1029 
+
1030  try {
+
1031  int returnCodeValue = executeFFprobe(mediaInformationSession->getSessionId(), mediaInformationSession->getArguments());
+
1032  auto returnCode = std::make_shared<ffmpegkit::ReturnCode>(returnCodeValue);
+
1033  mediaInformationSession->complete(returnCode);
+
1034  if (returnCode->isValueSuccess()) {
+
1035  auto mediaInformation = ffmpegkit::MediaInformationJsonParser::from(mediaInformationSession->getAllLogsAsStringWithTimeout(waitTimeout).c_str());
+
1036  mediaInformationSession->setMediaInformation(mediaInformation);
+
1037  }
+
1038  } catch(const std::exception& exception) {
+
1039  mediaInformationSession->fail(exception.what());
+
1040  std::cout << "Get media information execute failed: " << ffmpegkit::FFmpegKitConfig::argumentsToString(mediaInformationSession->getArguments()) << "." << exception.what() << std::endl;
+
1041  }
+
1042 }
+
1043 
+
1044 void ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(const std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegSession) {
+
1045  auto thread = std::thread([ffmpegSession]() {
+ +
1047 
+
1048  ffmpegkit::FFmpegSessionCompleteCallback completeCallback = ffmpegSession->getCompleteCallback();
+
1049  if (completeCallback != nullptr) {
+
1050  try {
+
1051  // NOTIFY SESSION CALLBACK DEFINED
+
1052  completeCallback(ffmpegSession);
+
1053  } catch(const std::exception& exception) {
+
1054  std::cout << "Exception thrown inside session complete callback. " << exception.what() << std::endl;
+
1055  }
+
1056  }
+
1057 
+ +
1059  if (globalFFmpegSessionCompleteCallback != nullptr) {
+
1060  try {
+
1061  // NOTIFY SESSION CALLBACK DEFINED
+
1062  globalFFmpegSessionCompleteCallback(ffmpegSession);
+
1063  } catch(const std::exception& exception) {
+
1064  std::cout << "Exception thrown inside global complete callback. " << exception.what() << std::endl;
+
1065  }
+
1066  }
+
1067  });
+
1068 
+
1069  thread.detach();
+
1070 }
+
1071 
+
1072 void ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(const std::shared_ptr<ffmpegkit::FFprobeSession> ffprobeSession) {
+
1073  auto thread = std::thread([ffprobeSession]() {
+ +
1075 
+
1076  ffmpegkit::FFprobeSessionCompleteCallback completeCallback = ffprobeSession->getCompleteCallback();
+
1077  if (completeCallback != nullptr) {
+
1078  try {
+
1079  // NOTIFY SESSION CALLBACK DEFINED
+
1080  completeCallback(ffprobeSession);
+
1081  } catch(const std::exception& exception) {
+
1082  std::cout << "Exception thrown inside session complete callback. " << exception.what() << std::endl;
+
1083  }
+
1084  }
+
1085 
+ +
1087  if (globalFFprobeSessionCompleteCallback != nullptr) {
+
1088  try {
+
1089  // NOTIFY SESSION CALLBACK DEFINED
+
1090  globalFFprobeSessionCompleteCallback(ffprobeSession);
+
1091  } catch(const std::exception& exception) {
+
1092  std::cout << "Exception thrown inside global complete callback. " << exception.what() << std::endl;
+
1093  }
+
1094  }
+
1095  });
+
1096 
+
1097  thread.detach();
+
1098 }
+
1099 
+
1100 void ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute(const std::shared_ptr<ffmpegkit::MediaInformationSession> mediaInformationSession, const int waitTimeout) {
+
1101  auto thread = std::thread([mediaInformationSession,waitTimeout]() {
+
1102  ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(mediaInformationSession, waitTimeout);
+
1103 
+
1104  ffmpegkit::MediaInformationSessionCompleteCallback completeCallback = mediaInformationSession->getCompleteCallback();
+
1105  if (completeCallback != nullptr) {
+
1106  try {
+
1107  // NOTIFY SESSION CALLBACK DEFINED
+
1108  completeCallback(mediaInformationSession);
+
1109  } catch(const std::exception& exception) {
+
1110  std::cout << "Exception thrown inside session complete callback. " << exception.what() << std::endl;
+
1111  }
+
1112  }
+
1113 
+ +
1115  if (globalMediaInformationSessionCompleteCallback != nullptr) {
+
1116  try {
+
1117  // NOTIFY SESSION CALLBACK DEFINED
+
1118  globalMediaInformationSessionCompleteCallback(mediaInformationSession);
+
1119  } catch(const std::exception& exception) {
+
1120  std::cout << "Exception thrown inside global complete callback. " << exception.what() << std::endl;
+
1121  }
+
1122  }
+
1123  });
+
1124 
+
1125  thread.detach();
+
1126 }
+
1127 
+ +
1129  logCallback = callback;
+
1130 }
+
1131 
+ +
1133  statisticsCallback = callback;
+
1134 }
+
1135 
+ +
1137  ffmpegSessionCompleteCallback = completeCallback;
+
1138 }
+
1139 
+ + +
1142 }
+
1143 
+ +
1145  ffprobeSessionCompleteCallback = completeCallback;
+
1146 }
+
1147 
+ + +
1150 }
+
1151 
+ +
1153  mediaInformationSessionCompleteCallback = completeCallback;
+
1154 }
+
1155 
+ + +
1158 }
+
1159 
+ +
1161  return static_cast<ffmpegkit::Level>(configuredLogLevel);
+
1162 }
+
1163 
+ +
1165  configuredLogLevel = level;
+
1166 }
+
1167 
+ +
1169  switch (level) {
+
1170  case ffmpegkit::LevelAVLogStdErr: return "STDERR";
+
1171  case ffmpegkit::LevelAVLogTrace: return "TRACE";
+
1172  case ffmpegkit::LevelAVLogDebug: return "DEBUG";
+
1173  case ffmpegkit::LevelAVLogVerbose: return "VERBOSE";
+
1174  case ffmpegkit::LevelAVLogInfo: return "INFO";
+
1175  case ffmpegkit::LevelAVLogWarning: return "WARNING";
+
1176  case ffmpegkit::LevelAVLogError: return "ERROR";
+
1177  case ffmpegkit::LevelAVLogFatal: return "FATAL";
+
1178  case ffmpegkit::LevelAVLogPanic: return "PANIC";
+
1179  case ffmpegkit::LevelAVLogQuiet: return "QUIET";
+
1180  default: return "";
+
1181  }
+
1182 }
+
1183 
+ +
1185  return sessionHistorySize;
+
1186 }
+
1187 
+
1188 void ffmpegkit::FFmpegKitConfig::setSessionHistorySize(const int newSessionHistorySize) {
+
1189  if (newSessionHistorySize >= SESSION_MAP_SIZE) {
+
1190 
+
1191  /*
+
1192  * THERE IS A HARD LIMIT ON THE NATIVE SIDE. HISTORY SIZE MUST BE SMALLER THAN SESSION_MAP_SIZE
+
1193  */
+
1194  throw std::runtime_error("Session history size must not exceed the hard limit!");
+
1195  } else if (newSessionHistorySize > 0) {
+
1196  sessionHistorySize = newSessionHistorySize;
+
1197  }
+
1198 }
+
1199 
+
1200 std::shared_ptr<ffmpegkit::Session> ffmpegkit::FFmpegKitConfig::getSession(const long sessionId) {
+
1201  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1202  lock.lock();
+
1203 
+
1204  auto session = sessionHistoryMap.find(sessionId);
+
1205  if (session != sessionHistoryMap.end()) {
+
1206  return session->second;
+
1207  } else {
+
1208  return nullptr;
+
1209  }
+
1210 }
+
1211 
+
1212 std::shared_ptr<ffmpegkit::Session> ffmpegkit::FFmpegKitConfig::getLastSession() {
+
1213  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1214  lock.lock();
+
1215 
+
1216  return sessionHistoryList.front();
+
1217 }
+
1218 
+
1219 std::shared_ptr<ffmpegkit::Session> ffmpegkit::FFmpegKitConfig::getLastCompletedSession() {
+
1220  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1221 
+
1222  lock.lock();
+
1223 
+
1224  for(auto rit=sessionHistoryList.rbegin(); rit != sessionHistoryList.rend(); ++rit) {
+
1225  auto session = *rit;
+
1226  if (session->getState() == SessionStateCompleted) {
+
1227  return session;
+
1228  }
+
1229  }
+
1230 
+
1231  return nullptr;
+
1232 }
+
1233 
+
1234 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Session>>> ffmpegkit::FFmpegKitConfig::getSessions() {
+
1235  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1236  lock.lock();
+
1237 
+
1238  auto sessionHistoryListCopy = std::make_shared<std::list<std::shared_ptr<ffmpegkit::Session>>>(sessionHistoryList);
+
1239 
+
1240  lock.unlock();
+
1241 
+
1242  return sessionHistoryListCopy;
+
1243 }
+
1244 
+ +
1246  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1247  lock.lock();
+
1248 
+
1249  sessionHistoryList.clear();
+
1250  sessionHistoryMap.clear();
+
1251 
+
1252  lock.unlock();
+
1253 }
+
1254 
+
1255 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFmpegSession>>> ffmpegkit::FFmpegKitConfig::getFFmpegSessions() {
+
1256  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1257  const auto ffmpegSessions = std::make_shared<std::list<std::shared_ptr<ffmpegkit::FFmpegSession>>>();
+
1258 
+
1259  lock.lock();
+
1260 
+
1261  for(auto it=sessionHistoryList.begin(); it != sessionHistoryList.end(); ++it) {
+
1262  auto session = *it;
+
1263  if (session->isFFmpeg()) {
+
1264  ffmpegSessions->push_back(std::static_pointer_cast<ffmpegkit::FFmpegSession>(session));
+
1265  }
+
1266  }
+
1267 
+
1268  lock.unlock();
+
1269 
+
1270  return ffmpegSessions;
+
1271 }
+
1272 
+
1273 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFprobeSession>>> ffmpegkit::FFmpegKitConfig::getFFprobeSessions() {
+
1274  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1275  const auto ffprobeSessions = std::make_shared<std::list<std::shared_ptr<ffmpegkit::FFprobeSession>>>();
+
1276 
+
1277  lock.lock();
+
1278 
+
1279  for(auto it=sessionHistoryList.begin(); it != sessionHistoryList.end(); ++it) {
+
1280  auto session = *it;
+
1281  if (session->isFFprobe()) {
+
1282  ffprobeSessions->push_back(std::static_pointer_cast<ffmpegkit::FFprobeSession>(session));
+
1283  }
+
1284  }
+
1285 
+
1286  lock.unlock();
+
1287 
+
1288  return ffprobeSessions;
+
1289 }
+
1290 
+
1291 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::MediaInformationSession>>> ffmpegkit::FFmpegKitConfig::getMediaInformationSessions() {
+
1292  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1293  const auto mediaInformationSessions = std::make_shared<std::list<std::shared_ptr<ffmpegkit::MediaInformationSession>>>();
+
1294 
+
1295  lock.lock();
+
1296 
+
1297  for(auto it=sessionHistoryList.begin(); it != sessionHistoryList.end(); ++it) {
+
1298  auto session = *it;
+
1299  if (session->isMediaInformation()) {
+
1300  mediaInformationSessions->push_back(std::static_pointer_cast<ffmpegkit::MediaInformationSession>(session));
+
1301  }
+
1302  }
+
1303 
+
1304  lock.unlock();
+
1305 
+
1306  return mediaInformationSessions;
+
1307 }
+
1308 
+
1309 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Session>>> ffmpegkit::FFmpegKitConfig::getSessionsByState(const SessionState state) {
+
1310  std::unique_lock<std::recursive_mutex> lock(sessionMutex, std::defer_lock);
+
1311  auto sessions = std::make_shared<std::list<std::shared_ptr<ffmpegkit::Session>>>();
+
1312 
+
1313  lock.lock();
+
1314 
+
1315  for(auto it=sessionHistoryList.begin(); it != sessionHistoryList.end(); ++it) {
+
1316  auto session = *it;
+
1317  if (session->getState() == state) {
+
1318  sessions->push_back(session);
+
1319  }
+
1320  }
+
1321 
+
1322  lock.unlock();
+
1323 
+
1324  return sessions;
+
1325 }
+
1326 
+ + +
1329 }
+
1330 
+ +
1332  globalLogRedirectionStrategy = logRedirectionStrategy;
+
1333 }
+
1334 
+ +
1336  return std::atomic_load(&sessionInTransitMessageCountMap[sessionId % SESSION_MAP_SIZE]);
+
1337 }
+
1338 
+ +
1340  switch (state) {
+
1341  case SessionStateCreated: return "CREATED";
+
1342  case SessionStateRunning: return "RUNNING";
+
1343  case SessionStateFailed: return "FAILED";
+
1344  case SessionStateCompleted: return "COMPLETED";
+
1345  default: return "";
+
1346  }
+
1347 }
+
1348 
+
1349 std::shared_ptr<std::list<std::string>> ffmpegkit::FFmpegKitConfig::parseArguments(const std::string& command) {
+
1350  auto argumentList = std::make_shared<std::list<std::string>>();
+
1351  std::string currentArgument;
+
1352 
+
1353  bool singleQuoteStarted = false;
+
1354  bool doubleQuoteStarted = false;
+
1355 
+
1356  for (int i = 0; i < command.size(); i++) {
+
1357  char previousChar;
+
1358  if (i > 0) {
+
1359  previousChar = command[i - 1];
+
1360  } else {
+
1361  previousChar = 0;
+
1362  }
+
1363  char currentChar = command[i];
+
1364 
+
1365  if (currentChar == ' ') {
+
1366  if (singleQuoteStarted || doubleQuoteStarted) {
+
1367  currentArgument += currentChar;
+
1368  } else if (currentArgument.size() > 0) {
+
1369  argumentList->push_back(currentArgument);
+
1370  currentArgument = "";
+
1371  }
+
1372  } else if (currentChar == '\'' && (previousChar == 0 || previousChar != '\\')) {
+
1373  if (singleQuoteStarted) {
+
1374  singleQuoteStarted = false;
+
1375  } else if (doubleQuoteStarted) {
+
1376  currentArgument += currentChar;
+
1377  } else {
+
1378  singleQuoteStarted = true;
+
1379  }
+
1380  } else if (currentChar == '\"' && (previousChar == 0 || previousChar != '\\')) {
+
1381  if (doubleQuoteStarted) {
+
1382  doubleQuoteStarted = false;
+
1383  } else if (singleQuoteStarted) {
+
1384  currentArgument += currentChar;
+
1385  } else {
+
1386  doubleQuoteStarted = true;
+
1387  }
+
1388  } else {
+
1389  currentArgument += currentChar;
+
1390  }
+
1391  }
+
1392 
+
1393  if (currentArgument.size() > 0) {
+
1394  argumentList->push_back(currentArgument);
+
1395  }
+
1396 
+
1397  return argumentList;
+
1398 }
+
1399 
+
1400 std::string ffmpegkit::FFmpegKitConfig::argumentsToString(std::shared_ptr<std::list<std::string>> arguments) {
+
1401  if (arguments == nullptr) {
+
1402  return "null";
+
1403  }
+
1404 
+
1405  std::string string;
+
1406  for(auto it=arguments->begin(); it != arguments->end(); ++it) {
+
1407  auto argument = *it;
+
1408  if (it != arguments->begin()) {
+
1409  string += " ";
+
1410  }
+
1411  string += argument;
+
1412  }
+
1413 
+
1414  return string;
+
1415 }
+
+
configuredLogLevel
int configuredLogLevel
Definition: FFmpegKitConfig.cpp:94
+
ffmpegkit::LevelAVLogTrace
@ LevelAVLogTrace
Definition: Level.h:83
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit::FFmpegKitConfig::getFFmpegSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > getFFmpegSessions()
Definition: FFmpegKitConfig.cpp:1255
+
ffmpegkit::Packages::getPackageName
static std::string getPackageName()
Definition: Packages.cpp:25
+
callbackMonitor
static std::condition_variable callbackMonitor
Definition: FFmpegKitConfig.cpp:79
+
ffmpegkit::LogRedirectionStrategyNeverPrintLogs
@ LogRedirectionStrategyNeverPrintLogs
Definition: LogRedirectionStrategy.h:30
+
CallbackData::_logLevel
int _logLevel
Definition: FFmpegKitConfig.cpp:254
+
process_log
static void process_log(long sessionId, int levelValueInt, AVBPrint *logMessage)
Definition: FFmpegKitConfig.cpp:519
+
ffprobeSessionCompleteCallback
static ffmpegkit::FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:70
+
ffmpegkit::FFmpegKitConfig::getFFmpegSessionCompleteCallback
static FFmpegSessionCompleteCallback getFFmpegSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1140
+
ffmpegkit::SessionStateFailed
@ SessionStateFailed
Definition: SessionState.h:28
+
globalLogRedirectionStrategy
static ffmpegkit::LogRedirectionStrategy globalLogRedirectionStrategy
Definition: FFmpegKitConfig.cpp:73
+
callbackMutex
static std::mutex callbackMutex
Definition: FFmpegKitConfig.cpp:78
+
ffmpegkit::LevelAVLogPanic
@ LevelAVLogPanic
Definition: Level.h:44
+
handleSIGXCPU
volatile int handleSIGXCPU
Definition: FFmpegKitConfig.cpp:87
+
globalSessionId
__thread volatile long globalSessionId
Definition: FFmpegKitConfig.cpp:91
+
CallbackData::_statisticsBitrate
double _statisticsBitrate
Definition: FFmpegKitConfig.cpp:262
+
fftools_ffmpeg.h
+
ffmpegkit_statistics_callback_function
void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)
Definition: FFmpegKitConfig.cpp:515
+
ffmpegkit::FFmpegKitConfig::getSessionHistorySize
static int getSessionHistorySize()
Definition: FFmpegKitConfig.cpp:1184
+
sessionHistoryList
static std::list< std::shared_ptr< ffmpegkit::Session > > sessionHistoryList
Definition: FFmpegKitConfig.cpp:54
+
CallbackData::getStatisticsFps
float getStatisticsFps()
Definition: FFmpegKitConfig.cpp:226
+
ffmpegkit::FFmpegKitConfig::getLastCompletedSession
static std::shared_ptr< ffmpegkit::Session > getLastCompletedSession()
Definition: FFmpegKitConfig.cpp:1219
+
SESSION_MAP_SIZE
#define SESSION_MAP_SIZE
Definition: FFmpegKitConfig.cpp:58
+
ffmpegkit::SignalInt
@ SignalInt
Definition: Signal.h:26
+
CallbackData::getType
CallbackType getType()
Definition: FFmpegKitConfig.cpp:206
+
fs_exists
static bool fs_exists(const std::string &s, const bool isFile, const bool isDirectory)
Definition: FFmpegKitConfig.cpp:124
+
resetMessagesInTransmit
static void resetMessagesInTransmit(long sessionId)
Definition: FFmpegKitConfig.cpp:454
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
MediaInformationSession.h
+
ffmpegkit::FFmpegKitConfig::enableFFmpegSessionCompleteCallback
static void enableFFmpegSessionCompleteCallback(const FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1136
+
CallbackData::getStatisticsSize
int64_t getStatisticsSize()
Definition: FFmpegKitConfig.cpp:234
+
ffmpegkit::FFmpegKitConfig::getVersion
static std::string getVersion()
Definition: FFmpegKitConfig.cpp:963
+
StatisticsType
@ StatisticsType
Definition: FFmpegKitConfig.cpp:121
+
ffmpegkit::FFmpegKitConfig::enableStatisticsCallback
static void enableStatisticsCallback(const ffmpegkit::StatisticsCallback statisticsCallback)
Definition: FFmpegKitConfig.cpp:1132
+
CallbackData::_statisticsSize
int64_t _statisticsSize
Definition: FFmpegKitConfig.cpp:260
+
sessionMap
static std::atomic< short > sessionMap[SESSION_MAP_SIZE]
Definition: FFmpegKitConfig.cpp:59
+
callbackThread
static pthread_t callbackThread
Definition: FFmpegKitConfig.cpp:113
+
set_report_callback
void set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double))
Definition: fftools_ffmpeg.c:5194
+
handleSIGINT
volatile int handleSIGINT
Definition: FFmpegKitConfig.cpp:85
+
CallbackType
CallbackType
Definition: FFmpegKitConfig.cpp:119
+
FFmpegSession.h
+
ffmpegkit::FFmpegKitConfig::registerNewFFmpegPipe
static std::shared_ptr< std::string > registerNewFFmpegPipe()
Definition: FFmpegKitConfig.cpp:924
+
ffmpegkit::FFmpegKitConfig::setFontDirectoryList
static void setFontDirectoryList(const std::list< std::string > &fontDirectoryList, const std::map< std::string, std::string > &fontNameMapping)
Definition: FFmpegKitConfig.cpp:843
+
FFmpegKit.h
+
ffmpegkit::LevelAVLogFatal
@ LevelAVLogFatal
Definition: Level.h:51
+
ffmpegkit::Level
Level
Definition: Level.h:28
+
LogRedirectionStrategy.h
+
ffmpegkit::FFmpegKitConfig::logLevelToString
static std::string logLevelToString(const ffmpegkit::Level level)
Definition: FFmpegKitConfig.cpp:1168
+
mediaInformationSessionCompleteCallback
static ffmpegkit::MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:71
+
callbackThreadFunction
void * callbackThreadFunction(void *pointer)
Definition: FFmpegKitConfig.cpp:634
+
registerSessionId
static void registerSessionId(long sessionId)
Definition: FFmpegKitConfig.cpp:405
+
CallbackData::_statisticsFps
float _statisticsFps
Definition: FFmpegKitConfig.cpp:258
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
FFprobeKit.h
+
ffmpegkit::LevelAVLogQuiet
@ LevelAVLogQuiet
Definition: Level.h:39
+
ffmpegkit::FFmpegKitConfig::setEnvironmentVariable
static int setEnvironmentVariable(const std::string &variableName, const std::string &variableValue)
Definition: FFmpegKitConfig.cpp:985
+
executeFFmpeg
static int executeFFmpeg(const long sessionId, const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKitConfig.cpp:682
+
_ffmpegKitConfigInitializer
const void * _ffmpegKitConfigInitializer
Definition: FFmpegKitConfig.cpp:117
+
handleSIGQUIT
volatile int handleSIGQUIT
Definition: FFmpegKitConfig.cpp:84
+
ffmpegkit::Signal
Signal
Definition: Signal.h:25
+
ffmpegkit::FFmpegKitConfig::ignoreSignal
static void ignoreSignal(const ffmpegkit::Signal signal)
Definition: FFmpegKitConfig.cpp:989
+
avutil_log_format_line
static void avutil_log_format_line(void *avcl, int level, const char *fmt, va_list vl, AVBPrint part[4], int *print_prefix)
Definition: FFmpegKitConfig.cpp:308
+
ffmpegkit::MediaInformationJsonParser::from
static std::shared_ptr< ffmpegkit::MediaInformation > from(const std::string &ffprobeJsonOutput)
Definition: MediaInformationJsonParser.cpp:31
+
ffmpegkit::SignalQuit
@ SignalQuit
Definition: Signal.h:27
+
sessionInTransitMessageCountMap
static std::atomic< int > sessionInTransitMessageCountMap[SESSION_MAP_SIZE]
Definition: FFmpegKitConfig.cpp:60
+
ffmpegkit::FFmpegKitConfig::argumentsToString
static std::string argumentsToString(std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKitConfig.cpp:1400
+
CallbackData::_sessionId
long _sessionId
Definition: FFmpegKitConfig.cpp:252
+
ffmpegkit::LevelAVLogVerbose
@ LevelAVLogVerbose
Definition: Level.h:73
+
addSessionToSessionHistory
void addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session)
Definition: FFmpegKitConfig.cpp:149
+
callbackDataMutex
static std::recursive_mutex callbackDataMutex
Definition: FFmpegKitConfig.cpp:77
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined
@ LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined
Definition: LogRedirectionStrategy.h:27
+
CallbackData::CallbackData
CallbackData(const long sessionId, const int logLevel, const AVBPrint *data)
Definition: FFmpegKitConfig.cpp:181
+
CallbackData::_statisticsTime
int _statisticsTime
Definition: FFmpegKitConfig.cpp:261
+
ffmpegkit::FFmpegKitConfig::getFFprobeSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > getFFprobeSessions()
Definition: FFmpegKitConfig.cpp:1273
+
CallbackData::_type
CallbackType _type
Definition: FFmpegKitConfig.cpp:251
+
ffmpegkit::FFmpegKitConfig::getSession
static std::shared_ptr< ffmpegkit::Session > getSession(const long sessionId)
Definition: FFmpegKitConfig.cpp:1200
+
ffmpegkit::FFmpegKitConfig::getFFmpegVersion
static std::string getFFmpegVersion()
Definition: FFmpegKitConfig.cpp:959
+
ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy
static LogRedirectionStrategy getLogRedirectionStrategy()
Definition: FFmpegKitConfig.cpp:1327
+
CallbackData::getSessionId
long getSessionId()
Definition: FFmpegKitConfig.cpp:210
+
ffmpegkit::FFmpegKitConfig::setSessionHistorySize
static void setSessionHistorySize(const int sessionHistorySize)
Definition: FFmpegKitConfig.cpp:1188
+
CallbackData::getStatisticsFrameNumber
int getStatisticsFrameNumber()
Definition: FFmpegKitConfig.cpp:222
+
ffmpegkit::FFmpegKitConfig::disableRedirection
static void disableRedirection()
Definition: FFmpegKitConfig.cpp:814
+
ffmpegkit::FFmpegKitConfig::getLogLevel
static ffmpegkit::Level getLogLevel()
Definition: FFmpegKitConfig.cpp:1160
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined
@ LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined
Definition: LogRedirectionStrategy.h:28
+
LogType
@ LogType
Definition: FFmpegKitConfig.cpp:120
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute
static void asyncFFprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1072
+
cancelSession
void cancelSession(long sessionId)
Definition: FFmpegKitConfig.cpp:427
+
CallbackData::CallbackData
CallbackData(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)
Definition: FFmpegKitConfig.cpp:187
+
ffmpegkit::FFmpegKitConfig::getMediaInformationExecute
static void getMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, const int waitTimeout)
Definition: FFmpegKitConfig.cpp:1027
+
CallbackData::getStatisticsTime
int getStatisticsTime()
Definition: FFmpegKitConfig.cpp:238
+
fs_create_dir
static bool fs_create_dir(const std::string &s)
Definition: FFmpegKitConfig.cpp:139
+
CallbackData::_statisticsFrameNumber
int _statisticsFrameNumber
Definition: FFmpegKitConfig.cpp:257
+
ffmpegkit::FFmpegKitConfig::setFontDirectory
static void setFontDirectory(const std::string &fontDirectoryPath, const std::map< std::string, std::string > &fontNameMapping)
Definition: FFmpegKitConfig.cpp:839
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegKitConfig::enableFFprobeSessionCompleteCallback
static void enableFFprobeSessionCompleteCallback(const FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1144
+
Packages.h
+
cancelRequested
int cancelRequested(long sessionId)
Definition: FFmpegKitConfig.cpp:437
+
ffmpegkit::FFmpegKitConfig::getSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessions()
Definition: FFmpegKitConfig.cpp:1234
+
callbackNotify
static void callbackNotify()
Definition: FFmpegKitConfig.cpp:279
+
avutil_log_sanitize
static void avutil_log_sanitize(char *line)
Definition: FFmpegKitConfig.cpp:340
+
ffmpegkit::FFmpegKitConfig::getMediaInformationSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > getMediaInformationSessions()
Definition: FFmpegKitConfig.cpp:1291
+
sessionHistoryMap
static std::map< long, std::shared_ptr< ffmpegkit::Session > > sessionHistoryMap
Definition: FFmpegKitConfig.cpp:53
+
ffmpegkit::FFmpegKitConfig::enableRedirection
static void enableRedirection()
Definition: FFmpegKitConfig.cpp:791
+
ffmpegkit::SignalPipe
@ SignalPipe
Definition: Signal.h:28
+
SessionState.h
+
ffmpegkit::FFmpegKitConfig::parseArguments
static std::shared_ptr< std::list< std::string > > parseArguments(const std::string &command)
Definition: FFmpegKitConfig.cpp:1349
+
statisticsCallbackDataAdd
static void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed)
Definition: FFmpegKitConfig.cpp:370
+
process_statistics
void process_statistics(long sessionId, int videoFrameNumber, float videoFps, float videoQuality, long size, int time, double bitrate, double speed)
Definition: FFmpegKitConfig.cpp:603
+
ffmpegkit::SignalXcpu
@ SignalXcpu
Definition: Signal.h:30
+
ffmpegkit::FFmpegKitConfig::messagesInTransmit
static int messagesInTransmit(const long sessionId)
Definition: FFmpegKitConfig.cpp:1335
+
avutil_log_get_level_str
static const char * avutil_log_get_level_str(int level)
Definition: FFmpegKitConfig.cpp:283
+
ffmpegkit::FFmpegKitConfig::getSessionsByState
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessionsByState(const SessionState state)
Definition: FFmpegKitConfig.cpp:1309
+
callbackWait
static void callbackWait(int milliSeconds)
Definition: FFmpegKitConfig.cpp:271
+
handleSIGPIPE
volatile int handleSIGPIPE
Definition: FFmpegKitConfig.cpp:88
+
ffmpegkit::LevelAVLogWarning
@ LevelAVLogWarning
Definition: Level.h:63
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
format
fg outputs[0] format
Definition: fftools_ffmpeg_filter.c:184
+
ffmpegkit::LogRedirectionStrategyAlwaysPrintLogs
@ LogRedirectionStrategyAlwaysPrintLogs
Definition: LogRedirectionStrategy.h:26
+
CallbackData::getLogLevel
int getLogLevel()
Definition: FFmpegKitConfig.cpp:214
+
ffmpegkit::LevelAVLogStdErr
@ LevelAVLogStdErr
Definition: Level.h:34
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
ffmpegKitInitialize
void * ffmpegKitInitialize()
Definition: FFmpegKitConfig.cpp:762
+
executeFFprobe
int executeFFprobe(const long sessionId, const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKitConfig.cpp:722
+
ffmpegKitInitializerFlag
static std::once_flag ffmpegKitInitializerFlag
Definition: FFmpegKitConfig.cpp:112
+
CallbackData::_statisticsQuality
float _statisticsQuality
Definition: FFmpegKitConfig.cpp:259
+
ffmpegkit::SessionStateCompleted
@ SessionStateCompleted
Definition: SessionState.h:29
+
CallbackData::getStatisticsBitrate
double getStatisticsBitrate()
Definition: FFmpegKitConfig.cpp:242
+
sessionHistorySize
static int sessionHistorySize
Definition: FFmpegKitConfig.cpp:52
+
ArchDetect.h
+
ffmpegkit::FFmpegKitConfig::enableLogCallback
static void enableLogCallback(const ffmpegkit::LogCallback logCallback)
Definition: FFmpegKitConfig.cpp:1128
+
ffprobe_execute
int ffprobe_execute(int argc, char **argv)
Definition: fftools_ffprobe.c:3717
+
CallbackData::_statisticsSpeed
double _statisticsSpeed
Definition: FFmpegKitConfig.cpp:263
+
ffmpegkit::ArchDetect::getArch
static std::string getArch()
Definition: ArchDetect.cpp:26
+
FFmpegKitConfig.h
+
ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute
static void asyncFFmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1044
+
ffmpegkit_log_callback_function
void ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs)
Definition: FFmpegKitConfig.cpp:466
+
ffmpegkit::SessionStateCreated
@ SessionStateCreated
Definition: SessionState.h:26
+
logCallbackDataAdd
static void logCallbackDataAdd(int level, AVBPrint *data)
Definition: FFmpegKitConfig.cpp:354
+
ffmpegkit::LevelAVLogError
@ LevelAVLogError
Definition: Level.h:57
+
ffmpegkit::FFmpegKitConfig::setLogLevel
static void setLogLevel(const ffmpegkit::Level level)
Definition: FFmpegKitConfig.cpp:1164
+
ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath
static int setFontconfigConfigurationPath(const std::string &path)
Definition: FFmpegKitConfig.cpp:835
+
removeSession
static void removeSession(long sessionId)
Definition: FFmpegKitConfig.cpp:414
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
ffmpegkit::FFmpegKitConfig::isLTSBuild
static bool isLTSBuild()
Definition: FFmpegKitConfig.cpp:971
+
callbackDataList
static std::list< CallbackData * > callbackDataList
Definition: FFmpegKitConfig.cpp:80
+
ffmpegkit::FFmpegKitConfig::clearSessions
static void clearSessions()
Definition: FFmpegKitConfig.cpp:1245
+
ffmpegkit::SignalTerm
@ SignalTerm
Definition: Signal.h:29
+
FFprobeSession.h
+
ffmpegkit::FFmpegKitConfig::ffmpegExecute
static void ffmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1003
+
Level.h
+
ffmpegkit::FFmpegKitConfig::closeFFmpegPipe
static void closeFFmpegPipe(const std::string &ffmpegPipePath)
Definition: FFmpegKitConfig.cpp:955
+
handleSIGTERM
volatile int handleSIGTERM
Definition: FFmpegKitConfig.cpp:86
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFmpegKitConfig::enableMediaInformationSessionCompleteCallback
static void enableMediaInformationSessionCompleteCallback(const MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1152
+
ffmpegkit::FFmpegKitConfig::getMediaInformationSessionCompleteCallback
static MediaInformationSessionCompleteCallback getMediaInformationSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1156
+
ffmpegkit::FFmpegKitConfig::getBuildDate
static std::string getBuildDate()
Definition: FFmpegKitConfig.cpp:979
+
redirectionEnabled
static int redirectionEnabled
Definition: FFmpegKitConfig.cpp:76
+
callbackDataRemove
static CallbackData * callbackDataRemove()
Definition: FFmpegKitConfig.cpp:386
+
ffmpegkit::LevelAVLogInfo
@ LevelAVLogInfo
Definition: Level.h:68
+
CallbackData::getStatisticsSpeed
double getStatisticsSpeed()
Definition: FFmpegKitConfig.cpp:246
+
ffmpegkit::LevelAVLogDebug
@ LevelAVLogDebug
Definition: Level.h:78
+
CallbackData::getLogData
AVBPrint * getLogData()
Definition: FFmpegKitConfig.cpp:218
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegKitConfig::getFFprobeSessionCompleteCallback
static FFprobeSessionCompleteCallback getFFprobeSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1148
+
CallbackData::getStatisticsQuality
float getStatisticsQuality()
Definition: FFmpegKitConfig.cpp:230
+
ffmpegkit::LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined
@ LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined
Definition: LogRedirectionStrategy.h:29
+
CallbackData
Definition: FFmpegKitConfig.cpp:179
+
ffmpegkit::FFmpegKitConfig::getLastSession
static std::shared_ptr< ffmpegkit::Session > getLastSession()
Definition: FFmpegKitConfig.cpp:1212
+
sessionMutex
static std::recursive_mutex sessionMutex
Definition: FFmpegKitConfig.cpp:55
+
CallbackData::_logData
AVBPrint _logData
Definition: FFmpegKitConfig.cpp:255
+
ffmpegkit::SessionStateRunning
@ SessionStateRunning
Definition: SessionState.h:27
+
ffmpeg_execute
int ffmpeg_execute(int argc, char **argv)
Definition: fftools_ffmpeg.c:5210
+
pipeIndexGenerator
static std::atomic< long > pipeIndexGenerator(1)
+
ffmpegkit::FFmpegKitConfig::setLogRedirectionStrategy
static void setLogRedirectionStrategy(const LogRedirectionStrategy logRedirectionStrategy)
Definition: FFmpegKitConfig.cpp:1331
+
ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute
static void asyncGetMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, int waitTimeout)
Definition: FFmpegKitConfig.cpp:1100
+
ffmpegkit::FFmpegKitConfig::ffprobeExecute
static void ffprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1015
+
ffmpegSessionCompleteCallback
static ffmpegkit::FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:69
+
ffmpegkit::FFmpegKitConfig::sessionStateToString
static std::string sessionStateToString(SessionState state)
Definition: FFmpegKitConfig.cpp:1339
+ + + + diff --git a/docs/linux/html/d8/d4e/fftools__cmdutils_8h.html b/docs/linux/html/d8/d4e/fftools__cmdutils_8h.html new file mode 100644 index 0000000..58754fe --- /dev/null +++ b/docs/linux/html/d8/d4e/fftools__cmdutils_8h.html @@ -0,0 +1,3111 @@ + + + + + + + +FFmpegKit Linux API: fftools_cmdutils.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Macros | +Typedefs | +Functions | +Variables
+
+
fftools_cmdutils.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Data Structures

struct  SpecifierOpt
 
struct  OptionDef
 
struct  Option
 
struct  OptionGroupDef
 
struct  OptionGroup
 
struct  OptionGroupList
 
struct  OptionParseContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define AV_LOG_STDERR   -16
 
#define HAS_ARG   0x0001
 
#define OPT_BOOL   0x0002
 
#define OPT_EXPERT   0x0004
 
#define OPT_STRING   0x0008
 
#define OPT_VIDEO   0x0010
 
#define OPT_AUDIO   0x0020
 
#define OPT_INT   0x0080
 
#define OPT_FLOAT   0x0100
 
#define OPT_SUBTITLE   0x0200
 
#define OPT_INT64   0x0400
 
#define OPT_EXIT   0x0800
 
#define OPT_DATA   0x1000
 
#define OPT_PERFILE
 
#define OPT_OFFSET   0x4000 /* option is specified as an offset in a passed optctx */
 
#define OPT_SPEC
 
#define OPT_TIME   0x10000
 
#define OPT_DOUBLE   0x20000
 
#define OPT_INPUT   0x40000
 
#define OPT_OUTPUT   0x80000
 
#define media_type_string   av_get_media_type_string
 
#define GROW_ARRAY(array, nb_elems)   array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
 
#define GET_PIX_FMT_NAME(pix_fmt)   const char *name = av_get_pix_fmt_name(pix_fmt);
 
#define GET_CODEC_NAME(id)   const char *name = avcodec_descriptor_get(id)->name;
 
#define GET_SAMPLE_FMT_NAME(sample_fmt)   const char *name = av_get_sample_fmt_name(sample_fmt)
 
#define GET_SAMPLE_RATE_NAME(rate)
 
#define GET_CH_LAYOUT_NAME(ch_layout)
 
#define GET_CH_LAYOUT_DESC(ch_layout)
 
+ + + + + + + + + + + + + + + +

+Typedefs

typedef struct SpecifierOpt SpecifierOpt
 
typedef struct OptionDef OptionDef
 
typedef struct Option Option
 
typedef struct OptionGroupDef OptionGroupDef
 
typedef struct OptionGroup OptionGroup
 
typedef struct OptionGroupList OptionGroupList
 
typedef struct OptionParseContext OptionParseContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void register_exit (void(*cb)(int ret))
 
void exit_program (int ret) av_noreturn
 
void init_dynload (void)
 
void init_opts (void)
 
void uninit_opts (void)
 
void log_callback_help (void *ptr, int level, const char *fmt, va_list vl)
 
int opt_cpuflags (void *optctx, const char *opt, const char *arg)
 
int opt_cpucount (void *optctx, const char *opt, const char *arg)
 
int opt_default (void *optctx, const char *opt, const char *arg)
 
int opt_loglevel (void *optctx, const char *opt, const char *arg)
 
int opt_report (void *optctx, const char *opt, const char *arg)
 
int opt_max_alloc (void *optctx, const char *opt, const char *arg)
 
int opt_codec_debug (void *optctx, const char *opt, const char *arg)
 
int opt_timelimit (void *optctx, const char *opt, const char *arg)
 
double parse_number_or_die (const char *context, const char *numstr, int type, double min, double max)
 
int64_t parse_time_or_die (const char *context, const char *timestr, int is_duration)
 
void show_help_options (const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
 
void show_help_children (const AVClass *avClass, int flags)
 
void show_help_default_ffmpeg (const char *opt, const char *arg)
 
void show_help_default_ffprobe (const char *opt, const char *arg)
 
int show_help (void *optctx, const char *opt, const char *arg)
 
void parse_options (void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *))
 
int parse_option (void *optctx, const char *opt, const char *arg, const OptionDef *options)
 
int parse_optgroup (void *optctx, OptionGroup *g)
 
int split_commandline (OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
 
void uninit_parse_context (OptionParseContext *octx)
 
void parse_loglevel (int argc, char **argv, const OptionDef *options)
 
int locate_option (int argc, char **argv, const OptionDef *options, const char *optname)
 
int check_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec)
 
AVDictionary * filter_codec_opts (AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
 
AVDictionary ** setup_find_stream_info_opts (AVFormatContext *s, AVDictionary *codec_opts)
 
void print_error (const char *filename, int err)
 
void show_banner (int argc, char **argv, const OptionDef *options)
 
int show_version (void *optctx, const char *opt, const char *arg)
 
int show_buildconf (void *optctx, const char *opt, const char *arg)
 
int show_license (void *optctx, const char *opt, const char *arg)
 
int show_formats (void *optctx, const char *opt, const char *arg)
 
int show_muxers (void *optctx, const char *opt, const char *arg)
 
int show_demuxers (void *optctx, const char *opt, const char *arg)
 
int show_devices (void *optctx, const char *opt, const char *arg)
 
int show_codecs (void *optctx, const char *opt, const char *arg)
 
int show_decoders (void *optctx, const char *opt, const char *arg)
 
int show_encoders (void *optctx, const char *opt, const char *arg)
 
int show_filters (void *optctx, const char *opt, const char *arg)
 
int show_bsfs (void *optctx, const char *opt, const char *arg)
 
int show_protocols (void *optctx, const char *opt, const char *arg)
 
int show_pix_fmts (void *optctx, const char *opt, const char *arg)
 
int show_layouts (void *optctx, const char *opt, const char *arg)
 
int show_sample_fmts (void *optctx, const char *opt, const char *arg)
 
int show_colors (void *optctx, const char *opt, const char *arg)
 
int read_yesno (void)
 
FILE * get_preset_file (char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
 
void * grow_array (void *array, int elem_size, int *size, int new_size)
 
double get_rotation (AVStream *st)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Variables

__thread char * program_name
 
__thread int program_birth_year
 
__thread AVCodecContext * avcodec_opts [AVMEDIA_TYPE_NB]
 
__thread AVFormatContext * avformat_opts
 
__thread AVDictionary * sws_dict
 
__thread AVDictionary * swr_opts
 
__thread AVDictionary * format_opts
 
__thread AVDictionary * codec_opts
 
__thread AVDictionary * resample_opts
 
__thread int hide_banner
 
__thread int find_stream_info
 
+

Macro Definition Documentation

+ +

◆ AV_LOG_STDERR

+ +
+
+ + + + +
#define AV_LOG_STDERR   -16
+
+

Defines logs printed to stderr by ffmpeg. They are not filtered and always redirected.

+ +

Definition at line 61 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_CH_LAYOUT_DESC

+ +
+
+ + + + + + + + +
#define GET_CH_LAYOUT_DESC( ch_layout)
+
+Value:
char name[128];\
+
av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
+
+

Definition at line 632 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_CH_LAYOUT_NAME

+ +
+
+ + + + + + + + +
#define GET_CH_LAYOUT_NAME( ch_layout)
+
+Value:
char name[16];\
+
snprintf(name, sizeof(name), "0x%" PRIx64, ch_layout);
+
+

Definition at line 628 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_CODEC_NAME

+ +
+
+ + + + + + + + +
#define GET_CODEC_NAME( id)   const char *name = avcodec_descriptor_get(id)->name;
+
+ +

Definition at line 618 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_PIX_FMT_NAME

+ +
+
+ + + + + + + + +
#define GET_PIX_FMT_NAME( pix_fmt)   const char *name = av_get_pix_fmt_name(pix_fmt);
+
+ +

Definition at line 615 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_SAMPLE_FMT_NAME

+ +
+
+ + + + + + + + +
#define GET_SAMPLE_FMT_NAME( sample_fmt)   const char *name = av_get_sample_fmt_name(sample_fmt)
+
+ +

Definition at line 621 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GET_SAMPLE_RATE_NAME

+ +
+
+ + + + + + + + +
#define GET_SAMPLE_RATE_NAME( rate)
+
+Value:
char name[16];\
+
snprintf(name, sizeof(name), "%d", rate);
+
+

Definition at line 624 of file fftools_cmdutils.h.

+ +
+
+ +

◆ GROW_ARRAY

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GROW_ARRAY( array,
 nb_elems 
)   array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
+
+ +

Definition at line 612 of file fftools_cmdutils.h.

+ +
+
+ +

◆ HAS_ARG

+ +
+
+ + + + +
#define HAS_ARG   0x0001
+
+ +

Definition at line 193 of file fftools_cmdutils.h.

+ +
+
+ +

◆ media_type_string

+ +
+
+ + + + +
#define media_type_string   av_get_media_type_string
+
+ +

Definition at line 610 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_AUDIO

+ +
+
+ + + + +
#define OPT_AUDIO   0x0020
+
+ +

Definition at line 198 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_BOOL

+ +
+
+ + + + +
#define OPT_BOOL   0x0002
+
+ +

Definition at line 194 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_DATA

+ +
+
+ + + + +
#define OPT_DATA   0x1000
+
+ +

Definition at line 204 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_DOUBLE

+ +
+
+ + + + +
#define OPT_DOUBLE   0x20000
+
+ +

Definition at line 209 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_EXIT

+ +
+
+ + + + +
#define OPT_EXIT   0x0800
+
+ +

Definition at line 203 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_EXPERT

+ +
+
+ + + + +
#define OPT_EXPERT   0x0004
+
+ +

Definition at line 195 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_FLOAT

+ +
+
+ + + + +
#define OPT_FLOAT   0x0100
+
+ +

Definition at line 200 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_INPUT

+ +
+
+ + + + +
#define OPT_INPUT   0x40000
+
+ +

Definition at line 210 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_INT

+ +
+
+ + + + +
#define OPT_INT   0x0080
+
+ +

Definition at line 199 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_INT64

+ +
+
+ + + + +
#define OPT_INT64   0x0400
+
+ +

Definition at line 202 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_OFFSET

+ +
+
+ + + + +
#define OPT_OFFSET   0x4000 /* option is specified as an offset in a passed optctx */
+
+ +

Definition at line 206 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_OUTPUT

+ +
+
+ + + + +
#define OPT_OUTPUT   0x80000
+
+ +

Definition at line 211 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_PERFILE

+ +
+
+ + + + +
#define OPT_PERFILE
+
+Value:
0x2000 /* the option is per-file (currently ffmpeg-only).
+
implied by OPT_OFFSET or OPT_SPEC */
+
+

Definition at line 205 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_SPEC

+ +
+
+ + + + +
#define OPT_SPEC
+
+Value:
0x8000 /* option is to be stored in an array of SpecifierOpt.
+
Implies OPT_OFFSET. Next element after the offset is
+
an int containing element count in the array. */
+
+

Definition at line 207 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_STRING

+ +
+
+ + + + +
#define OPT_STRING   0x0008
+
+ +

Definition at line 196 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_SUBTITLE

+ +
+
+ + + + +
#define OPT_SUBTITLE   0x0200
+
+ +

Definition at line 201 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_TIME

+ +
+
+ + + + +
#define OPT_TIME   0x10000
+
+ +

Definition at line 208 of file fftools_cmdutils.h.

+ +
+
+ +

◆ OPT_VIDEO

+ +
+
+ + + + +
#define OPT_VIDEO   0x0010
+
+ +

Definition at line 197 of file fftools_cmdutils.h.

+ +
+
+

Typedef Documentation

+ +

◆ Option

+ +
+
+ + + + +
typedef struct Option Option
+
+

An option extracted from the commandline. Cannot use AVDictionary because of options like -map which can be used multiple times.

+ +
+
+ +

◆ OptionDef

+ +
+
+ + + + +
typedef struct OptionDef OptionDef
+
+ +
+
+ +

◆ OptionGroup

+ +
+
+ + + + +
typedef struct OptionGroup OptionGroup
+
+ +
+
+ +

◆ OptionGroupDef

+ +
+
+ + + + +
typedef struct OptionGroupDef OptionGroupDef
+
+ +
+
+ +

◆ OptionGroupList

+ +
+
+ + + + +
typedef struct OptionGroupList OptionGroupList
+
+

A list of option groups that all have the same group type (e.g. input files or output files)

+ +
+
+ +

◆ OptionParseContext

+ +
+
+ + + + +
typedef struct OptionParseContext OptionParseContext
+
+ +
+
+ +

◆ SpecifierOpt

+ +
+
+ + + + +
typedef struct SpecifierOpt SpecifierOpt
+
+ +
+
+

Function Documentation

+ +

◆ check_stream_specifier()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int check_stream_specifier (AVFormatContext * s,
AVStream * st,
const char * spec 
)
+
+

Check if the given stream matches a stream specifier.

+
Parameters
+ + + + +
sCorresponding format context.
stStream from s to be checked.
specA stream specifier of the [v|a|s|d]:[<stream index>] form.
+
+
+
Returns
1 if the stream matches, 0 if it doesn't, <0 on error
+ +

Definition at line 2148 of file fftools_cmdutils.c.

+ +
+
+ +

◆ exit_program()

+ +
+
+ + + + + + + + +
void exit_program (int ret)
+
+

Wraps exit with a program-specific cleanup routine.

+ +

Definition at line 160 of file fftools_cmdutils.c.

+ +
+
+ +

◆ filter_codec_opts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AVDictionary* filter_codec_opts (AVDictionary * opts,
enum AVCodecID codec_id,
AVFormatContext * s,
AVStream * st,
const AVCodec * codec 
)
+
+

Filter out options for given codec.

+

Create a new options dictionary containing only the options from opts which apply to the codec with ID codec_id.

+
Parameters
+ + + + + + +
optsdictionary to place options in
codec_idID of the codec that should be filtered for
sCorresponding format context.
stA stream from s for which the options should be filtered.
codecThe particular codec for which the options should be filtered. If null, the default one is looked up according to the codec id.
+
+
+
Returns
a pointer to the created dictionary
+ +

Definition at line 2156 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_preset_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FILE* get_preset_file (char * filename,
size_t filename_size,
const char * preset_name,
int is_path,
const char * codec_name 
)
+
+

Get a file corresponding to a preset file.

+

If is_path is non-zero, look for the file in the path preset_name. Otherwise search for a file named arg.ffpreset in the directories $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined at configuration time or in a "ffpresets" folder along the executable on win32, in that order. If no such file is found and codec_name is defined, then search for a file named codec_name-preset_name.avpreset in the above-mentioned directories.

+
Parameters
+ + + + + + +
filenamebuffer where the name of the found filename is written
filename_sizesize in bytes of the filename buffer
preset_namename of the preset to search
is_pathtell if preset_name is a filename path
codec_namename of the codec for which to look for the preset, may be NULL
+
+
+ +

Definition at line 2098 of file fftools_cmdutils.c.

+ +
+
+ +

◆ get_rotation()

+ +
+
+ + + + + + + + +
double get_rotation (AVStream * st)
+
+ +

Definition at line 2253 of file fftools_cmdutils.c.

+ +
+
+ +

◆ grow_array()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void* grow_array (void * array,
int elem_size,
intsize,
int new_size 
)
+
+

Realloc array to hold new_size elements of elem_size. Calls exit() on failure.

+
Parameters
+ + + + + +
arrayarray to reallocate
elem_sizesize in bytes of each element
sizenew element count will be written here
new_sizenumber of elements to place in reallocated array
+
+
+
Returns
reallocated array
+ +

Definition at line 2234 of file fftools_cmdutils.c.

+ +
+
+ +

◆ init_dynload()

+ +
+
+ + + + + + + + +
void init_dynload (void )
+
+

Initialize dynamic library loading

+ +

Definition at line 144 of file fftools_cmdutils.c.

+ +
+
+ +

◆ init_opts()

+ +
+
+ + + + + + + + +
void init_opts (void )
+
+

Initialize the cmdutils option system, in particular allocate the *_opts contexts.

+ +
+
+ +

◆ locate_option()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int locate_option (int argc,
char ** argv,
const OptionDefoptions,
const char * optname 
)
+
+

Return index of option opt in argv or 0 if not found.

+ +

Definition at line 477 of file fftools_cmdutils.c.

+ +
+
+ +

◆ log_callback_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void log_callback_help (void * ptr,
int level,
const char * fmt,
va_list vl 
)
+
+

Trivial log callback. Only suitable for opt_help and similar since it lacks prefix handling.

+ +
+
+ +

◆ opt_codec_debug()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_codec_debug (void * optctx,
const char * opt,
const char * arg 
)
+
+ +
+
+ +

◆ opt_cpucount()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_cpucount (void * optctx,
const char * opt,
const char * arg 
)
+
+

Override the cpucount.

+ +

Definition at line 893 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_cpuflags()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_cpuflags (void * optctx,
const char * opt,
const char * arg 
)
+
+

Override the cpuflags.

+ +

Definition at line 881 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_default()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_default (void * optctx,
const char * opt,
const char * arg 
)
+
+

Fallback for options that are not explicitly handled, these will be parsed through AVOptions.

+ +

Definition at line 575 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_loglevel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_loglevel (void * optctx,
const char * opt,
const char * arg 
)
+
+

Set the libav* libraries log level.

+ +

Definition at line 919 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_max_alloc()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_max_alloc (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 1107 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_report()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_report (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 1102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ opt_timelimit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_timelimit (void * optctx,
const char * opt,
const char * arg 
)
+
+

Limit the execution time.

+ +

Definition at line 1121 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_loglevel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void parse_loglevel (int argc,
char ** argv,
const OptionDefoptions 
)
+
+

Find the '-loglevel' option in the command line args and apply it.

+ +

Definition at line 536 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_number_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
double parse_number_or_die (const char * context,
const char * numstr,
int type,
double min,
double max 
)
+
+

Parse a string and return its corresponding value as a double. Exit from the application if the string cannot be correctly parsed or the corresponding value is invalid.

+
Parameters
+ + + + + + +
contextthe context of the value to be set (e.g. the corresponding command line option name)
numstrthe string to be parsed
typethe type (OPT_INT64 or OPT_FLOAT) as which the string should be parsed
minthe minimum valid accepted value
maxthe maximum valid accepted value
+
+
+ +

Definition at line 171 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_optgroup()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int parse_optgroup (void * optctx,
OptionGroupg 
)
+
+

Parse an options group and write results into optctx.

+
Parameters
+ + + +
optctxan app-specific options context. NULL for global options group
goption group
+
+
+ +

Definition at line 444 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_option()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int parse_option (void * optctx,
const char * opt,
const char * arg,
const OptionDefoptions 
)
+
+

Parse one given option.

+
Returns
on success 1 if arg was consumed, 0 otherwise; negative number on error
+ +

Definition at line 376 of file fftools_cmdutils.c.

+ +
+
+ +

◆ parse_options()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void parse_options (void * optctx,
int argc,
char ** argv,
const OptionDefoptions,
void(*)(void *optctx, const char *) parse_arg_function 
)
+
+

Parse the command line arguments.

+
Parameters
+ + + + + + +
optctxan opaque options context
argcnumber of command line arguments
argvvalues of command line arguments
optionsArray with the definitions required to interpret every option of the form: -option_name [argument]
parse_arg_functionName of the function called to process every argument without a leading option name flag. NULL if such arguments do not have to be processed.
+
+
+ +
+
+ +

◆ parse_time_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int64_t parse_time_or_die (const char * context,
const char * timestr,
int is_duration 
)
+
+

Parse a string specifying a time and return its corresponding value as a number of microseconds. Exit from the application if the string cannot be correctly parsed.

+
Parameters
+ + + + +
contextthe context of the value to be set (e.g. the corresponding command line option name)
timestrthe string to be parsed
is_durationa flag which tells how to interpret timestr, if not zero timestr is interpreted as a duration, otherwise as a date
+
+
+
See also
av_parse_time()
+ +

Definition at line 192 of file fftools_cmdutils.c.

+ +
+
+ +

◆ print_error()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void print_error (const char * filename,
int err 
)
+
+

Print an error message to stderr, indicating filename and a human readable description of the error code err.

+

If strerror_r() is not available the use of this function in a multithreaded application may be unsafe.

+
See also
av_strerror()
+ +

Definition at line 1134 of file fftools_cmdutils.c.

+ +
+
+ +

◆ read_yesno()

+ +
+
+ + + + + + + + +
int read_yesno (void )
+
+

Return a positive value if a line read from standard input starts with [yY], otherwise return 0.

+ +

Definition at line 2087 of file fftools_cmdutils.c.

+ +
+
+ +

◆ register_exit()

+ +
+
+ + + + + + + + +
void register_exit (void(*)(int ret) cb)
+
+

Register a program-specific cleanup routine.

+ +

Definition at line 155 of file fftools_cmdutils.c.

+ +
+
+ +

◆ setup_find_stream_info_opts()

+ +
+
+ + + + + + + + + + + + + + + + + + +
AVDictionary** setup_find_stream_info_opts (AVFormatContext * s,
AVDictionary * codec_opts 
)
+
+

Setup AVCodecContext options for avformat_find_stream_info().

+

Create an array of dictionaries, one dictionary for each stream contained in s. Each dictionary will contain the options from codec_opts which can be applied to the corresponding stream codec context.

+
Returns
pointer to the created array of dictionaries, NULL if it cannot be created
+ +

Definition at line 2214 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_banner()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void show_banner (int argc,
char ** argv,
const OptionDefoptions 
)
+
+

Print the program banner to stderr. The banner contents depend on the current version of the repository and of the libav* libraries used by the program.

+ +

Definition at line 1231 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_bsfs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_bsfs (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the bit stream filters supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1703 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_buildconf()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_buildconf (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the build configuration of the program to stdout. The contents depend on the definition of FFMPEG_CONFIGURATION. This option processing function does not utilize the arguments.

+ +

Definition at line 1250 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_codecs()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_codecs (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the codecs supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1596 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_colors()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_colors (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the color names and values recognized by the program.

+ +

Definition at line 1777 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_decoders()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_decoders (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the decoders supported by the program.

+ +

Definition at line 1691 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_demuxers()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_demuxers (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the demuxer supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1411 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_devices()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_devices (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the devices supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1416 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_encoders()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_encoders (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the encoders supported by the program.

+ +

Definition at line 1697 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the filters supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1730 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_formats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_formats (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the formats supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1401 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_help (void * optctx,
const char * opt,
const char * arg 
)
+
+

Generic -h handler common to all fftools.

+ +

Definition at line 2042 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_children()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_children (const AVClass * avClass,
int flags 
)
+
+

Show help for all options with given flags in class and all its children.

+ +

Definition at line 233 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_help_default_ffmpeg()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_default_ffmpeg (const char * opt,
const char * arg 
)
+
+

Per-fftool specific help handler. Implemented in each fftool, called by show_help().

+ +

Definition at line 3296 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ show_help_default_ffprobe()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_default_ffprobe (const char * opt,
const char * arg 
)
+
+ +

Definition at line 3422 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_help_options()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void show_help_options (const OptionDefoptions,
const char * msg,
int req_flags,
int rej_flags,
int alt_flags 
)
+
+

Print help for all options matching specified flags.

+
Parameters
+ + + + + + +
optionsa list of options
msgtitle of this group. Only printed if at least one option matches.
req_flagsprint only options which have all those flags set.
rej_flagsdon't print options which have any of those flags set.
alt_flagsprint only options that have at least one of those flags set
+
+
+ +

Definition at line 204 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_layouts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_layouts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the standard channel layouts supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1824 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_license()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_license (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the license of the program to stdout. The license depends on the license of the libraries compiled into the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1257 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_muxers()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_muxers (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the muxers supported by the program (including devices). This option processing function does not utilize the arguments.

+ +

Definition at line 1406 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_pix_fmts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_pix_fmts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the pixel formats supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1791 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_protocols()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_protocols (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the protocols supported by the program. This option processing function does not utilize the arguments.

+ +

Definition at line 1715 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_sample_fmts()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_sample_fmts (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print a listing containing all the sample formats supported by the program.

+ +

Definition at line 1853 of file fftools_cmdutils.c.

+ +
+
+ +

◆ show_version()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_version (void * optctx,
const char * opt,
const char * arg 
)
+
+

Print the version of the program to stdout. The version message depends on the current versions of the repository and of the libav* libraries. This option processing function does not utilize the arguments.

+ +

Definition at line 1242 of file fftools_cmdutils.c.

+ +
+
+ +

◆ split_commandline()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int split_commandline (OptionParseContextoctx,
int argc,
char * argv[],
const OptionDefoptions,
const OptionGroupDefgroups,
int nb_groups 
)
+
+

Split the commandline into an intermediate form convenient for further processing.

+

The commandline is assumed to be composed of options which either belong to a group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global (everything else).

+

A group (defined by an OptionGroupDef struct) is a sequence of options terminated by either a group separator option (e.g. -i) or a parameter that is not an option (doesn't start with -). A group without a separator option must always be first in the supplied groups list.

+

All options within the same group are stored in one OptionGroup struct in an OptionGroupList, all groups with the same group definition are stored in one OptionGroupList in OptionParseContext.groups. The order of group lists is the same as the order of group definitions.

+ +

Definition at line 770 of file fftools_cmdutils.c.

+ +
+
+ +

◆ uninit_opts()

+ +
+
+ + + + + + + + +
void uninit_opts (void )
+
+

Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.

+ +

Definition at line 115 of file fftools_cmdutils.c.

+ +
+
+ +

◆ uninit_parse_context()

+ +
+
+ + + + + + + + +
void uninit_parse_context (OptionParseContextoctx)
+
+

Free all allocated memory in an OptionParseContext.

+ +

Definition at line 744 of file fftools_cmdutils.c.

+ +
+
+

Variable Documentation

+ +

◆ avcodec_opts

+ +
+
+ + + + +
__thread AVCodecContext* avcodec_opts[AVMEDIA_TYPE_NB]
+
+ +
+
+ +

◆ avformat_opts

+ +
+
+ + + + +
__thread AVFormatContext* avformat_opts
+
+ +
+
+ +

◆ codec_opts

+ +
+
+ + + + +
__thread AVDictionary * codec_opts
+
+ +

Definition at line 77 of file fftools_cmdutils.h.

+ +
+
+ +

◆ find_stream_info

+ +
+
+ + + + +
__thread int find_stream_info
+
+ +

Definition at line 203 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ format_opts

+ +
+
+ + + + +
__thread AVDictionary* format_opts
+
+ +

Definition at line 102 of file fftools_cmdutils.c.

+ +
+
+ +

◆ hide_banner

+ +
+
+ + + + +
__thread int hide_banner
+
+ +

Definition at line 106 of file fftools_cmdutils.c.

+ +
+
+ +

◆ program_birth_year

+ +
+
+ + + + +
__thread int program_birth_year
+
+

program birth year, defined by the program for show_banner()

+ +

Definition at line 98 of file fftools_cmdutils.c.

+ +
+
+ +

◆ program_name

+ +
+
+ + + + +
__thread char* program_name
+
+

program name, defined by the program for show_version().

+ +

Definition at line 97 of file fftools_cmdutils.c.

+ +
+
+ +

◆ resample_opts

+ +
+
+ + + + +
__thread AVDictionary * resample_opts
+
+ +

Definition at line 77 of file fftools_cmdutils.h.

+ +
+
+ +

◆ swr_opts

+ +
+
+ + + + +
__thread AVDictionary* swr_opts
+
+ +

Definition at line 101 of file fftools_cmdutils.c.

+ +
+
+ +

◆ sws_dict

+ +
+
+ + + + +
__thread AVDictionary* sws_dict
+
+ +

Definition at line 100 of file fftools_cmdutils.c.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d8/d4e/fftools__cmdutils_8h_source.html b/docs/linux/html/d8/d4e/fftools__cmdutils_8h_source.html new file mode 100644 index 0000000..d59cbdb --- /dev/null +++ b/docs/linux/html/d8/d4e/fftools__cmdutils_8h_source.html @@ -0,0 +1,507 @@ + + + + + + + +FFmpegKit Linux API: fftools_cmdutils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_cmdutils.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Various utilities for command line tools
+
3  * copyright (c) 2003 Fabrice Bellard
+
4  *
+
5  * This file is part of FFmpeg.
+
6  *
+
7  * FFmpeg is free software; you can redistribute it and/or
+
8  * modify it under the terms of the GNU Lesser General Public
+
9  * License as published by the Free Software Foundation; either
+
10  * version 2.1 of the License, or (at your option) any later version.
+
11  *
+
12  * FFmpeg is distributed in the hope that it will be useful,
+
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
15  * Lesser General Public License for more details.
+
16  *
+
17  * You should have received a copy of the GNU Lesser General Public
+
18  * License along with FFmpeg; if not, write to the Free Software
+
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
20  */
+
21 
+
22 /*
+
23  * CHANGES 01.2020
+
24  * - ffprobe support changes
+
25  * - AV_LOG_STDERR introduced
+
26  *
+
27  * CHANGES 12.2019
+
28  * - Concurrent execution support
+
29  *
+
30  * CHANGES 03.2019
+
31  * --------------------------------------------------------
+
32  * - config.h include removed
+
33  *
+
34  * CHANGES 08.2018
+
35  * --------------------------------------------------------
+
36  * - fftools_ prefix added to file name and include guards
+
37  *
+
38  * CHANGES 07.2018
+
39  * --------------------------------------------------------
+
40  * - Include guards renamed
+
41  * - Unused headers removed
+
42  */
+
43 
+
44 #ifndef FFTOOLS_CMDUTILS_H
+
45 #define FFTOOLS_CMDUTILS_H
+
46 
+
47 #include <stdint.h>
+
48 
+
49 #include "libavcodec/avcodec.h"
+
50 #include "libavfilter/avfilter.h"
+
51 #include "libavformat/avformat.h"
+
52 #include "libswscale/swscale.h"
+
53 
+
54 #ifdef _WIN32
+
55 #undef main /* We don't want SDL to override our main() */
+
56 #endif
+
57 
+
61 #define AV_LOG_STDERR -16
+
62 
+
66 extern __thread char *program_name;
+
67 
+
71 extern __thread int program_birth_year;
+
72 
+
73 extern __thread AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
+
74 extern __thread AVFormatContext *avformat_opts;
+
75 extern __thread AVDictionary *sws_dict;
+
76 extern __thread AVDictionary *swr_opts;
+
77 extern __thread AVDictionary *format_opts, *codec_opts, *resample_opts;
+
78 extern __thread int hide_banner;
+
79 extern __thread int find_stream_info;
+
80 
+
84 void register_exit(void (*cb)(int ret));
+
85 
+
89 void exit_program(int ret) av_noreturn;
+
90 
+
94 void init_dynload(void);
+
95 
+
100 void init_opts(void);
+
105 void uninit_opts(void);
+
106 
+
111 void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
+
112 
+
116 int opt_cpuflags(void *optctx, const char *opt, const char *arg);
+
117 
+
121 int opt_cpucount(void *optctx, const char *opt, const char *arg);
+
122 
+
127 int opt_default(void *optctx, const char *opt, const char *arg);
+
128 
+
132 int opt_loglevel(void *optctx, const char *opt, const char *arg);
+
133 
+
134 int opt_report(void *optctx, const char *opt, const char *arg);
+
135 
+
136 int opt_max_alloc(void *optctx, const char *opt, const char *arg);
+
137 
+
138 int opt_codec_debug(void *optctx, const char *opt, const char *arg);
+
139 
+
143 int opt_timelimit(void *optctx, const char *opt, const char *arg);
+
144 
+
158 double parse_number_or_die(const char *context, const char *numstr, int type,
+
159  double min, double max);
+
160 
+
175 int64_t parse_time_or_die(const char *context, const char *timestr,
+
176  int is_duration);
+
177 
+
178 typedef struct SpecifierOpt {
+
179  char *specifier;
+
180  union {
+
181  uint8_t *str;
+
182  int i;
+
183  int64_t i64;
+
184  uint64_t ui64;
+
185  float f;
+
186  double dbl;
+
187  } u;
+
188 } SpecifierOpt;
+
189 
+
190 typedef struct OptionDef {
+
191  const char *name;
+
192  int flags;
+
193 #define HAS_ARG 0x0001
+
194 #define OPT_BOOL 0x0002
+
195 #define OPT_EXPERT 0x0004
+
196 #define OPT_STRING 0x0008
+
197 #define OPT_VIDEO 0x0010
+
198 #define OPT_AUDIO 0x0020
+
199 #define OPT_INT 0x0080
+
200 #define OPT_FLOAT 0x0100
+
201 #define OPT_SUBTITLE 0x0200
+
202 #define OPT_INT64 0x0400
+
203 #define OPT_EXIT 0x0800
+
204 #define OPT_DATA 0x1000
+
205 #define OPT_PERFILE 0x2000 /* the option is per-file (currently ffmpeg-only).
+
206  implied by OPT_OFFSET or OPT_SPEC */
+
207 #define OPT_OFFSET 0x4000 /* option is specified as an offset in a passed optctx */
+
208 #define OPT_SPEC 0x8000 /* option is to be stored in an array of SpecifierOpt.
+
209  Implies OPT_OFFSET. Next element after the offset is
+
210  an int containing element count in the array. */
+
211 #define OPT_TIME 0x10000
+
212 #define OPT_DOUBLE 0x20000
+
213 #define OPT_INPUT 0x40000
+
214 #define OPT_OUTPUT 0x80000
+
215  union {
+
216  void *dst_ptr;
+
217  int (*func_arg)(void *, const char *, const char *);
+
218  size_t off;
+
219  } u;
+
220  const char *help;
+
221  const char *argname;
+
222 } OptionDef;
+
223 
+
233 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
+
234  int rej_flags, int alt_flags);
+
235 
+
240 void show_help_children(const AVClass *avClass, int flags);
+
241 
+
246 void show_help_default_ffmpeg(const char *opt, const char *arg);
+
247 void show_help_default_ffprobe(const char *opt, const char *arg);
+
248 
+
252 int show_help(void *optctx, const char *opt, const char *arg);
+
253 
+
266 void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
+
267  void (* parse_arg_function)(void *optctx, const char*));
+
268 
+
274 int parse_option(void *optctx, const char *opt, const char *arg,
+
275  const OptionDef *options);
+
276 
+
282 typedef struct Option {
+
283  const OptionDef *opt;
+
284  const char *key;
+
285  const char *val;
+
286 } Option;
+
287 
+
288 typedef struct OptionGroupDef {
+
290  const char *name;
+
295  const char *sep;
+
300  int flags;
+ +
302 
+
303 typedef struct OptionGroup {
+ +
305  const char *arg;
+
306 
+ +
308  int nb_opts;
+
309 
+
310  AVDictionary *codec_opts;
+
311  AVDictionary *format_opts;
+
312  AVDictionary *resample_opts;
+
313  AVDictionary *sws_dict;
+
314  AVDictionary *swr_opts;
+
315 } OptionGroup;
+
316 
+
321 typedef struct OptionGroupList {
+ +
323 
+ + + +
327 
+
328 typedef struct OptionParseContext {
+ +
330 
+ + +
333 
+
334  /* parsing state */
+ + +
337 
+
344 int parse_optgroup(void *optctx, OptionGroup *g);
+
345 
+
364 int split_commandline(OptionParseContext *octx, int argc, char *argv[],
+
365  const OptionDef *options,
+
366  const OptionGroupDef *groups, int nb_groups);
+
367 
+ +
372 
+
376 void parse_loglevel(int argc, char **argv, const OptionDef *options);
+
377 
+
381 int locate_option(int argc, char **argv, const OptionDef *options,
+
382  const char *optname);
+
383 
+
393 int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec);
+
394 
+
409 AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
+
410  AVFormatContext *s, AVStream *st, const AVCodec *codec);
+
411 
+
423 AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
+
424  AVDictionary *codec_opts);
+
425 
+
435 void print_error(const char *filename, int err);
+
436 
+
442 void show_banner(int argc, char **argv, const OptionDef *options);
+
443 
+
450 int show_version(void *optctx, const char *opt, const char *arg);
+
451 
+
457 int show_buildconf(void *optctx, const char *opt, const char *arg);
+
458 
+
464 int show_license(void *optctx, const char *opt, const char *arg);
+
465 
+
471 int show_formats(void *optctx, const char *opt, const char *arg);
+
472 
+
478 int show_muxers(void *optctx, const char *opt, const char *arg);
+
479 
+
485 int show_demuxers(void *optctx, const char *opt, const char *arg);
+
486 
+
492 int show_devices(void *optctx, const char *opt, const char *arg);
+
493 
+
494 #if CONFIG_AVDEVICE
+
495 
+
499 int show_sinks(void *optctx, const char *opt, const char *arg);
+
500 
+
505 int show_sources(void *optctx, const char *opt, const char *arg);
+
506 #endif
+
507 
+
513 int show_codecs(void *optctx, const char *opt, const char *arg);
+
514 
+
519 int show_decoders(void *optctx, const char *opt, const char *arg);
+
520 
+
525 int show_encoders(void *optctx, const char *opt, const char *arg);
+
526 
+
532 int show_filters(void *optctx, const char *opt, const char *arg);
+
533 
+
539 int show_bsfs(void *optctx, const char *opt, const char *arg);
+
540 
+
546 int show_protocols(void *optctx, const char *opt, const char *arg);
+
547 
+
553 int show_pix_fmts(void *optctx, const char *opt, const char *arg);
+
554 
+
560 int show_layouts(void *optctx, const char *opt, const char *arg);
+
561 
+
566 int show_sample_fmts(void *optctx, const char *opt, const char *arg);
+
567 
+
572 int show_colors(void *optctx, const char *opt, const char *arg);
+
573 
+
578 int read_yesno(void);
+
579 
+
598 FILE *get_preset_file(char *filename, size_t filename_size,
+
599  const char *preset_name, int is_path, const char *codec_name);
+
600 
+
611 void *grow_array(void *array, int elem_size, int *size, int new_size);
+
612 
+
613 #define media_type_string av_get_media_type_string
+
614 
+
615 #define GROW_ARRAY(array, nb_elems)\
+
616  array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
+
617 
+
618 #define GET_PIX_FMT_NAME(pix_fmt)\
+
619  const char *name = av_get_pix_fmt_name(pix_fmt);
+
620 
+
621 #define GET_CODEC_NAME(id)\
+
622  const char *name = avcodec_descriptor_get(id)->name;
+
623 
+
624 #define GET_SAMPLE_FMT_NAME(sample_fmt)\
+
625  const char *name = av_get_sample_fmt_name(sample_fmt)
+
626 
+
627 #define GET_SAMPLE_RATE_NAME(rate)\
+
628  char name[16];\
+
629  snprintf(name, sizeof(name), "%d", rate);
+
630 
+
631 #define GET_CH_LAYOUT_NAME(ch_layout)\
+
632  char name[16];\
+
633  snprintf(name, sizeof(name), "0x%" PRIx64, ch_layout);
+
634 
+
635 #define GET_CH_LAYOUT_DESC(ch_layout)\
+
636  char name[128];\
+
637  av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
+
638 
+
639 double get_rotation(AVStream *st);
+
640 
+
641 #endif /* FFTOOLS_CMDUTILS_H */
+
+
init_opts
void init_opts(void)
+
OptionGroup
struct OptionGroup OptionGroup
+
OptionGroupList::nb_groups
int nb_groups
Definition: fftools_cmdutils.h:322
+
show_encoders
int show_encoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1697
+
show_buildconf
int show_buildconf(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1250
+
SpecifierOpt
struct SpecifierOpt SpecifierOpt
+
show_demuxers
int show_demuxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1411
+
program_name
__thread char * program_name
Definition: fftools_cmdutils.c:97
+
OptionDef::flags
int flags
Definition: fftools_cmdutils.h:192
+
parse_optgroup
int parse_optgroup(void *optctx, OptionGroup *g)
Definition: fftools_cmdutils.c:444
+
show_help_default_ffmpeg
void show_help_default_ffmpeg(const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3296
+
Option::val
const char * val
Definition: fftools_cmdutils.h:282
+
parse_number_or_die
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
Definition: fftools_cmdutils.c:171
+
show_protocols
int show_protocols(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1715
+
opt_timelimit
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1121
+
avformat_opts
__thread AVFormatContext * avformat_opts
+
show_help_default_ffprobe
void show_help_default_ffprobe(const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3422
+
Option
Definition: fftools_cmdutils.h:279
+
OptionDef::name
const char * name
Definition: fftools_cmdutils.h:191
+
filter_codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Definition: fftools_cmdutils.c:2156
+
avcodec_opts
__thread AVCodecContext * avcodec_opts[AVMEDIA_TYPE_NB]
+
grow_array
void * grow_array(void *array, int elem_size, int *size, int new_size)
Definition: fftools_cmdutils.c:2234
+
opt_max_alloc
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1107
+
show_muxers
int show_muxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1406
+
parse_options
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *))
+
show_decoders
int show_decoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1691
+
init_dynload
void init_dynload(void)
Definition: fftools_cmdutils.c:144
+
find_stream_info
__thread int find_stream_info
Definition: fftools_ffmpeg_opt.c:203
+
opt_cpucount
int opt_cpucount(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:893
+
get_preset_file
FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
Definition: fftools_cmdutils.c:2098
+
OptionGroup::codec_opts
AVDictionary * codec_opts
Definition: fftools_cmdutils.h:307
+
OptionDef::argname
const char * argname
Definition: fftools_cmdutils.h:218
+
show_help
int show_help(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:2042
+
SpecifierOpt::i64
int64_t i64
Definition: fftools_cmdutils.h:183
+
sws_dict
__thread AVDictionary * sws_dict
Definition: fftools_cmdutils.c:100
+
OptionGroupList
Definition: fftools_cmdutils.h:318
+
parse_option
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Definition: fftools_cmdutils.c:376
+
OptionGroup::swr_opts
AVDictionary * swr_opts
Definition: fftools_cmdutils.h:311
+
opt_report
int opt_report(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1102
+
OptionGroup::sws_dict
AVDictionary * sws_dict
Definition: fftools_cmdutils.h:310
+
SpecifierOpt::dbl
double dbl
Definition: fftools_cmdutils.h:186
+
opt_codec_debug
int opt_codec_debug(void *optctx, const char *opt, const char *arg)
+
OptionDef::off
size_t off
Definition: fftools_cmdutils.h:215
+
OptionGroup::opts
Option * opts
Definition: fftools_cmdutils.h:304
+
parse_time_or_die
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
Definition: fftools_cmdutils.c:192
+
program_birth_year
__thread int program_birth_year
Definition: fftools_cmdutils.c:98
+
SpecifierOpt::i
int i
Definition: fftools_cmdutils.h:182
+
log_callback_help
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
+
swr_opts
__thread AVDictionary * swr_opts
Definition: fftools_cmdutils.c:101
+
OptionParseContext::nb_groups
int nb_groups
Definition: fftools_cmdutils.h:329
+
show_help_children
void show_help_children(const AVClass *avClass, int flags)
Definition: fftools_cmdutils.c:233
+
show_codecs
int show_codecs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1596
+
OptionGroupDef::sep
const char * sep
Definition: fftools_cmdutils.h:292
+
OptionGroupList::groups
OptionGroup * groups
Definition: fftools_cmdutils.h:321
+
show_version
int show_version(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1242
+
show_sample_fmts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1853
+
OptionGroup::arg
const char * arg
Definition: fftools_cmdutils.h:302
+
show_filters
int show_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1730
+
OptionDef::u
union OptionDef::@1 u
+
uninit_opts
void uninit_opts(void)
Definition: fftools_cmdutils.c:115
+
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:536
+
SpecifierOpt
Definition: fftools_cmdutils.h:178
+
opt_loglevel
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:919
+
OptionParseContext
Definition: fftools_cmdutils.h:325
+
split_commandline
int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
Definition: fftools_cmdutils.c:770
+
uninit_parse_context
void uninit_parse_context(OptionParseContext *octx)
Definition: fftools_cmdutils.c:744
+
locate_option
int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)
Definition: fftools_cmdutils.c:477
+
OptionGroupDef
Definition: fftools_cmdutils.h:285
+
read_yesno
int read_yesno(void)
Definition: fftools_cmdutils.c:2087
+
OptionParseContext::groups
OptionGroupList * groups
Definition: fftools_cmdutils.h:328
+
Option::opt
const OptionDef * opt
Definition: fftools_cmdutils.h:280
+
hide_banner
__thread int hide_banner
Definition: fftools_cmdutils.c:106
+
show_colors
int show_colors(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1777
+
OptionGroup::nb_opts
int nb_opts
Definition: fftools_cmdutils.h:305
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
SpecifierOpt::f
float f
Definition: fftools_cmdutils.h:185
+
format_opts
__thread AVDictionary * format_opts
Definition: fftools_cmdutils.c:102
+
show_bsfs
int show_bsfs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1703
+
get_rotation
double get_rotation(AVStream *st)
Definition: fftools_cmdutils.c:2253
+
opt_cpuflags
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:881
+
show_pix_fmts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1791
+
OptionDef
struct OptionDef OptionDef
+
OptionGroup::group_def
const OptionGroupDef * group_def
Definition: fftools_cmdutils.h:301
+
OptionDef
Definition: fftools_cmdutils.h:190
+
SpecifierOpt::specifier
char * specifier
Definition: fftools_cmdutils.h:179
+
resample_opts
__thread AVDictionary * resample_opts
Definition: fftools_cmdutils.h:77
+
OptionGroupDef::name
const char * name
Definition: fftools_cmdutils.h:287
+
OptionDef::func_arg
int(* func_arg)(void *, const char *, const char *)
Definition: fftools_cmdutils.h:214
+
show_license
int show_license(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1257
+
OptionGroupList::group_def
const OptionGroupDef * group_def
Definition: fftools_cmdutils.h:319
+
OptionGroup::resample_opts
AVDictionary * resample_opts
Definition: fftools_cmdutils.h:309
+
Option::key
const char * key
Definition: fftools_cmdutils.h:281
+
register_exit
void register_exit(void(*cb)(int ret))
Definition: fftools_cmdutils.c:155
+
OptionGroup::format_opts
AVDictionary * format_opts
Definition: fftools_cmdutils.h:308
+
SpecifierOpt::u
union SpecifierOpt::@0 u
+
SpecifierOpt::str
uint8_t * str
Definition: fftools_cmdutils.h:181
+
OptionGroupList
struct OptionGroupList OptionGroupList
+
OptionDef::dst_ptr
void * dst_ptr
Definition: fftools_cmdutils.h:213
+
show_layouts
int show_layouts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1824
+
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:1231
+
OptionParseContext::cur_group
OptionGroup cur_group
Definition: fftools_cmdutils.h:332
+
codec_opts
__thread AVDictionary * codec_opts
Definition: fftools_cmdutils.h:77
+
Option
struct Option Option
+
OptionParseContext::global_opts
OptionGroup global_opts
Definition: fftools_cmdutils.h:326
+
OptionGroupDef::flags
int flags
Definition: fftools_cmdutils.h:297
+
OptionGroupDef
struct OptionGroupDef OptionGroupDef
+
OptionDef::help
const char * help
Definition: fftools_cmdutils.h:217
+
OptionGroup
Definition: fftools_cmdutils.h:300
+
opt_default
int opt_default(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:575
+
OptionParseContext
struct OptionParseContext OptionParseContext
+
show_formats
int show_formats(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1401
+
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Definition: fftools_cmdutils.c:2148
+
exit_program
void exit_program(int ret) av_noreturn
Definition: fftools_cmdutils.c:160
+
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Definition: fftools_cmdutils.c:204
+
setup_find_stream_info_opts
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Definition: fftools_cmdutils.c:2214
+
SpecifierOpt::ui64
uint64_t ui64
Definition: fftools_cmdutils.h:184
+
show_devices
int show_devices(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1416
+
print_error
void print_error(const char *filename, int err)
Definition: fftools_cmdutils.c:1134
+ + + + diff --git a/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp.html b/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp.html new file mode 100644 index 0000000..65cc3b4 --- /dev/null +++ b/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp.html @@ -0,0 +1,131 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKit.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions | +Variables
+
+
FFmpegKit.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

void * ffmpegKitInitialize ()
 
+ + + +

+Variables

const void * _ffmpegKitInitializeri {ffmpegKitInitialize()}
 
+

Function Documentation

+ +

◆ ffmpegKitInitialize()

+ +
+
+ + + + + + + +
void* ffmpegKitInitialize ()
+
+ +

Definition at line 762 of file FFmpegKitConfig.cpp.

+ +
+
+

Variable Documentation

+ +

◆ _ffmpegKitInitializeri

+ +
+
+ + + + +
const void* _ffmpegKitInitializeri {ffmpegKitInitialize()}
+
+ +

Definition at line 30 of file FFmpegKit.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp_source.html b/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp_source.html new file mode 100644 index 0000000..5c53bac --- /dev/null +++ b/docs/linux/html/d8/d78/_f_fmpeg_kit_8cpp_source.html @@ -0,0 +1,185 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKit.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegKit.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 extern "C" {
+
21  #include "fftools_ffmpeg.h"
+
22 }
+
23 #include "ArchDetect.h"
+
24 #include "FFmpegKit.h"
+
25 #include "FFmpegKitConfig.h"
+
26 #include "Packages.h"
+
27 
+
28 extern void* ffmpegKitInitialize();
+
29 
+ +
31 
+
32 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::executeWithArguments(const std::shared_ptr<std::list<std::string>> arguments) {
+
33  auto session = ffmpegkit::FFmpegSession::create(arguments);
+ +
35  return session;
+
36 }
+
37 
+
38 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback) {
+
39  auto session = ffmpegkit::FFmpegSession::create(arguments, completeCallback);
+ +
41  return session;
+
42 }
+
43 
+
44 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) {
+
45  auto session = ffmpegkit::FFmpegSession::create(arguments, completeCallback, logCallback, statisticsCallback);
+ +
47  return session;
+
48 }
+
49 
+
50 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::execute(const std::string command) {
+ + +
53  return session;
+
54 }
+
55 
+
56 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback) {
+
57  auto session = ffmpegkit::FFmpegSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback);
+ +
59  return session;
+
60 }
+
61 
+
62 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) {
+
63  auto session = ffmpegkit::FFmpegSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback, statisticsCallback);
+ +
65  return session;
+
66 }
+
67 
+ +
69 
+
70  /*
+
71  * ZERO (0) IS A SPECIAL SESSION ID
+
72  * WHEN IT IS PASSED TO THIS METHOD, A SIGINT IS GENERATED WHICH CANCELS ALL ONGOING SESSIONS
+
73  */
+ +
75 }
+
76 
+
77 void ffmpegkit::FFmpegKit::cancel(const long sessionId) {
+
78  cancel_operation(sessionId);
+
79 }
+
80 
+
81 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFmpegSession>>> ffmpegkit::FFmpegKit::listSessions() {
+ +
83 }
+
+
ffmpegkit::FFmpegSession::create
static std::shared_ptr< ffmpegkit::FFmpegSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegSession.cpp:27
+
ffmpegkit::FFmpegKit::executeAsync
static std::shared_ptr< ffmpegkit::FFmpegSession > executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback)
Definition: FFmpegKit.cpp:56
+
ffmpegkit::FFmpegKitConfig::getFFmpegSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > getFFmpegSessions()
Definition: FFmpegKitConfig.cpp:1255
+
fftools_ffmpeg.h
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
cancel_operation
void cancel_operation(long id)
Definition: fftools_ffmpeg.c:5199
+
ffmpegKitInitialize
void * ffmpegKitInitialize()
Definition: FFmpegKitConfig.cpp:762
+
FFmpegKit.h
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFmpegKit::execute
static std::shared_ptr< ffmpegkit::FFmpegSession > execute(const std::string command)
Definition: FFmpegKit.cpp:50
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
Packages.h
+
ffmpegkit::FFmpegKitConfig::parseArguments
static std::shared_ptr< std::list< std::string > > parseArguments(const std::string &command)
Definition: FFmpegKitConfig.cpp:1349
+
ArchDetect.h
+
FFmpegKitConfig.h
+
ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute
static void asyncFFmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1044
+
ffmpegkit::FFmpegKit::listSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > listSessions()
Definition: FFmpegKit.cpp:81
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
ffmpegkit::FFmpegKitConfig::ffmpegExecute
static void ffmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1003
+
_ffmpegKitInitializeri
const void * _ffmpegKitInitializeri
Definition: FFmpegKit.cpp:30
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFmpegKit::executeWithArgumentsAsync
static std::shared_ptr< ffmpegkit::FFmpegSession > executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback)
Definition: FFmpegKit.cpp:38
+
ffmpegkit::FFmpegKit::cancel
static void cancel()
Definition: FFmpegKit.cpp:68
+
ffmpegkit::FFmpegKit::executeWithArguments
static std::shared_ptr< ffmpegkit::FFmpegSession > executeWithArguments(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKit.cpp:32
+ + + + diff --git a/docs/linux/html/d8/d78/_media_information_8h.html b/docs/linux/html/d8/d78/_media_information_8h.html new file mode 100644 index 0000000..25385f3 --- /dev/null +++ b/docs/linux/html/d8/d78/_media_information_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: MediaInformation.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
MediaInformation.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::MediaInformation
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d8/d78/_media_information_8h_source.html b/docs/linux/html/d8/d78/_media_information_8h_source.html new file mode 100644 index 0000000..9b0b459 --- /dev/null +++ b/docs/linux/html/d8/d78/_media_information_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +FFmpegKit Linux API: MediaInformation.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformation.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_MEDIA_INFORMATION_H
+
21 #define FFMPEG_KIT_MEDIA_INFORMATION_H
+
22 
+
23 #include "Chapter.h"
+
24 #include "StreamInformation.h"
+
25 #include <memory>
+
26 #include <vector>
+
27 
+
28 namespace ffmpegkit {
+
29 
+ +
34  public:
+
35  static constexpr const char* KeyMediaProperties = "format";
+
36  static constexpr const char* KeyFilename = "filename";
+
37  static constexpr const char* KeyFormat = "format_name";
+
38  static constexpr const char* KeyFormatLong = "format_long_name";
+
39  static constexpr const char* KeyStartTime = "start_time";
+
40  static constexpr const char* KeyDuration = "duration";
+
41  static constexpr const char* KeySize = "size";
+
42  static constexpr const char* KeyBitRate = "bit_rate";
+
43  static constexpr const char* KeyTags = "tags";
+
44 
+
45  MediaInformation(std::shared_ptr<rapidjson::Value> mediaInformationValue, std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> streams, std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> chapters);
+
46 
+
52  std::shared_ptr<std::string> getFilename();
+
53 
+
59  std::shared_ptr<std::string> getFormat();
+
60 
+
66  std::shared_ptr<std::string> getLongFormat();
+
67 
+
73  std::shared_ptr<std::string> getDuration();
+
74 
+
80  std::shared_ptr<std::string> getStartTime();
+
81 
+
87  std::shared_ptr<std::string> getSize();
+
88 
+
94  std::shared_ptr<std::string> getBitrate();
+
95 
+
101  std::shared_ptr<rapidjson::Value> getTags();
+
102 
+
108  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> getStreams();
+
109 
+
115  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> getChapters();
+
116 
+
122  std::shared_ptr<std::string> getStringProperty(const char* key);
+
123 
+
129  std::shared_ptr<int64_t> getNumberProperty(const char* key);
+
130 
+
136  std::shared_ptr<rapidjson::Value> getProperties(const char* key);
+
137 
+
143  std::shared_ptr<rapidjson::Value> getMediaProperties();
+
144 
+
150  std::shared_ptr<rapidjson::Value> getAllProperties();
+
151 
+
152  private:
+
153  std::shared_ptr<rapidjson::Value> _mediaInformationValue;
+
154  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation>>> _streams;
+
155  std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter>>> _chapters;
+
156  };
+
157 
+
158 }
+
159 
+
160 #endif // FFMPEG_KIT_MEDIA_INFORMATION_H
+
+
ffmpegkit::MediaInformation::KeyFilename
static constexpr const char * KeyFilename
Definition: MediaInformation.h:36
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::MediaInformation::KeyBitRate
static constexpr const char * KeyBitRate
Definition: MediaInformation.h:42
+
ffmpegkit::MediaInformation::getChapters
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > getChapters()
Definition: MediaInformation.cpp:69
+
StreamInformation.h
+
ffmpegkit::MediaInformation::KeyStartTime
static constexpr const char * KeyStartTime
Definition: MediaInformation.h:39
+
ffmpegkit::MediaInformation::getStartTime
std::shared_ptr< std::string > getStartTime()
Definition: MediaInformation.cpp:38
+
ffmpegkit::MediaInformation::KeyFormat
static constexpr const char * KeyFormat
Definition: MediaInformation.h:37
+
ffmpegkit::MediaInformation::KeyMediaProperties
static constexpr const char * KeyMediaProperties
Definition: MediaInformation.h:35
+
ffmpegkit::MediaInformation::KeyTags
static constexpr const char * KeyTags
Definition: MediaInformation.h:43
+
ffmpegkit::MediaInformation::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: MediaInformation.cpp:111
+
ffmpegkit::MediaInformation::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: MediaInformation.cpp:73
+
ffmpegkit::MediaInformation::getDuration
std::shared_ptr< std::string > getDuration()
Definition: MediaInformation.cpp:42
+
ffmpegkit::MediaInformation::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: MediaInformation.cpp:91
+
ffmpegkit::MediaInformation::getFilename
std::shared_ptr< std::string > getFilename()
Definition: MediaInformation.cpp:26
+
ffmpegkit::MediaInformation::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: MediaInformation.cpp:54
+
Chapter.h
+
ffmpegkit::MediaInformation::MediaInformation
MediaInformation(std::shared_ptr< rapidjson::Value > mediaInformationValue, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation >>> streams, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter >>> chapters)
Definition: MediaInformation.cpp:22
+
ffmpegkit::MediaInformation
Definition: MediaInformation.h:33
+
ffmpegkit::MediaInformation::KeySize
static constexpr const char * KeySize
Definition: MediaInformation.h:41
+
ffmpegkit::MediaInformation::getMediaProperties
std::shared_ptr< rapidjson::Value > getMediaProperties()
Definition: MediaInformation.cpp:101
+
ffmpegkit::MediaInformation::getStreams
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > getStreams()
Definition: MediaInformation.cpp:65
+
ffmpegkit::MediaInformation::getLongFormat
std::shared_ptr< std::string > getLongFormat()
Definition: MediaInformation.cpp:34
+
ffmpegkit::MediaInformation::KeyFormatLong
static constexpr const char * KeyFormatLong
Definition: MediaInformation.h:38
+
ffmpegkit::MediaInformation::getBitrate
std::shared_ptr< std::string > getBitrate()
Definition: MediaInformation.cpp:50
+
ffmpegkit::MediaInformation::getSize
std::shared_ptr< std::string > getSize()
Definition: MediaInformation.cpp:46
+
ffmpegkit::MediaInformation::getFormat
std::shared_ptr< std::string > getFormat()
Definition: MediaInformation.cpp:30
+
ffmpegkit::MediaInformation::_streams
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > _streams
Definition: MediaInformation.h:154
+
ffmpegkit::MediaInformation::_chapters
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > _chapters
Definition: MediaInformation.h:155
+
ffmpegkit::MediaInformation::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: MediaInformation.cpp:82
+
ffmpegkit::MediaInformation::_mediaInformationValue
std::shared_ptr< rapidjson::Value > _mediaInformationValue
Definition: MediaInformation.h:153
+
ffmpegkit::MediaInformation::KeyDuration
static constexpr const char * KeyDuration
Definition: MediaInformation.h:40
+ + + + diff --git a/docs/linux/html/d8/d78/fftools__ffprobe_8c.html b/docs/linux/html/d8/d78/fftools__ffprobe_8c.html new file mode 100644 index 0000000..1800a56 --- /dev/null +++ b/docs/linux/html/d8/d78/fftools__ffprobe_8c.html @@ -0,0 +1,8178 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffprobe.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Macros | +Typedefs | +Enumerations | +Functions | +Variables
+
+
fftools_ffprobe.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  InputStream
 
struct  InputFile
 
struct  ReadInterval
 
struct  section
 
struct  LogBuffer
 
struct  unit_value
 
struct  Writer
 
struct  WriterContext
 
struct  DefaultContext
 
struct  CompactContext
 
struct  FlatContext
 
struct  INIContext
 
struct  JSONContext
 
struct  XMLContext
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define pthread_mutex_lock(a)   do{}while(0)
 
#define pthread_mutex_unlock(a)   do{}while(0)
 
#define SHOW_OPTIONAL_FIELDS_AUTO   -1
 
#define SHOW_OPTIONAL_FIELDS_NEVER   0
 
#define SHOW_OPTIONAL_FIELDS_ALWAYS   1
 
#define SECTION_MAX_NB_CHILDREN   10
 
#define SECTION_FLAG_IS_WRAPPER   1
 the section only contains other sections, but has no data at its own level More...
 
#define SECTION_FLAG_IS_ARRAY   2
 the section contains an array of elements of the same type More...
 
#define SECTION_FLAG_HAS_VARIABLE_FIELDS   4
 
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS   1
 
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER   2
 
#define SECTION_MAX_NB_LEVELS   10
 
#define OFFSET(x)   offsetof(WriterContext, x)
 
#define PRINT_STRING_OPT   1
 
#define PRINT_STRING_VALIDATE   2
 
#define MAX_REGISTERED_WRITERS_NB   64
 
#define DEFINE_WRITER_CLASS(name)
 
#define OFFSET(x)   offsetof(DefaultContext, x)
 
#define OFFSET(x)   offsetof(CompactContext, x)
 
#define OFFSET(x)   offsetof(CompactContext, x)
 
#define OFFSET(x)   offsetof(FlatContext, x)
 
#define OFFSET(x)   offsetof(INIContext, x)
 
#define OFFSET(x)   offsetof(JSONContext, x)
 
#define JSON_INDENT()   av_log(NULL, AV_LOG_STDERR, "%*c", json->indent_level * 4, ' ')
 
#define OFFSET(x)   offsetof(XMLContext, x)
 
#define CHECK_COMPLIANCE(opt, opt_name)
 
#define XML_INDENT()   av_log(NULL, AV_LOG_STDERR, "%*c", xml->indent_level * 4, ' ')
 
#define print_fmt(k, f, ...)
 
#define print_int(k, v)   writer_print_integer(w, k, v)
 
#define print_q(k, v, s)   writer_print_rational(w, k, v, s)
 
#define print_str(k, v)   writer_print_string(w, k, v, 0)
 
#define print_str_opt(k, v)   writer_print_string(w, k, v, PRINT_STRING_OPT)
 
#define print_str_validate(k, v)   writer_print_string(w, k, v, PRINT_STRING_VALIDATE)
 
#define print_time(k, v, tb)   writer_print_time(w, k, v, tb, 0)
 
#define print_ts(k, v)   writer_print_ts(w, k, v, 0)
 
#define print_duration_time(k, v, tb)   writer_print_time(w, k, v, tb, 1)
 
#define print_duration_ts(k, v)   writer_print_ts(w, k, v, 1)
 
#define print_val(k, v, u)
 
#define print_section_header(s)   writer_print_section_header(w, s)
 
#define print_section_footer(s)   writer_print_section_footer(w, s)
 
#define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n)
 
#define PRINT_DISPOSITION(flagname, name)
 
#define CHECK_END   if (ret < 0) goto end
 
#define SHOW_LIB_VERSION(libname, LIBNAME)
 
#define PRINT_PIX_FMT_FLAG(flagname, name)
 
#define DEFINE_OPT_SHOW_SECTION(section, target_section_id)
 
#define SET_DO_SHOW(id, varname)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef struct InputStream InputStream
 
typedef struct InputFile InputFile
 
typedef struct ReadInterval ReadInterval
 
typedef struct LogBuffer LogBuffer
 
typedef struct WriterContext WriterContext
 
typedef struct Writer Writer
 
typedef struct DefaultContext DefaultContext
 
typedef struct CompactContext CompactContext
 
typedef struct FlatContext FlatContext
 
typedef struct INIContext INIContext
 
typedef struct JSONContext JSONContext
 
typedef struct XMLContext XMLContext
 
+ + + + + +

+Enumerations

enum  SectionID {
+  SECTION_ID_NONE = -1, +SECTION_ID_CHAPTER, +SECTION_ID_CHAPTER_TAGS, +SECTION_ID_CHAPTERS, +
+  SECTION_ID_ERROR, +SECTION_ID_FORMAT, +SECTION_ID_FORMAT_TAGS, +SECTION_ID_FRAME, +
+  SECTION_ID_FRAMES, +SECTION_ID_FRAME_TAGS, +SECTION_ID_FRAME_SIDE_DATA_LIST, +SECTION_ID_FRAME_SIDE_DATA, +
+  SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST, +SECTION_ID_FRAME_SIDE_DATA_TIMECODE, +SECTION_ID_FRAME_LOG, +SECTION_ID_FRAME_LOGS, +
+  SECTION_ID_LIBRARY_VERSION, +SECTION_ID_LIBRARY_VERSIONS, +SECTION_ID_PACKET, +SECTION_ID_PACKET_TAGS, +
+  SECTION_ID_PACKETS, +SECTION_ID_PACKETS_AND_FRAMES, +SECTION_ID_PACKET_SIDE_DATA_LIST, +SECTION_ID_PACKET_SIDE_DATA, +
+  SECTION_ID_PIXEL_FORMAT, +SECTION_ID_PIXEL_FORMAT_FLAGS, +SECTION_ID_PIXEL_FORMAT_COMPONENT, +SECTION_ID_PIXEL_FORMAT_COMPONENTS, +
+  SECTION_ID_PIXEL_FORMATS, +SECTION_ID_PROGRAM_STREAM_DISPOSITION, +SECTION_ID_PROGRAM_STREAM_TAGS, +SECTION_ID_PROGRAM, +
+  SECTION_ID_PROGRAM_STREAMS, +SECTION_ID_PROGRAM_STREAM, +SECTION_ID_PROGRAM_TAGS, +SECTION_ID_PROGRAM_VERSION, +
+  SECTION_ID_PROGRAMS, +SECTION_ID_ROOT, +SECTION_ID_STREAM, +SECTION_ID_STREAM_DISPOSITION, +
+  SECTION_ID_STREAMS, +SECTION_ID_STREAM_TAGS, +SECTION_ID_STREAM_SIDE_DATA_LIST, +SECTION_ID_STREAM_SIDE_DATA, +
+  SECTION_ID_SUBTITLE +
+ }
 
enum  StringValidation { WRITER_STRING_VALIDATION_FAIL, +WRITER_STRING_VALIDATION_REPLACE, +WRITER_STRING_VALIDATION_IGNORE, +WRITER_STRING_VALIDATION_NB + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

static void log_callback (void *ptr, int level, const char *fmt, va_list vl)
 
static void ffprobe_cleanup (int ret)
 
static char * value_string (char *buf, int buf_size, struct unit_value uv)
 
static const char * writer_get_name (void *p)
 
static void * writer_child_next (void *obj, void *prev)
 
static void writer_close (WriterContext **wctx)
 
static void bprint_bytes (AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size)
 
static int writer_open (WriterContext **wctx, const Writer *writer, const char *args, const struct section *sections, int nb_sections)
 
static void writer_print_section_header (WriterContext *wctx, int section_id)
 
static void writer_print_section_footer (WriterContext *wctx)
 
static void writer_print_integer (WriterContext *wctx, const char *key, long long int val)
 
static int validate_string (WriterContext *wctx, char **dstp, const char *src)
 
static int writer_print_string (WriterContext *wctx, const char *key, const char *val, int flags)
 
static void writer_print_rational (WriterContext *wctx, const char *key, AVRational q, char sep)
 
static void writer_print_time (WriterContext *wctx, const char *key, int64_t ts, const AVRational *time_base, int is_duration)
 
static void writer_print_ts (WriterContext *wctx, const char *key, int64_t ts, int is_duration)
 
static void writer_print_data (WriterContext *wctx, const char *name, uint8_t *data, int size)
 
static void writer_print_data_hash (WriterContext *wctx, const char *name, uint8_t *data, int size)
 
static void writer_print_integers (WriterContext *wctx, const char *name, uint8_t *data, int size, const char *format, int columns, int bytes, int offset_add)
 
static int writer_register (const Writer *writer)
 
static const Writerwriter_get_by_name (const char *name)
 
 DEFINE_WRITER_CLASS (default)
 
static char * upcase_string (char *dst, size_t dst_size, const char *src)
 
static void default_print_section_header (WriterContext *wctx)
 
static void default_print_section_footer (WriterContext *wctx)
 
static void default_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void default_print_int (WriterContext *wctx, const char *key, long long int value)
 
static const char * c_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 
static const char * csv_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 
static const char * none_escape_str (AVBPrint *dst, const char *src, const char sep, void *log_ctx)
 
 DEFINE_WRITER_CLASS (compact)
 
static av_cold int compact_init (WriterContext *wctx)
 
static void compact_print_section_header (WriterContext *wctx)
 
static void compact_print_section_footer (WriterContext *wctx)
 
static void compact_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void compact_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (csv)
 
 DEFINE_WRITER_CLASS (flat)
 
static av_cold int flat_init (WriterContext *wctx)
 
static const char * flat_escape_key_str (AVBPrint *dst, const char *src, const char sep)
 
static const char * flat_escape_value_str (AVBPrint *dst, const char *src)
 
static void flat_print_section_header (WriterContext *wctx)
 
static void flat_print_int (WriterContext *wctx, const char *key, long long int value)
 
static void flat_print_str (WriterContext *wctx, const char *key, const char *value)
 
 DEFINE_WRITER_CLASS (ini)
 
static char * ini_escape_str (AVBPrint *dst, const char *src)
 
static void ini_print_section_header (WriterContext *wctx)
 
static void ini_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void ini_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (json)
 
static av_cold int json_init (WriterContext *wctx)
 
static const char * json_escape_str (AVBPrint *dst, const char *src, void *log_ctx)
 
static void json_print_section_header (WriterContext *wctx)
 
static void json_print_section_footer (WriterContext *wctx)
 
static void json_print_item_str (WriterContext *wctx, const char *key, const char *value)
 
static void json_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void json_print_int (WriterContext *wctx, const char *key, long long int value)
 
 DEFINE_WRITER_CLASS (xml)
 
static av_cold int xml_init (WriterContext *wctx)
 
static void xml_print_section_header (WriterContext *wctx)
 
static void xml_print_section_footer (WriterContext *wctx)
 
static void xml_print_str (WriterContext *wctx, const char *key, const char *value)
 
static void xml_print_int (WriterContext *wctx, const char *key, long long int value)
 
static void writer_register_all (void)
 
static int show_tags (WriterContext *w, AVDictionary *tags, int section_id)
 
static void print_dynamic_hdr10_plus (WriterContext *w, const AVDynamicHDRPlus *metadata)
 
static void print_pkt_side_data (WriterContext *w, AVCodecParameters *par, const AVPacketSideData *side_data, int nb_side_data, SectionID id_data_list, SectionID id_data)
 
static void print_color_range (WriterContext *w, enum AVColorRange color_range)
 
static void print_color_space (WriterContext *w, enum AVColorSpace color_space)
 
static void print_primaries (WriterContext *w, enum AVColorPrimaries color_primaries)
 
static void print_color_trc (WriterContext *w, enum AVColorTransferCharacteristic color_trc)
 
static void print_chroma_location (WriterContext *w, enum AVChromaLocation chroma_location)
 
static void clear_log (int need_lock)
 
static int show_log (WriterContext *w, int section_ids, int section_id, int log_level)
 
static void show_packet (WriterContext *w, InputFile *ifile, AVPacket *pkt, int packet_idx)
 
static void show_subtitle (WriterContext *w, AVSubtitle *sub, AVStream *stream, AVFormatContext *fmt_ctx)
 
static void show_frame (WriterContext *w, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
 
static av_always_inline int process_frame (WriterContext *w, InputFile *ifile, AVFrame *frame, AVPacket *pkt, int *packet_new)
 
static void log_read_interval (const ReadInterval *interval, void *log_ctx, int log_level)
 
static int read_interval_packets (WriterContext *w, InputFile *ifile, const ReadInterval *interval, int64_t *cur_ts)
 
static int read_packets (WriterContext *w, InputFile *ifile)
 
static int show_stream (WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int in_program)
 
static int show_streams (WriterContext *w, InputFile *ifile)
 
static int show_program (WriterContext *w, InputFile *ifile, AVProgram *program)
 
static int show_programs (WriterContext *w, InputFile *ifile)
 
static int show_chapters (WriterContext *w, InputFile *ifile)
 
static int show_format (WriterContext *w, InputFile *ifile)
 
static void show_error (WriterContext *w, int err)
 
static int open_input_file (InputFile *ifile, const char *filename, const char *print_filename)
 
static void close_input_file (InputFile *ifile)
 
static int probe_file (WriterContext *wctx, const char *filename, const char *print_filename)
 
static void show_usage (void)
 
static void ffprobe_show_program_version (WriterContext *w)
 
static void ffprobe_show_library_versions (WriterContext *w)
 
static void ffprobe_show_pixel_formats (WriterContext *w)
 
static int opt_show_optional_fields (void *optctx, const char *opt, const char *arg)
 
static int opt_format (void *optctx, const char *opt, const char *arg)
 
static void mark_section_show_entries (SectionID section_id, int show_all_entries, AVDictionary *entries)
 
static int match_section (const char *section_name, int show_all_entries, AVDictionary *entries)
 
static int opt_show_entries (void *optctx, const char *opt, const char *arg)
 
static int opt_show_format_entry (void *optctx, const char *opt, const char *arg)
 
static void opt_input_file (void *optctx, const char *arg)
 
static int opt_input_file_i (void *optctx, const char *opt, const char *arg)
 
static int opt_print_filename (void *optctx, const char *opt, const char *arg)
 
void show_help_default_ffprobe (const char *opt, const char *arg)
 
static int parse_read_interval (const char *interval_spec, ReadInterval *interval)
 
static int parse_read_intervals (const char *intervals_spec)
 
static int opt_read_intervals (void *optctx, const char *opt, const char *arg)
 
static int opt_pretty (void *optctx, const char *opt, const char *arg)
 
static void print_section (SectionID id, int level)
 
static int opt_sections (void *optctx, const char *opt, const char *arg)
 
static int opt_show_versions (void *optctx, const char *opt, const char *arg)
 
static int check_section_show_entries (int section_id)
 
void ffprobe_var_cleanup ()
 
int ffprobe_execute (int argc, char **argv)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

__thread int do_bitexact = 0
 
__thread int do_count_frames = 0
 
__thread int do_count_packets = 0
 
__thread int do_read_frames = 0
 
__thread int do_read_packets = 0
 
__thread int do_show_chapters = 0
 
__thread int do_show_error = 0
 
__thread int do_show_format = 0
 
__thread int do_show_frames = 0
 
__thread int do_show_packets = 0
 
__thread int do_show_programs = 0
 
__thread int do_show_streams = 0
 
__thread int do_show_stream_disposition = 0
 
__thread int do_show_data = 0
 
__thread int do_show_program_version = 0
 
__thread int do_show_library_versions = 0
 
__thread int do_show_pixel_formats = 0
 
__thread int do_show_pixel_format_flags = 0
 
__thread int do_show_pixel_format_components = 0
 
__thread int do_show_log = 0
 
__thread int do_show_chapter_tags = 0
 
__thread int do_show_format_tags = 0
 
__thread int do_show_frame_tags = 0
 
__thread int do_show_program_tags = 0
 
__thread int do_show_stream_tags = 0
 
__thread int do_show_packet_tags = 0
 
__thread int show_value_unit = 0
 
__thread int use_value_prefix = 0
 
__thread int use_byte_value_binary_prefix = 0
 
__thread int use_value_sexagesimal_format = 0
 
__thread int show_private_data = 1
 
__thread int show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO
 
__thread char * print_format
 
__thread char * stream_specifier
 
__thread char * show_data_hash
 
__thread ReadIntervalread_intervals
 
__thread int read_intervals_nb = 0
 
static struct section sections []
 
__thread OptionDefffprobe_options = NULL
 
const __thread char * input_filename
 
const __thread char * print_input_filename
 
const __thread AVInputFormat * iformat = NULL
 
__thread struct AVHashContext * hash
 
__thread volatile int main_ffprobe_return_code = 0
 
__thread volatile int longjmp_value
 
struct {
   double   bin_val
 
   double   dec_val
 
   const char *   bin_str
 
   const char *   dec_str
 
si_prefixes []
 
static const char unit_second_str [] = "s"
 
static const char unit_hertz_str [] = "Hz"
 
static const char unit_byte_str [] = "byte"
 
static const char unit_bit_per_second_str [] = "bit/s"
 
__thread int nb_streams
 
__thread uint64_t * nb_streams_packets
 
__thread uint64_t * nb_streams_frames
 
__thread intselected_streams
 
__thread LogBufferlog_buffer
 
__thread int log_buffer_size
 
static const AVOption writer_options []
 
static const AVClass writer_class
 
const __thread Writerregistered_writers [MAX_REGISTERED_WRITERS_NB+1]
 
__thread int next_registered_writer_idx = 0
 
static const AVOption default_options []
 
static const Writer default_writer
 
static const AVOption compact_options []
 
static const Writer compact_writer
 
static const AVOption csv_options []
 
static const Writer csv_writer
 
static const AVOption flat_options []
 
static const Writer flat_writer
 
static const AVOption ini_options []
 
static const Writer ini_writer
 
static const AVOption json_options []
 
static const Writer json_writer
 
static const AVOption xml_options []
 
static Writer xml_writer
 
+

Detailed Description

+

simple media prober based on the FFmpeg libraries

+ +

Definition in file fftools_ffprobe.c.

+

Macro Definition Documentation

+ +

◆ CHECK_COMPLIANCE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define CHECK_COMPLIANCE( opt,
 opt_name 
)
+
+Value:
if (opt) { \
+
av_log(wctx, AV_LOG_ERROR, \
+
"XSD-compliant output selected but option '%s' was selected, XML output may be non-compliant.\n" \
+
"You need to disable such option with '-no%s'\n", opt_name, opt_name); \
+
return AVERROR(EINVAL); \
+
}
+
+
+
+ +

◆ CHECK_END

+ +
+
+ + + + +
#define CHECK_END   if (ret < 0) goto end
+
+ +
+
+ +

◆ DEFINE_OPT_SHOW_SECTION

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define DEFINE_OPT_SHOW_SECTION( section,
 target_section_id 
)
+
+Value:
static int opt_show_##section(void *optctx, const char *opt, const char *arg) \
+
{ \
+
mark_section_show_entries(SECTION_ID_##target_section_id, 1, NULL); \
+
return 0; \
+
}
+
+

Definition at line 3617 of file fftools_ffprobe.c.

+ +
+
+ +

◆ DEFINE_WRITER_CLASS

+ +
+
+ + + + + + + + +
#define DEFINE_WRITER_CLASS( name)
+
+Value:
static const char *name##_get_name(void *ctx) \
+
{ \
+
return #name ; \
+
} \
+
static const AVClass name##_class = { \
+
.class_name = #name, \
+
.item_name = name##_get_name, \
+
.option = name##_options \
+
}
+
+

Definition at line 925 of file fftools_ffprobe.c.

+ +
+
+ +

◆ JSON_INDENT

+ +
+
+ + + + + + + +
#define JSON_INDENT()   av_log(NULL, AV_LOG_STDERR, "%*c", json->indent_level * 4, ' ')
+
+ +

Definition at line 1522 of file fftools_ffprobe.c.

+ +
+
+ +

◆ MAX_REGISTERED_WRITERS_NB

+ +
+
+ + + + +
#define MAX_REGISTERED_WRITERS_NB   64
+
+ +

Definition at line 896 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [1/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(WriterContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [2/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(DefaultContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [3/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(CompactContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [4/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(CompactContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [5/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(FlatContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [6/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(INIContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [7/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(JSONContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ OFFSET [8/8]

+ +
+
+ + + + + + + + +
#define OFFSET( x)   offsetof(XMLContext, x)
+
+ +

Definition at line 1649 of file fftools_ffprobe.c.

+ +
+
+ +

◆ PRINT_DISPOSITION

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PRINT_DISPOSITION( flagname,
 name 
)
+
+Value:
do { \
+
print_int(name, !!(stream->disposition & AV_DISPOSITION_##flagname)); \
+
} while (0)
+
+
+
+ +

◆ print_duration_time

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define print_duration_time( k,
 v,
 tb 
)   writer_print_time(w, k, v, tb, 1)
+
+ +

Definition at line 1818 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_duration_ts

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_duration_ts( k,
 
)   writer_print_ts(w, k, v, 1)
+
+ +

Definition at line 1819 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_fmt

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define print_fmt( k,
 f,
 ... 
)
+
+Value:
do { \
+
av_bprint_clear(&pbuf); \
+
av_bprintf(&pbuf, f, __VA_ARGS__); \
+
writer_print_string(w, k, pbuf.str, 0); \
+
} while (0)
+
+

Definition at line 1805 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_int

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_int( k,
 
)   writer_print_integer(w, k, v)
+
+ +

Definition at line 1811 of file fftools_ffprobe.c.

+ +
+
+ +

◆ PRINT_PIX_FMT_FLAG

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define PRINT_PIX_FMT_FLAG( flagname,
 name 
)
+
+Value:
do { \
+
print_int(name, !!(pixdesc->flags & AV_PIX_FMT_FLAG_##flagname)); \
+
} while (0)
+
+

Definition at line 3225 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_q

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define print_q( k,
 v,
 
)   writer_print_rational(w, k, v, s)
+
+ +

Definition at line 1812 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section_footer

+ +
+
+ + + + + + + + +
#define print_section_footer( s)   writer_print_section_footer(w, s)
+
+ +

Definition at line 1828 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section_header

+ +
+
+ + + + + + + + +
#define print_section_header( s)   writer_print_section_header(w, s)
+
+ +

Definition at line 1827 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_str

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_str( k,
 
)   writer_print_string(w, k, v, 0)
+
+ +

Definition at line 1813 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_str_opt

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_str_opt( k,
 
)   writer_print_string(w, k, v, PRINT_STRING_OPT)
+
+ +

Definition at line 1814 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_str_validate

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_str_validate( k,
 
)   writer_print_string(w, k, v, PRINT_STRING_VALIDATE)
+
+ +

Definition at line 1815 of file fftools_ffprobe.c.

+ +
+
+ +

◆ PRINT_STRING_OPT

+ +
+
+ + + + +
#define PRINT_STRING_OPT   1
+
+ +

Definition at line 751 of file fftools_ffprobe.c.

+ +
+
+ +

◆ PRINT_STRING_VALIDATE

+ +
+
+ + + + +
#define PRINT_STRING_VALIDATE   2
+
+ +

Definition at line 752 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_time

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define print_time( k,
 v,
 tb 
)   writer_print_time(w, k, v, tb, 0)
+
+ +

Definition at line 1816 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_ts

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define print_ts( k,
 
)   writer_print_ts(w, k, v, 0)
+
+ +

Definition at line 1817 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_val

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define print_val( k,
 v,
 
)
+
+Value:
do { \
+
struct unit_value uv; \
+
uv.val.i = v; \
+
uv.unit = u; \
+
writer_print_string(w, k, value_string(val_str, sizeof(val_str), uv), 0); \
+
} while (0)
+
+

Definition at line 1820 of file fftools_ffprobe.c.

+ +
+
+ +

◆ pthread_mutex_lock

+ +
+
+ + + + + + + + +
#define pthread_mutex_lock( a)   do{}while(0)
+
+ +

Definition at line 72 of file fftools_ffprobe.c.

+ +
+
+ +

◆ pthread_mutex_unlock

+ +
+
+ + + + + + + + +
#define pthread_mutex_unlock( a)   do{}while(0)
+
+ +

Definition at line 76 of file fftools_ffprobe.c.

+ +
+
+ +

◆ REALLOCZ_ARRAY_STREAM

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define REALLOCZ_ARRAY_STREAM( ptr,
 cur_n,
 new_n 
)
+
+Value:
{ \
+
ret = av_reallocp_array(&(ptr), (new_n), sizeof(*(ptr))); \
+
if (ret < 0) \
+
goto end; \
+
memset( (ptr) + (cur_n), 0, ((new_n) - (cur_n)) * sizeof(*(ptr)) ); \
+
}
+
+

Definition at line 1830 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SECTION_FLAG_HAS_VARIABLE_FIELDS

+ +
+
+ + + + +
#define SECTION_FLAG_HAS_VARIABLE_FIELDS   4
+
+

the section may contain a variable number of fields with variable keys.

+ +

Definition at line 156 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SECTION_FLAG_IS_ARRAY

+ +
+
+ + + + +
#define SECTION_FLAG_IS_ARRAY   2
+
+ +

the section contains an array of elements of the same type

+ +

Definition at line 155 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SECTION_FLAG_IS_WRAPPER

+ +
+
+ + + + +
#define SECTION_FLAG_IS_WRAPPER   1
+
+ +

the section only contains other sections, but has no data at its own level

+ +

Definition at line 154 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SECTION_MAX_NB_CHILDREN

+ +
+
+ + + + +
#define SECTION_MAX_NB_CHILDREN   10
+
+ +

Definition at line 148 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SECTION_MAX_NB_LEVELS

+ +
+
+ + + + +
#define SECTION_MAX_NB_LEVELS   10
+
+ +

Definition at line 463 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SET_DO_SHOW

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define SET_DO_SHOW( id,
 varname 
)
+
+Value:
do { \
+
if (check_section_show_entries(SECTION_ID_##id)) \
+
do_show_##varname = 1; \
+
} while (0)
+
+

Definition at line 3647 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SHOW_LIB_VERSION

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define SHOW_LIB_VERSION( libname,
 LIBNAME 
)
+
+Value:
do { \
+
if (CONFIG_##LIBNAME) { \
+
unsigned int version = libname##_version(); \
+
writer_print_section_header(w, SECTION_ID_LIBRARY_VERSION); \
+
print_str("name", "lib" #libname); \
+
print_int("major", LIB##LIBNAME##_VERSION_MAJOR); \
+
print_int("minor", LIB##LIBNAME##_VERSION_MINOR); \
+
print_int("micro", LIB##LIBNAME##_VERSION_MICRO); \
+
print_int("version", version); \
+
print_str("ident", LIB##LIBNAME##_IDENT); \
+
writer_print_section_footer(w); \
+
} \
+
} while (0)
+
+

Definition at line 3197 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SHOW_OPTIONAL_FIELDS_ALWAYS

+ +
+
+ + + + +
#define SHOW_OPTIONAL_FIELDS_ALWAYS   1
+
+ +

Definition at line 128 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SHOW_OPTIONAL_FIELDS_AUTO

+ +
+
+ + + + +
#define SHOW_OPTIONAL_FIELDS_AUTO   -1
+
+ +

Definition at line 126 of file fftools_ffprobe.c.

+ +
+
+ +

◆ SHOW_OPTIONAL_FIELDS_NEVER

+ +
+
+ + + + +
#define SHOW_OPTIONAL_FIELDS_NEVER   0
+
+ +

Definition at line 127 of file fftools_ffprobe.c.

+ +
+
+ +

◆ WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS

+ +
+
+ + + + +
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS   1
+
+ +

Definition at line 437 of file fftools_ffprobe.c.

+ +
+
+ +

◆ WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER

+ +
+
+ + + + +
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER   2
+
+ +

Definition at line 438 of file fftools_ffprobe.c.

+ +
+
+ +

◆ XML_INDENT

+ +
+
+ + + + + + + +
#define XML_INDENT()   av_log(NULL, AV_LOG_STDERR, "%*c", xml->indent_level * 4, ' ')
+
+ +

Definition at line 1682 of file fftools_ffprobe.c.

+ +
+
+

Typedef Documentation

+ +

◆ CompactContext

+ +
+
+ + + + +
typedef struct CompactContext CompactContext
+
+ +
+
+ +

◆ DefaultContext

+ +
+
+ + + + +
typedef struct DefaultContext DefaultContext
+
+ +
+
+ +

◆ FlatContext

+ +
+
+ + + + +
typedef struct FlatContext FlatContext
+
+ +
+
+ +

◆ INIContext

+ +
+
+ + + + +
typedef struct INIContext INIContext
+
+ +
+
+ +

◆ InputFile

+ +
+
+ + + + +
typedef struct InputFile InputFile
+
+ +
+
+ +

◆ InputStream

+ +
+
+ + + + +
typedef struct InputStream InputStream
+
+ +
+
+ +

◆ JSONContext

+ +
+
+ + + + +
typedef struct JSONContext JSONContext
+
+ +
+
+ +

◆ LogBuffer

+ +
+
+ + + + +
typedef struct LogBuffer LogBuffer
+
+ +
+
+ +

◆ ReadInterval

+ +
+
+ + + + +
typedef struct ReadInterval ReadInterval
+
+ +
+
+ +

◆ Writer

+ +
+
+ + + + +
typedef struct Writer Writer
+
+ +
+
+ +

◆ WriterContext

+ +
+
+ + + + +
typedef struct WriterContext WriterContext
+
+ +

Definition at line 435 of file fftools_ffprobe.c.

+ +
+
+ +

◆ XMLContext

+ +
+
+ + + + +
typedef struct XMLContext XMLContext
+
+ +
+
+

Enumeration Type Documentation

+ +

◆ SectionID

+ +
+
+ + + + +
enum SectionID
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Enumerator
SECTION_ID_NONE 
SECTION_ID_CHAPTER 
SECTION_ID_CHAPTER_TAGS 
SECTION_ID_CHAPTERS 
SECTION_ID_ERROR 
SECTION_ID_FORMAT 
SECTION_ID_FORMAT_TAGS 
SECTION_ID_FRAME 
SECTION_ID_FRAMES 
SECTION_ID_FRAME_TAGS 
SECTION_ID_FRAME_SIDE_DATA_LIST 
SECTION_ID_FRAME_SIDE_DATA 
SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST 
SECTION_ID_FRAME_SIDE_DATA_TIMECODE 
SECTION_ID_FRAME_LOG 
SECTION_ID_FRAME_LOGS 
SECTION_ID_LIBRARY_VERSION 
SECTION_ID_LIBRARY_VERSIONS 
SECTION_ID_PACKET 
SECTION_ID_PACKET_TAGS 
SECTION_ID_PACKETS 
SECTION_ID_PACKETS_AND_FRAMES 
SECTION_ID_PACKET_SIDE_DATA_LIST 
SECTION_ID_PACKET_SIDE_DATA 
SECTION_ID_PIXEL_FORMAT 
SECTION_ID_PIXEL_FORMAT_FLAGS 
SECTION_ID_PIXEL_FORMAT_COMPONENT 
SECTION_ID_PIXEL_FORMAT_COMPONENTS 
SECTION_ID_PIXEL_FORMATS 
SECTION_ID_PROGRAM_STREAM_DISPOSITION 
SECTION_ID_PROGRAM_STREAM_TAGS 
SECTION_ID_PROGRAM 
SECTION_ID_PROGRAM_STREAMS 
SECTION_ID_PROGRAM_STREAM 
SECTION_ID_PROGRAM_TAGS 
SECTION_ID_PROGRAM_VERSION 
SECTION_ID_PROGRAMS 
SECTION_ID_ROOT 
SECTION_ID_STREAM 
SECTION_ID_STREAM_DISPOSITION 
SECTION_ID_STREAMS 
SECTION_ID_STREAM_TAGS 
SECTION_ID_STREAM_SIDE_DATA_LIST 
SECTION_ID_STREAM_SIDE_DATA 
SECTION_ID_SUBTITLE 
+ +

Definition at line 166 of file fftools_ffprobe.c.

+ +
+
+ +

◆ StringValidation

+ +
+
+ + + + +
enum StringValidation
+
+ + + + + +
Enumerator
WRITER_STRING_VALIDATION_FAIL 
WRITER_STRING_VALIDATION_REPLACE 
WRITER_STRING_VALIDATION_IGNORE 
WRITER_STRING_VALIDATION_NB 
+ +

Definition at line 440 of file fftools_ffprobe.c.

+ +
+
+

Function Documentation

+ +

◆ bprint_bytes()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void bprint_bytes (AVBPrint * bp,
const uint8_t * ubuf,
size_t ubuf_size 
)
+
+static
+
+ +

Definition at line 548 of file fftools_ffprobe.c.

+ +
+
+ +

◆ c_escape_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static const char* c_escape_str (AVBPrint * dst,
const char * src,
const char sep,
void * log_ctx 
)
+
+static
+
+

Apply C-language-like string escaping.

+ +

Definition at line 1040 of file fftools_ffprobe.c.

+ +
+
+ +

◆ check_section_show_entries()

+ +
+
+ + + + + +
+ + + + + + + + +
static int check_section_show_entries (int section_id)
+
+inlinestatic
+
+ +

Definition at line 3635 of file fftools_ffprobe.c.

+ +
+
+ +

◆ clear_log()

+ +
+
+ + + + + +
+ + + + + + + + +
static void clear_log (int need_lock)
+
+static
+
+ +

Definition at line 2108 of file fftools_ffprobe.c.

+ +
+
+ +

◆ close_input_file()

+ +
+
+ + + + + +
+ + + + + + + + +
static void close_input_file (InputFileifile)
+
+static
+
+ +

Definition at line 3079 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_init()

+ +
+
+ + + + + +
+ + + + + + + + +
static av_cold int compact_init (WriterContextwctx)
+
+static
+
+ +

Definition at line 1116 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void compact_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1191 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_print_section_footer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void compact_print_section_footer (WriterContextwctx)
+
+static
+
+ +

Definition at line 1168 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void compact_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 1138 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void compact_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1178 of file fftools_ffprobe.c.

+ +
+
+ +

◆ csv_escape_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static const char* csv_escape_str (AVBPrint * dst,
const char * src,
const char sep,
void * log_ctx 
)
+
+static
+
+

Quote fields containing special characters, check RFC4180.

+ +

Definition at line 1063 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void default_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1015 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_print_section_footer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void default_print_section_footer (WriterContextwctx)
+
+static
+
+ +

Definition at line 993 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void default_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 968 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void default_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1006 of file fftools_ffprobe.c.

+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [1/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (compact )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [2/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (csv )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [3/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (default )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [4/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (flat )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [5/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (ini )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [6/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (json )
+
+ +
+
+ +

◆ DEFINE_WRITER_CLASS() [7/7]

+ +
+
+ + + + + + + + +
DEFINE_WRITER_CLASS (xml )
+
+ +
+
+ +

◆ ffprobe_cleanup()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ffprobe_cleanup (int ret)
+
+static
+
+ +

Definition at line 364 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_execute()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int ffprobe_execute (int argc,
char ** argv 
)
+
+

Forward declaration for function defined in fftools_ffprobe.c

+ +

Definition at line 3717 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_show_library_versions()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ffprobe_show_library_versions (WriterContextw)
+
+static
+
+ +

Definition at line 3212 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_show_pixel_formats()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ffprobe_show_pixel_formats (WriterContextw)
+
+static
+
+ +

Definition at line 3230 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_show_program_version()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ffprobe_show_program_version (WriterContextw)
+
+static
+
+ +

Definition at line 3181 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_var_cleanup()

+ +
+
+ + + + + + + +
void ffprobe_var_cleanup ()
+
+ +

Definition at line 3652 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_escape_key_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static const char* flat_escape_key_str (AVBPrint * dst,
const char * src,
const char sep 
)
+
+static
+
+ +

Definition at line 1280 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_escape_value_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static const char* flat_escape_value_str (AVBPrint * dst,
const char * src 
)
+
+static
+
+ +

Definition at line 1295 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_init()

+ +
+
+ + + + + +
+ + + + + + + + +
static av_cold int flat_init (WriterContextwctx)
+
+static
+
+ +

Definition at line 1266 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void flat_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1339 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void flat_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 1313 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void flat_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1344 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_escape_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static char* ini_escape_str (AVBPrint * dst,
const char * src 
)
+
+static
+
+ +

Definition at line 1386 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void ini_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1457 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void ini_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 1413 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void ini_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1446 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_escape_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static const char* json_escape_str (AVBPrint * dst,
const char * src,
void * log_ctx 
)
+
+static
+
+ +

Definition at line 1502 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_init()

+ +
+
+ + + + + +
+ + + + + + + + +
static av_cold int json_init (WriterContextwctx)
+
+static
+
+ +

Definition at line 1492 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void json_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1609 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_print_item_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void json_print_item_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+inlinestatic
+
+ +

Definition at line 1584 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_print_section_footer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void json_print_section_footer (WriterContextwctx)
+
+static
+
+ +

Definition at line 1562 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void json_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 1524 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void json_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1596 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_callback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void log_callback (void * ptr,
int level,
const char * fmt,
va_list vl 
)
+
+static
+
+ +

Definition at line 315 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_read_interval()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void log_read_interval (const ReadIntervalinterval,
void * log_ctx,
int log_level 
)
+
+static
+
+ +

Definition at line 2450 of file fftools_ffprobe.c.

+ +
+
+ +

◆ mark_section_show_entries()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void mark_section_show_entries (SectionID section_id,
int show_all_entries,
AVDictionary * entries 
)
+
+inlinestatic
+
+ +

Definition at line 3297 of file fftools_ffprobe.c.

+ +
+
+ +

◆ match_section()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int match_section (const char * section_name,
int show_all_entries,
AVDictionary * entries 
)
+
+static
+
+ +

Definition at line 3312 of file fftools_ffprobe.c.

+ +
+
+ +

◆ none_escape_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static const char* none_escape_str (AVBPrint * dst,
const char * src,
const char sep,
void * log_ctx 
)
+
+static
+
+ +

Definition at line 1081 of file fftools_ffprobe.c.

+ +
+
+ +

◆ open_input_file()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int open_input_file (InputFileifile,
const char * filename,
const char * print_filename 
)
+
+static
+
+ +

Definition at line 2962 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_format()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_format (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3287 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_input_file()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void opt_input_file (void * optctx,
const char * arg 
)
+
+static
+
+ +

Definition at line 3397 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_input_file_i()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_input_file_i (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3410 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_pretty()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_pretty (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3572 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_print_filename()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_print_filename (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3416 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_read_intervals()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_read_intervals (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3567 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_sections()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_sections (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3598 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_show_entries()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_show_entries (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3331 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_show_format_entry()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_show_format_entry (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3381 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_show_optional_fields()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_show_optional_fields (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3276 of file fftools_ffprobe.c.

+ +
+
+ +

◆ opt_show_versions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int opt_show_versions (void * optctx,
const char * opt,
const char * arg 
)
+
+static
+
+ +

Definition at line 3610 of file fftools_ffprobe.c.

+ +
+
+ +

◆ parse_read_interval()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int parse_read_interval (const char * interval_spec,
ReadIntervalinterval 
)
+
+static
+
+

Parse interval specification, according to the format: INTERVAL ::= [START|+START_OFFSET][%[END|+END_OFFSET]] INTERVALS ::= INTERVAL[,INTERVALS]

+ +

Definition at line 3437 of file fftools_ffprobe.c.

+ +
+
+ +

◆ parse_read_intervals()

+ +
+
+ + + + + +
+ + + + + + + + +
static int parse_read_intervals (const char * intervals_spec)
+
+static
+
+ +

Definition at line 3519 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_chroma_location()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_chroma_location (WriterContextw,
enum AVChromaLocation chroma_location 
)
+
+static
+
+ +

Definition at line 2097 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_color_range()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_color_range (WriterContextw,
enum AVColorRange color_range 
)
+
+static
+
+ +

Definition at line 2057 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_color_space()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_color_space (WriterContextw,
enum AVColorSpace color_space 
)
+
+static
+
+ +

Definition at line 2067 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_color_trc()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_color_trc (WriterContextw,
enum AVColorTransferCharacteristic color_trc 
)
+
+static
+
+ +

Definition at line 2087 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_dynamic_hdr10_plus()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_dynamic_hdr10_plus (WriterContextw,
const AVDynamicHDRPlus * metadata 
)
+
+static
+
+ +

Definition at line 1856 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_pkt_side_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void print_pkt_side_data (WriterContextw,
AVCodecParameters * par,
const AVPacketSideData * side_data,
int nb_side_data,
SectionID id_data_list,
SectionID id_data 
)
+
+static
+
+ +

Definition at line 1955 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_primaries()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_primaries (WriterContextw,
enum AVColorPrimaries color_primaries 
)
+
+static
+
+ +

Definition at line 2077 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_section()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void print_section (SectionID id,
int level 
)
+
+static
+
+ +

Definition at line 3581 of file fftools_ffprobe.c.

+ +
+
+ +

◆ probe_file()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int probe_file (WriterContextwctx,
const char * filename,
const char * print_filename 
)
+
+static
+
+ +

Definition at line 3093 of file fftools_ffprobe.c.

+ +
+
+ +

◆ process_frame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static av_always_inline int process_frame (WriterContextw,
InputFileifile,
AVFrame * frame,
AVPacket * pkt,
intpacket_new 
)
+
+static
+
+ +

Definition at line 2384 of file fftools_ffprobe.c.

+ +
+
+ +

◆ read_interval_packets()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int read_interval_packets (WriterContextw,
InputFileifile,
const ReadIntervalinterval,
int64_t * cur_ts 
)
+
+static
+
+ +

Definition at line 2474 of file fftools_ffprobe.c.

+ +
+
+ +

◆ read_packets()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int read_packets (WriterContextw,
InputFileifile 
)
+
+static
+
+ +

Definition at line 2582 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_chapters()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int show_chapters (WriterContextw,
InputFileifile 
)
+
+static
+
+ +

Definition at line 2892 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_error()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void show_error (WriterContextw,
int err 
)
+
+static
+
+ +

Definition at line 2948 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_format()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int show_format (WriterContextw,
InputFileifile 
)
+
+static
+
+ +

Definition at line 2917 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_frame()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void show_frame (WriterContextw,
AVFrame * frame,
AVStream * stream,
AVFormatContext * fmt_ctx 
)
+
+static
+
+ +

Definition at line 2235 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_help_default_ffprobe()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_default_ffprobe (const char * opt,
const char * arg 
)
+
+ +

Definition at line 3422 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_log()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int show_log (WriterContextw,
int section_ids,
int section_id,
int log_level 
)
+
+static
+
+ +

Definition at line 2124 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_packet()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void show_packet (WriterContextw,
InputFileifile,
AVPacket * pkt,
int packet_idx 
)
+
+static
+
+ +

Definition at line 2159 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_program()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int show_program (WriterContextw,
InputFileifile,
AVProgram * program 
)
+
+static
+
+ +

Definition at line 2839 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_programs()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int show_programs (WriterContextw,
InputFileifile 
)
+
+static
+
+ +

Definition at line 2874 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_stream()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int show_stream (WriterContextw,
AVFormatContext * fmt_ctx,
int stream_idx,
InputStreamist,
int in_program 
)
+
+static
+
+ +

Definition at line 2602 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_streams()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int show_streams (WriterContextw,
InputFileifile 
)
+
+static
+
+ +

Definition at line 2822 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_subtitle()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void show_subtitle (WriterContextw,
AVSubtitle * sub,
AVStream * stream,
AVFormatContext * fmt_ctx 
)
+
+static
+
+ +

Definition at line 2212 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_tags()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int show_tags (WriterContextw,
AVDictionary * tags,
int section_id 
)
+
+inlinestatic
+
+ +

Definition at line 1838 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_usage()

+ +
+
+ + + + + +
+ + + + + + + + +
static void show_usage (void )
+
+static
+
+ +

Definition at line 3174 of file fftools_ffprobe.c.

+ +
+
+ +

◆ upcase_string()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static char* upcase_string (char * dst,
size_t dst_size,
const char * src 
)
+
+inlinestatic
+
+ +

Definition at line 959 of file fftools_ffprobe.c.

+ +
+
+ +

◆ validate_string()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static int validate_string (WriterContextwctx,
char ** dstp,
const char * src 
)
+
+inlinestatic
+
+ +

Definition at line 696 of file fftools_ffprobe.c.

+ +
+
+ +

◆ value_string()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static char* value_string (char * buf,
int buf_size,
struct unit_value uv 
)
+
+static
+
+ +

Definition at line 380 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_child_next()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void* writer_child_next (void * obj,
void * prev 
)
+
+static
+
+ +

Definition at line 514 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_close()

+ +
+
+ + + + + +
+ + + + + + + + +
static void writer_close (WriterContext ** wctx)
+
+static
+
+ +

Definition at line 530 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_get_by_name()

+ +
+
+ + + + + +
+ + + + + + + + +
static const Writer* writer_get_by_name (const char * name)
+
+static
+
+ +

Definition at line 911 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_get_name()

+ +
+
+ + + + + +
+ + + + + + + + +
static const char* writer_get_name (void * p)
+
+static
+
+ +

Definition at line 493 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_open()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int writer_open (WriterContext ** wctx,
const Writerwriter,
const char * args,
const struct sectionsections,
int nb_sections 
)
+
+static
+
+ +

Definition at line 557 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_data (WriterContextwctx,
const char * name,
uint8_t * data,
int size 
)
+
+static
+
+ +

Definition at line 827 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_data_hash()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_data_hash (WriterContextwctx,
const char * name,
uint8_t * data,
int size 
)
+
+static
+
+ +

Definition at line 855 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_integer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_integer (WriterContextwctx,
const char * key,
long long int val 
)
+
+inlinestatic
+
+ +

Definition at line 685 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_integers()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_integers (WriterContextwctx,
const char * name,
uint8_t * data,
int size,
const char * format,
int columns,
int bytes,
int offset_add 
)
+
+static
+
+ +

Definition at line 870 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_rational()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_rational (WriterContextwctx,
const char * key,
AVRational q,
char sep 
)
+
+inlinestatic
+
+ +

Definition at line 792 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_section_footer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void writer_print_section_footer (WriterContextwctx)
+
+inlinestatic
+
+ +

Definition at line 668 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void writer_print_section_header (WriterContextwctx,
int section_id 
)
+
+inlinestatic
+
+ +

Definition at line 644 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_string()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static int writer_print_string (WriterContextwctx,
const char * key,
const char * val,
int flags 
)
+
+inlinestatic
+
+ +

Definition at line 754 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_time()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_time (WriterContextwctx,
const char * key,
int64_t ts,
const AVRational * time_base,
int is_duration 
)
+
+static
+
+ +

Definition at line 801 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_print_ts()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static void writer_print_ts (WriterContextwctx,
const char * key,
int64_t ts,
int is_duration 
)
+
+static
+
+ +

Definition at line 818 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_register()

+ +
+
+ + + + + +
+ + + + + + + + +
static int writer_register (const Writerwriter)
+
+static
+
+ +

Definition at line 902 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_register_all()

+ +
+
+ + + + + +
+ + + + + + + + +
static void writer_register_all (void )
+
+static
+
+ +

Definition at line 1793 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_init()

+ +
+
+ + + + + +
+ + + + + + + + +
static av_cold int xml_init (WriterContextwctx)
+
+static
+
+ +

Definition at line 1661 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_print_int()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void xml_print_int (WriterContextwctx,
const char * key,
long long int value 
)
+
+static
+
+ +

Definition at line 1774 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_print_section_footer()

+ +
+
+ + + + + +
+ + + + + + + + +
static void xml_print_section_footer (WriterContextwctx)
+
+static
+
+ +

Definition at line 1724 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_print_section_header()

+ +
+
+ + + + + +
+ + + + + + + + +
static void xml_print_section_header (WriterContextwctx)
+
+static
+
+ +

Definition at line 1684 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_print_str()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static void xml_print_str (WriterContextwctx,
const char * key,
const char * value 
)
+
+static
+
+ +

Definition at line 1743 of file fftools_ffprobe.c.

+ +
+
+

Variable Documentation

+ +

◆ bin_str

+ +
+
+ + + + +
const char* bin_str
+
+ +

Definition at line 279 of file fftools_ffprobe.c.

+ +
+
+ +

◆ bin_val

+ +
+
+ + + + +
double bin_val
+
+ +

Definition at line 277 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_options

+ +
+
+ + + + + +
+ + + + +
const AVOption compact_options[]
+
+static
+
+Initial value:
= {
+
{"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, 0, 0 },
+
{"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, 0, 0 },
+
{"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, 0, 0 },
+
{"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, 0, 0 },
+
{"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 1102 of file fftools_ffprobe.c.

+ +
+
+ +

◆ compact_writer

+ +
+
+ + + + + +
+ + + + +
const Writer compact_writer
+
+static
+
+Initial value:
= {
+
.name = "compact",
+
.priv_size = sizeof(CompactContext),
+
.init = compact_init,
+ + +
.print_integer = compact_print_int,
+
.print_string = compact_print_str,
+ +
.priv_class = &compact_class,
+
}
+
+

Definition at line 1201 of file fftools_ffprobe.c.

+ +
+
+ +

◆ csv_options

+ +
+
+ + + + + +
+ + + + +
const AVOption csv_options[]
+
+static
+
+Initial value:
= {
+
{"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, 0, 0 },
+
{"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, 0, 0 },
+
{"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, 0, 0 },
+
{"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, 0, 0 },
+
{"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 1218 of file fftools_ffprobe.c.

+ +
+
+ +

◆ csv_writer

+ +
+
+ + + + + +
+ + + + +
const Writer csv_writer
+
+static
+
+Initial value:
= {
+
.name = "csv",
+
.priv_size = sizeof(CompactContext),
+
.init = compact_init,
+ + +
.print_integer = compact_print_int,
+
.print_string = compact_print_str,
+ +
.priv_class = &csv_class,
+
}
+
+

Definition at line 1232 of file fftools_ffprobe.c.

+ +
+
+ +

◆ dec_str

+ +
+
+ + + + +
const char* dec_str
+
+ +

Definition at line 280 of file fftools_ffprobe.c.

+ +
+
+ +

◆ dec_val

+ +
+
+ + + + +
double dec_val
+
+ +

Definition at line 278 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_options

+ +
+
+ + + + + +
+ + + + +
const AVOption default_options[]
+
+static
+
+Initial value:
= {
+
{ "noprint_wrappers", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{ "nw", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{ "nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{ "nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 948 of file fftools_ffprobe.c.

+ +
+
+ +

◆ default_writer

+ +
+
+ + + + + +
+ + + + +
const Writer default_writer
+
+static
+
+Initial value:
= {
+
.name = "default",
+
.priv_size = sizeof(DefaultContext),
+ + +
.print_integer = default_print_int,
+
.print_string = default_print_str,
+ +
.priv_class = &default_class,
+
}
+
+

Definition at line 1024 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_bitexact

+ +
+
+ + + + +
__thread int do_bitexact = 0
+
+ +

Definition at line 92 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_count_frames

+ +
+
+ + + + +
__thread int do_count_frames = 0
+
+ +

Definition at line 93 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_count_packets

+ +
+
+ + + + +
__thread int do_count_packets = 0
+
+ +

Definition at line 94 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_read_frames

+ +
+
+ + + + +
__thread int do_read_frames = 0
+
+ +

Definition at line 95 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_read_packets

+ +
+
+ + + + +
__thread int do_read_packets = 0
+
+ +

Definition at line 96 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_chapter_tags

+ +
+
+ + + + +
__thread int do_show_chapter_tags = 0
+
+ +

Definition at line 113 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_chapters

+ +
+
+ + + + +
__thread int do_show_chapters = 0
+
+ +

Definition at line 97 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_data

+ +
+
+ + + + +
__thread int do_show_data = 0
+
+ +

Definition at line 105 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_error

+ +
+
+ + + + +
__thread int do_show_error = 0
+
+ +

Definition at line 98 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_format

+ +
+
+ + + + +
__thread int do_show_format = 0
+
+ +

Definition at line 99 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_format_tags

+ +
+
+ + + + +
__thread int do_show_format_tags = 0
+
+ +

Definition at line 114 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_frame_tags

+ +
+
+ + + + +
__thread int do_show_frame_tags = 0
+
+ +

Definition at line 115 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_frames

+ +
+
+ + + + +
__thread int do_show_frames = 0
+
+ +

Definition at line 100 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_library_versions

+ +
+
+ + + + +
__thread int do_show_library_versions = 0
+
+ +

Definition at line 107 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_log

+ +
+
+ + + + +
__thread int do_show_log = 0
+
+ +

Definition at line 111 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_packet_tags

+ +
+
+ + + + +
__thread int do_show_packet_tags = 0
+
+ +

Definition at line 118 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_packets

+ +
+
+ + + + +
__thread int do_show_packets = 0
+
+ +

Definition at line 101 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_pixel_format_components

+ +
+
+ + + + +
__thread int do_show_pixel_format_components = 0
+
+ +

Definition at line 110 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_pixel_format_flags

+ +
+
+ + + + +
__thread int do_show_pixel_format_flags = 0
+
+ +

Definition at line 109 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_pixel_formats

+ +
+
+ + + + +
__thread int do_show_pixel_formats = 0
+
+ +

Definition at line 108 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_program_tags

+ +
+
+ + + + +
__thread int do_show_program_tags = 0
+
+ +

Definition at line 116 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_program_version

+ +
+
+ + + + +
__thread int do_show_program_version = 0
+
+ +

Definition at line 106 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_programs

+ +
+
+ + + + +
__thread int do_show_programs = 0
+
+ +

Definition at line 102 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_stream_disposition

+ +
+
+ + + + +
__thread int do_show_stream_disposition = 0
+
+ +

Definition at line 104 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_stream_tags

+ +
+
+ + + + +
__thread int do_show_stream_tags = 0
+
+ +

Definition at line 117 of file fftools_ffprobe.c.

+ +
+
+ +

◆ do_show_streams

+ +
+
+ + + + +
__thread int do_show_streams = 0
+
+ +

Definition at line 103 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ffprobe_options

+ +
+
+ + + + +
__thread OptionDef* ffprobe_options = NULL
+
+ +

Definition at line 264 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_options

+ +
+
+ + + + + +
+ + + + +
const AVOption flat_options[]
+
+static
+
+Initial value:
= {
+
{"sep_char", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, 0, 0 },
+
{"s", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, 0, 0 },
+
{"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 1256 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flat_writer

+ +
+
+ + + + + +
+ + + + +
const Writer flat_writer
+
+static
+
+Initial value:
= {
+
.name = "flat",
+
.priv_size = sizeof(FlatContext),
+
.init = flat_init,
+ +
.print_integer = flat_print_int,
+
.print_string = flat_print_str,
+ +
.priv_class = &flat_class,
+
}
+
+

Definition at line 1357 of file fftools_ffprobe.c.

+ +
+
+ +

◆ hash

+ +
+
+ + + + +
__thread struct AVHashContext* hash
+
+ +

Definition at line 271 of file fftools_ffprobe.c.

+ +
+
+ +

◆ iformat

+ +
+
+ + + + +
const __thread AVInputFormat* iformat = NULL
+
+ +

Definition at line 269 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_options

+ +
+
+ + + + + +
+ + + + +
const AVOption ini_options[]
+
+static
+
+Initial value:
= {
+
{"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 1378 of file fftools_ffprobe.c.

+ +
+
+ +

◆ ini_writer

+ +
+
+ + + + + +
+ + + + +
const Writer ini_writer
+
+static
+
+Initial value:
= {
+
.name = "ini",
+
.priv_size = sizeof(INIContext),
+ +
.print_integer = ini_print_int,
+
.print_string = ini_print_str,
+ +
.priv_class = &ini_class,
+
}
+
+

Definition at line 1462 of file fftools_ffprobe.c.

+ +
+
+ +

◆ input_filename

+ +
+
+ + + + +
const __thread char* input_filename
+
+ +

Definition at line 267 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_options

+ +
+
+ + + + + +
+ + + + +
const AVOption json_options[]
+
+static
+
+Initial value:
= {
+
{ "compact", "enable compact output", OFFSET(compact), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{ "c", "enable compact output", OFFSET(compact), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{ NULL }
+
}
+
+

Definition at line 1484 of file fftools_ffprobe.c.

+ +
+
+ +

◆ json_writer

+ +
+
+ + + + + +
+ + + + +
const Writer json_writer
+
+static
+
+Initial value:
= {
+
.name = "json",
+
.priv_size = sizeof(JSONContext),
+
.init = json_init,
+ + +
.print_integer = json_print_int,
+
.print_string = json_print_str,
+ +
.priv_class = &json_class,
+
}
+
+

Definition at line 1626 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_buffer

+ +
+
+ + + + +
__thread LogBuffer* log_buffer
+
+ +

Definition at line 312 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_buffer_size

+ +
+
+ + + + +
__thread int log_buffer_size
+
+ +

Definition at line 313 of file fftools_ffprobe.c.

+ +
+
+ +

◆ longjmp_value

+ +
+
+ + + + +
__thread volatile int longjmp_value
+
+ +

Definition at line 107 of file fftools_cmdutils.c.

+ +
+
+ +

◆ main_ffprobe_return_code

+ +
+
+ + + + +
__thread volatile int main_ffprobe_return_code = 0
+
+ +

Definition at line 273 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_streams

+ +
+
+ + + + +
__thread int nb_streams
+
+ +

Definition at line 295 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_streams_frames

+ +
+
+ + + + +
__thread uint64_t* nb_streams_frames
+
+ +

Definition at line 297 of file fftools_ffprobe.c.

+ +
+
+ +

◆ nb_streams_packets

+ +
+
+ + + + +
__thread uint64_t* nb_streams_packets
+
+ +

Definition at line 296 of file fftools_ffprobe.c.

+ +
+
+ +

◆ next_registered_writer_idx

+ +
+
+ + + + +
__thread int next_registered_writer_idx = 0
+
+ +

Definition at line 900 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_format

+ +
+
+ + + + +
__thread char* print_format
+
+ +

Definition at line 131 of file fftools_ffprobe.c.

+ +
+
+ +

◆ print_input_filename

+ +
+
+ + + + +
const __thread char* print_input_filename
+
+ +

Definition at line 268 of file fftools_ffprobe.c.

+ +
+
+ +

◆ read_intervals

+ +
+
+ + + + +
__thread ReadInterval* read_intervals
+
+ +

Definition at line 143 of file fftools_ffprobe.c.

+ +
+
+ +

◆ read_intervals_nb

+ +
+
+ + + + +
__thread int read_intervals_nb = 0
+
+ +

Definition at line 144 of file fftools_ffprobe.c.

+ +
+
+ +

◆ registered_writers

+ +
+
+ + + + +
const __thread Writer* registered_writers[MAX_REGISTERED_WRITERS_NB+1]
+
+ +

Definition at line 898 of file fftools_ffprobe.c.

+ +
+
+ +

◆ sections

+ +
+
+ + + + + +
+ + + + +
struct section sections[]
+
+static
+
+ +

Definition at line 214 of file fftools_ffprobe.c.

+ +
+
+ +

◆ selected_streams

+ +
+
+ + + + +
__thread int* selected_streams
+
+ +

Definition at line 298 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_data_hash

+ +
+
+ + + + +
__thread char* show_data_hash
+
+ +

Definition at line 133 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_optional_fields

+ +
+
+ + + + +
__thread int show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO
+
+ +

Definition at line 129 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_private_data

+ +
+
+ + + + +
__thread int show_private_data = 1
+
+ +

Definition at line 124 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_value_unit

+ +
+
+ + + + +
__thread int show_value_unit = 0
+
+ +

Definition at line 120 of file fftools_ffprobe.c.

+ +
+
+ +

◆ si_prefixes

+ +
+
+ + + + +
const { ... } si_prefixes[]
+
+Initial value:
= {
+
{ 1.0, 1.0, "", "" },
+
{ 1.024e3, 1e3, "Ki", "K" },
+
{ 1.048576e6, 1e6, "Mi", "M" },
+
{ 1.073741824e9, 1e9, "Gi", "G" },
+
{ 1.099511627776e12, 1e12, "Ti", "T" },
+
{ 1.125899906842624e15, 1e15, "Pi", "P" },
+
}
+
+
+
+ +

◆ stream_specifier

+ +
+
+ + + + +
__thread char* stream_specifier
+
+ +

Definition at line 132 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unit_bit_per_second_str

+ +
+
+ + + + + +
+ + + + +
const char unit_bit_per_second_str[] = "bit/s"
+
+static
+
+ +

Definition at line 293 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unit_byte_str

+ +
+
+ + + + + +
+ + + + +
const char unit_byte_str[] = "byte"
+
+static
+
+ +

Definition at line 292 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unit_hertz_str

+ +
+
+ + + + + +
+ + + + +
const char unit_hertz_str[] = "Hz"
+
+static
+
+ +

Definition at line 291 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unit_second_str

+ +
+
+ + + + + +
+ + + + +
const char unit_second_str[] = "s"
+
+static
+
+ +

Definition at line 290 of file fftools_ffprobe.c.

+ +
+
+ +

◆ use_byte_value_binary_prefix

+ +
+
+ + + + +
__thread int use_byte_value_binary_prefix = 0
+
+ +

Definition at line 122 of file fftools_ffprobe.c.

+ +
+
+ +

◆ use_value_prefix

+ +
+
+ + + + +
__thread int use_value_prefix = 0
+
+ +

Definition at line 121 of file fftools_ffprobe.c.

+ +
+
+ +

◆ use_value_sexagesimal_format

+ +
+
+ + + + +
__thread int use_value_sexagesimal_format = 0
+
+ +

Definition at line 123 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_class

+ +
+
+ + + + + +
+ + + + +
const AVClass writer_class
+
+static
+
+Initial value:
= {
+
.class_name = "Writer",
+
.item_name = writer_get_name,
+
.option = writer_options,
+
.version = LIBAVUTIL_VERSION_INT,
+
.child_next = writer_child_next,
+
}
+
+

Definition at line 522 of file fftools_ffprobe.c.

+ +
+
+ +

◆ writer_options

+ +
+
+ + + + + +
+ + + + +
const AVOption writer_options[]
+
+static
+
+Initial value:
= {
+
{ "string_validation", "set string validation mode",
+
OFFSET(string_validation), AV_OPT_TYPE_INT, {.i64=WRITER_STRING_VALIDATION_REPLACE}, 0, WRITER_STRING_VALIDATION_NB-1, .unit = "sv" },
+
{ "sv", "set string validation mode",
+
OFFSET(string_validation), AV_OPT_TYPE_INT, {.i64=WRITER_STRING_VALIDATION_REPLACE}, 0, WRITER_STRING_VALIDATION_NB-1, .unit = "sv" },
+
{ "ignore", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_IGNORE}, .unit = "sv" },
+
{ "replace", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_REPLACE}, .unit = "sv" },
+
{ "fail", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_FAIL}, .unit = "sv" },
+
{ "string_validation_replacement", "set string validation replacement string", OFFSET(string_validation_replacement), AV_OPT_TYPE_STRING, {.str=""}},
+
{ "svr", "set string validation replacement string", OFFSET(string_validation_replacement), AV_OPT_TYPE_STRING, {.str="\xEF\xBF\xBD"}},
+
{ NULL }
+
}
+
+

Definition at line 501 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_options

+ +
+
+ + + + + +
+ + + + +
const AVOption xml_options[]
+
+static
+
+Initial value:
= {
+
{"fully_qualified", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{"q", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{"xsd_strict", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{"x", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
{NULL},
+
}
+
+

Definition at line 1651 of file fftools_ffprobe.c.

+ +
+
+ +

◆ xml_writer

+ +
+
+ + + + + +
+ + + + +
Writer xml_writer
+
+static
+
+Initial value:
= {
+
.name = "xml",
+
.priv_size = sizeof(XMLContext),
+
.init = xml_init,
+ + +
.print_integer = xml_print_int,
+
.print_string = xml_print_str,
+ +
.priv_class = &xml_class,
+
}
+
+

Definition at line 1781 of file fftools_ffprobe.c.

+ +
+
+
+
xml_print_str
static void xml_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1743
+
json_print_str
static void json_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1596
+
print_section_footer
#define print_section_footer(s)
Definition: fftools_ffprobe.c:1828
+
default_print_section_footer
static void default_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:993
+
print_section_header
#define print_section_header(s)
Definition: fftools_ffprobe.c:1827
+
writer_options
static const AVOption writer_options[]
Definition: fftools_ffprobe.c:501
+
ini_print_str
static void ini_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1446
+
writer_get_name
static const char * writer_get_name(void *p)
Definition: fftools_ffprobe.c:493
+
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
Definition: fftools_ffprobe.c:437
+
compact_print_section_footer
static void compact_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1168
+
flat_print_section_header
static void flat_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1313
+
value_string
static char * value_string(char *buf, int buf_size, struct unit_value uv)
Definition: fftools_ffprobe.c:380
+
compact_print_int
static void compact_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1191
+
xml_print_int
static void xml_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1774
+
unit_value::val
union unit_value::@4 val
+
xml_init
static av_cold int xml_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1661
+
FlatContext
struct FlatContext FlatContext
+
xml_print_section_header
static void xml_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1684
+
compact_init
static av_cold int compact_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1116
+
default_print_int
static void default_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1015
+
DefaultContext
struct DefaultContext DefaultContext
+
flat_init
static av_cold int flat_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1266
+
default_print_section_header
static void default_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:968
+
default_print_str
static void default_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1006
+
JSONContext
struct JSONContext JSONContext
+
WRITER_STRING_VALIDATION_FAIL
@ WRITER_STRING_VALIDATION_FAIL
Definition: fftools_ffprobe.c:441
+
xml_print_section_footer
static void xml_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1724
+
compact_print_section_header
static void compact_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1138
+
json_print_section_header
static void json_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1524
+
WRITER_STRING_VALIDATION_NB
@ WRITER_STRING_VALIDATION_NB
Definition: fftools_ffprobe.c:444
+
section
Definition: fftools_ffprobe.c:150
+
unit_value
Definition: fftools_ffprobe.c:375
+
ini_print_section_header
static void ini_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1413
+
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
Definition: fftools_ffprobe.c:438
+
WRITER_STRING_VALIDATION_IGNORE
@ WRITER_STRING_VALIDATION_IGNORE
Definition: fftools_ffprobe.c:443
+
OFFSET
#define OFFSET(x)
Definition: fftools_ffprobe.c:1649
+
XMLContext
struct XMLContext XMLContext
+
ini_print_int
static void ini_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1457
+
json_print_int
static void json_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1609
+
check_section_show_entries
static int check_section_show_entries(int section_id)
Definition: fftools_ffprobe.c:3635
+
compact_print_str
static void compact_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1178
+
flat_print_str
static void flat_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1344
+
flat_print_int
static void flat_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1339
+
writer_child_next
static void * writer_child_next(void *obj, void *prev)
Definition: fftools_ffprobe.c:514
+
unit_value::i
long long int i
Definition: fftools_ffprobe.c:376
+
print_section
static void print_section(SectionID id, int level)
Definition: fftools_ffprobe.c:3581
+
INIContext
struct INIContext INIContext
+
CompactContext
struct CompactContext CompactContext
+
SECTION_ID_LIBRARY_VERSION
@ SECTION_ID_LIBRARY_VERSION
Definition: fftools_ffprobe.c:183
+
WRITER_STRING_VALIDATION_REPLACE
@ WRITER_STRING_VALIDATION_REPLACE
Definition: fftools_ffprobe.c:442
+
json_init
static av_cold int json_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1492
+
json_print_section_footer
static void json_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1562
+ + + + diff --git a/docs/linux/html/d8/d78/fftools__ffprobe_8c_source.html b/docs/linux/html/d8/d78/fftools__ffprobe_8c_source.html new file mode 100644 index 0000000..0107e47 --- /dev/null +++ b/docs/linux/html/d8/d78/fftools__ffprobe_8c_source.html @@ -0,0 +1,4468 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffprobe.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffprobe.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2007-2010 Stefano Sabatini
+
3  *
+
4  * This file is part of FFmpeg.
+
5  *
+
6  * FFmpeg is free software; you can redistribute it and/or
+
7  * modify it under the terms of the GNU Lesser General Public
+
8  * License as published by the Free Software Foundation; either
+
9  * version 2.1 of the License, or (at your option) any later version.
+
10  *
+
11  * FFmpeg is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
14  * Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public
+
17  * License along with FFmpeg; if not, write to the Free Software
+
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
19  */
+
20 
+
26 /*
+
27  * CHANGES 01.2020
+
28  * - ffprobe support changes
+
29  * - Concurrent execution support
+
30  * - main() function renamed as ffprobe_execute()
+
31  */
+
32 
+
33 #include "config.h"
+
34 #include "libavutil/ffversion.h"
+
35 
+
36 #include <string.h>
+
37 
+
38 #include "libavformat/avformat.h"
+
39 #include "libavcodec/avcodec.h"
+
40 #include "libavutil/avassert.h"
+
41 #include "libavutil/avstring.h"
+
42 #include "libavutil/bprint.h"
+
43 #include "libavutil/channel_layout.h"
+
44 #include "libavutil/display.h"
+
45 #include "libavutil/hash.h"
+
46 #include "libavutil/hdr_dynamic_metadata.h"
+
47 #include "libavutil/mastering_display_metadata.h"
+
48 #include "libavutil/dovi_meta.h"
+
49 #include "libavutil/opt.h"
+
50 #include "libavutil/pixdesc.h"
+
51 #include "libavutil/spherical.h"
+
52 #include "libavutil/stereo3d.h"
+
53 #include "libavutil/dict.h"
+
54 #include "libavutil/intreadwrite.h"
+
55 #include "libavutil/libm.h"
+
56 #include "libavutil/parseutils.h"
+
57 #include "libavutil/timecode.h"
+
58 #include "libavutil/timestamp.h"
+
59 #include "libavdevice/avdevice.h"
+
60 #include "libswscale/swscale.h"
+
61 #include "libswresample/swresample.h"
+
62 #include "fftools_cmdutils.h"
+
63 
+
64 #include "libavutil/thread.h"
+
65 
+
66 #include "ffmpegkit_exception.h"
+
67 
+
68 #if !HAVE_THREADS
+
69 # ifdef pthread_mutex_lock
+
70 # undef pthread_mutex_lock
+
71 # endif
+
72 # define pthread_mutex_lock(a) do{}while(0)
+
73 # ifdef pthread_mutex_unlock
+
74 # undef pthread_mutex_unlock
+
75 # endif
+
76 # define pthread_mutex_unlock(a) do{}while(0)
+
77 #endif
+
78 
+
79 typedef struct InputStream {
+
80  AVStream *st;
+
81 
+
82  AVCodecContext *dec_ctx;
+
83 } InputStream;
+
84 
+
85 typedef struct InputFile {
+
86  AVFormatContext *fmt_ctx;
+
87 
+ +
89  int nb_streams;
+
90 } InputFile;
+
91 
+
92 __thread int do_bitexact = 0;
+
93 __thread int do_count_frames = 0;
+
94 __thread int do_count_packets = 0;
+
95 __thread int do_read_frames = 0;
+
96 __thread int do_read_packets = 0;
+
97 __thread int do_show_chapters = 0;
+
98 __thread int do_show_error = 0;
+
99 __thread int do_show_format = 0;
+
100 __thread int do_show_frames = 0;
+
101 __thread int do_show_packets = 0;
+
102 __thread int do_show_programs = 0;
+
103 __thread int do_show_streams = 0;
+
104 __thread int do_show_stream_disposition = 0;
+
105 __thread int do_show_data = 0;
+
106 __thread int do_show_program_version = 0;
+
107 __thread int do_show_library_versions = 0;
+
108 __thread int do_show_pixel_formats = 0;
+
109 __thread int do_show_pixel_format_flags = 0;
+ +
111 __thread int do_show_log = 0;
+
112 
+
113 __thread int do_show_chapter_tags = 0;
+
114 __thread int do_show_format_tags = 0;
+
115 __thread int do_show_frame_tags = 0;
+
116 __thread int do_show_program_tags = 0;
+
117 __thread int do_show_stream_tags = 0;
+
118 __thread int do_show_packet_tags = 0;
+
119 
+
120 __thread int show_value_unit = 0;
+
121 __thread int use_value_prefix = 0;
+ + +
124 __thread int show_private_data = 1;
+
125 
+
126 #define SHOW_OPTIONAL_FIELDS_AUTO -1
+
127 #define SHOW_OPTIONAL_FIELDS_NEVER 0
+
128 #define SHOW_OPTIONAL_FIELDS_ALWAYS 1
+ +
130 
+
131 __thread char *print_format;
+
132 __thread char *stream_specifier;
+
133 __thread char *show_data_hash;
+
134 
+
135 typedef struct ReadInterval {
+
136  int id;
+
137  int64_t start, end;
+ + + +
141 } ReadInterval;
+
142 
+ +
144 __thread int read_intervals_nb = 0;
+
145 
+
146 /* section structure definition */
+
147 
+
148 #define SECTION_MAX_NB_CHILDREN 10
+
149 
+
150 struct section {
+
151  int id;
+
152  const char *name;
+
153 
+
154 #define SECTION_FLAG_IS_WRAPPER 1
+
155 #define SECTION_FLAG_IS_ARRAY 2
+
156 #define SECTION_FLAG_HAS_VARIABLE_FIELDS 4
+
157  int flags;
+ +
160  const char *element_name;
+
161  const char *unique_name;
+
162  AVDictionary *entries_to_show;
+ +
164 };
+
165 
+
166 typedef enum {
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
212 } SectionID;
+
213 
+
214 static struct section sections[] = {
+ +
216  [SECTION_ID_CHAPTER] = { SECTION_ID_CHAPTER, "chapter", 0, { SECTION_ID_CHAPTER_TAGS, -1 } },
+
217  [SECTION_ID_CHAPTER_TAGS] = { SECTION_ID_CHAPTER_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "chapter_tags" },
+
218  [SECTION_ID_ERROR] = { SECTION_ID_ERROR, "error", 0, { -1 } },
+
219  [SECTION_ID_FORMAT] = { SECTION_ID_FORMAT, "format", 0, { SECTION_ID_FORMAT_TAGS, -1 } },
+
220  [SECTION_ID_FORMAT_TAGS] = { SECTION_ID_FORMAT_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "format_tags" },
+ + +
223  [SECTION_ID_FRAME_TAGS] = { SECTION_ID_FRAME_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "frame_tags" },
+
224  [SECTION_ID_FRAME_SIDE_DATA_LIST] ={ SECTION_ID_FRAME_SIDE_DATA_LIST, "side_data_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_FRAME_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "frame_side_data_list" },
+ + + + +
229  [SECTION_ID_FRAME_LOG] = { SECTION_ID_FRAME_LOG, "log", 0, { -1 }, },
+ +
231  [SECTION_ID_LIBRARY_VERSION] = { SECTION_ID_LIBRARY_VERSION, "library_version", 0, { -1 } },
+ + + +
235  [SECTION_ID_PACKET_TAGS] = { SECTION_ID_PACKET_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "packet_tags" },
+
236  [SECTION_ID_PACKET_SIDE_DATA_LIST] ={ SECTION_ID_PACKET_SIDE_DATA_LIST, "side_data_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_PACKET_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "packet_side_data_list" },
+
237  [SECTION_ID_PACKET_SIDE_DATA] = { SECTION_ID_PACKET_SIDE_DATA, "side_data", 0, { -1 } },
+ + +
240  [SECTION_ID_PIXEL_FORMAT_FLAGS] = { SECTION_ID_PIXEL_FORMAT_FLAGS, "flags", 0, { -1 }, .unique_name = "pixel_format_flags" },
+
241  [SECTION_ID_PIXEL_FORMAT_COMPONENTS] = { SECTION_ID_PIXEL_FORMAT_COMPONENTS, "components", SECTION_FLAG_IS_ARRAY, {SECTION_ID_PIXEL_FORMAT_COMPONENT, -1 }, .unique_name = "pixel_format_components" },
+ +
243  [SECTION_ID_PROGRAM_STREAM_DISPOSITION] = { SECTION_ID_PROGRAM_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "program_stream_disposition" },
+
244  [SECTION_ID_PROGRAM_STREAM_TAGS] = { SECTION_ID_PROGRAM_STREAM_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "program_stream_tags" },
+ +
246  [SECTION_ID_PROGRAM_STREAMS] = { SECTION_ID_PROGRAM_STREAMS, "streams", SECTION_FLAG_IS_ARRAY, { SECTION_ID_PROGRAM_STREAM, -1 }, .unique_name = "program_streams" },
+ +
248  [SECTION_ID_PROGRAM_TAGS] = { SECTION_ID_PROGRAM_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "program_tags" },
+
249  [SECTION_ID_PROGRAM_VERSION] = { SECTION_ID_PROGRAM_VERSION, "program_version", 0, { -1 } },
+ + + + + + + +
257  [SECTION_ID_STREAM_DISPOSITION] = { SECTION_ID_STREAM_DISPOSITION, "disposition", 0, { -1 }, .unique_name = "stream_disposition" },
+
258  [SECTION_ID_STREAM_TAGS] = { SECTION_ID_STREAM_TAGS, "tags", SECTION_FLAG_HAS_VARIABLE_FIELDS, { -1 }, .element_name = "tag", .unique_name = "stream_tags" },
+
259  [SECTION_ID_STREAM_SIDE_DATA_LIST] ={ SECTION_ID_STREAM_SIDE_DATA_LIST, "side_data_list", SECTION_FLAG_IS_ARRAY, { SECTION_ID_STREAM_SIDE_DATA, -1 }, .element_name = "side_data", .unique_name = "stream_side_data_list" },
+
260  [SECTION_ID_STREAM_SIDE_DATA] = { SECTION_ID_STREAM_SIDE_DATA, "side_data", 0, { -1 } },
+
261  [SECTION_ID_SUBTITLE] = { SECTION_ID_SUBTITLE, "subtitle", 0, { -1 } },
+
262 };
+
263 
+
264 __thread OptionDef *ffprobe_options = NULL;
+
265 
+
266 /* FFprobe context */
+
267 __thread const char *input_filename;
+
268 __thread const char *print_input_filename;
+
269 __thread const AVInputFormat *iformat = NULL;
+
270 
+
271 __thread struct AVHashContext *hash;
+
272 
+
273 __thread volatile int main_ffprobe_return_code = 0;
+
274 extern __thread volatile int longjmp_value;
+
275 
+
276 static const struct {
+
277  double bin_val;
+
278  double dec_val;
+
279  const char *bin_str;
+
280  const char *dec_str;
+
281 } si_prefixes[] = {
+
282  { 1.0, 1.0, "", "" },
+
283  { 1.024e3, 1e3, "Ki", "K" },
+
284  { 1.048576e6, 1e6, "Mi", "M" },
+
285  { 1.073741824e9, 1e9, "Gi", "G" },
+
286  { 1.099511627776e12, 1e12, "Ti", "T" },
+
287  { 1.125899906842624e15, 1e15, "Pi", "P" },
+
288 };
+
289 
+
290 static const char unit_second_str[] = "s" ;
+
291 static const char unit_hertz_str[] = "Hz" ;
+
292 static const char unit_byte_str[] = "byte" ;
+
293 static const char unit_bit_per_second_str[] = "bit/s";
+
294 
+
295 __thread int nb_streams;
+
296 __thread uint64_t *nb_streams_packets;
+
297 __thread uint64_t *nb_streams_frames;
+
298 __thread int *selected_streams;
+
299 
+
300 #if HAVE_THREADS
+
301 __thread pthread_mutex_t log_mutex;
+
302 #endif
+
303 typedef struct LogBuffer {
+ + +
306  char *log_message;
+
307  AVClassCategory category;
+
308  char *parent_name;
+
309  AVClassCategory parent_category;
+
310 }LogBuffer;
+
311 
+ +
313 __thread int log_buffer_size;
+
314 
+
315 static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
+
316 {
+
317  AVClass* avc = ptr ? *(AVClass **) ptr : NULL;
+
318  va_list vl2;
+
319  char line[1024];
+
320  static int print_prefix = 1;
+
321  void *new_log_buffer;
+
322 
+
323  va_copy(vl2, vl);
+
324  av_log_default_callback(ptr, level, fmt, vl);
+
325  av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
+
326  va_end(vl2);
+
327 
+
328 #if HAVE_THREADS
+
329  pthread_mutex_lock(&log_mutex);
+
330 
+
331  new_log_buffer = av_realloc_array(log_buffer, log_buffer_size + 1, sizeof(*log_buffer));
+
332  if (new_log_buffer) {
+
333  char *msg;
+
334  int i;
+
335 
+
336  log_buffer = new_log_buffer;
+
337  memset(&log_buffer[log_buffer_size], 0, sizeof(log_buffer[log_buffer_size]));
+
338  log_buffer[log_buffer_size].context_name= avc ? av_strdup(avc->item_name(ptr)) : NULL;
+
339  if (avc) {
+
340  if (avc->get_category) log_buffer[log_buffer_size].category = avc->get_category(ptr);
+
341  else log_buffer[log_buffer_size].category = avc->category;
+
342  }
+ +
344  msg = log_buffer[log_buffer_size].log_message = av_strdup(line);
+
345  for (i=strlen(msg) - 1; i>=0 && msg[i] == '\n'; i--) {
+
346  msg[i] = 0;
+
347  }
+
348  if (avc && avc->parent_log_context_offset) {
+
349  AVClass** parent = *(AVClass ***) (((uint8_t *) ptr) +
+
350  avc->parent_log_context_offset);
+
351  if (parent && *parent) {
+
352  log_buffer[log_buffer_size].parent_name = av_strdup((*parent)->item_name(parent));
+ +
354  (*parent)->get_category ? (*parent)->get_category(parent) :(*parent)->category;
+
355  }
+
356  }
+
357  log_buffer_size ++;
+
358  }
+
359 
+
360  pthread_mutex_unlock(&log_mutex);
+
361 #endif
+
362 }
+
363 
+
364 static void ffprobe_cleanup(int ret)
+
365 {
+
366  int i;
+
367  for (i = 0; i < FF_ARRAY_ELEMS(sections); i++)
+
368  av_dict_free(&(sections[i].entries_to_show));
+
369 
+
370 #if HAVE_THREADS
+
371  pthread_mutex_destroy(&log_mutex);
+
372 #endif
+
373 }
+
374 
+
375 struct unit_value {
+
376  union { double d; long long int i; } val;
+
377  const char *unit;
+
378 };
+
379 
+
380 static char *value_string(char *buf, int buf_size, struct unit_value uv)
+
381 {
+
382  double vald;
+
383  long long int vali;
+
384  int show_float = 0;
+
385 
+
386  if (uv.unit == unit_second_str) {
+
387  vald = uv.val.d;
+
388  show_float = 1;
+
389  } else {
+
390  vald = vali = uv.val.i;
+
391  }
+
392 
+ +
394  double secs;
+
395  int hours, mins;
+
396  secs = vald;
+
397  mins = (int)secs / 60;
+
398  secs = secs - mins * 60;
+
399  hours = mins / 60;
+
400  mins %= 60;
+
401  snprintf(buf, buf_size, "%d:%02d:%09.6f", hours, mins, secs);
+
402  } else {
+
403  const char *prefix_string = "";
+
404 
+
405  if (use_value_prefix && vald > 1) {
+
406  long long int index;
+
407 
+ +
409  index = (long long int) (log2(vald)) / 10;
+
410  index = av_clip(index, 0, FF_ARRAY_ELEMS(si_prefixes) - 1);
+
411  vald /= si_prefixes[index].bin_val;
+
412  prefix_string = si_prefixes[index].bin_str;
+
413  } else {
+
414  index = (long long int) (log10(vald)) / 3;
+
415  index = av_clip(index, 0, FF_ARRAY_ELEMS(si_prefixes) - 1);
+
416  vald /= si_prefixes[index].dec_val;
+
417  prefix_string = si_prefixes[index].dec_str;
+
418  }
+
419  vali = vald;
+
420  }
+
421 
+
422  if (show_float || (use_value_prefix && vald != (long long int)vald))
+
423  snprintf(buf, buf_size, "%f", vald);
+
424  else
+
425  snprintf(buf, buf_size, "%lld", vali);
+
426  av_strlcatf(buf, buf_size, "%s%s%s", *prefix_string || show_value_unit ? " " : "",
+
427  prefix_string, show_value_unit ? uv.unit : "");
+
428  }
+
429 
+
430  return buf;
+
431 }
+
432 
+
433 /* WRITERS API */
+
434 
+ +
436 
+
437 #define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS 1
+
438 #define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER 2
+
439 
+
440 typedef enum {
+ + + + + +
446 
+
447 typedef struct Writer {
+
448  const AVClass *priv_class;
+
449  int priv_size;
+
450  const char *name;
+
451 
+
452  int (*init) (WriterContext *wctx);
+
453  void (*uninit)(WriterContext *wctx);
+
454 
+ + +
457  void (*print_integer) (WriterContext *wctx, const char *, long long int);
+
458  void (*print_rational) (WriterContext *wctx, AVRational *q, char *sep);
+
459  void (*print_string) (WriterContext *wctx, const char *, const char *);
+
460  int flags;
+
461 } Writer;
+
462 
+
463 #define SECTION_MAX_NB_LEVELS 10
+
464 
+ +
466  const AVClass *class;
+
467  const Writer *writer;
+
468  char *name;
+
469  void *priv;
+
470 
+
471  const struct section *sections;
+ +
473 
+
474  int level;
+
475 
+ +
478 
+ + +
482 
+
484  unsigned int nb_section_packet;
+
485  unsigned int nb_section_frame;
+
486  unsigned int nb_section_packet_frame;
+
487 
+ + + +
491 };
+
492 
+
493 static const char *writer_get_name(void *p)
+
494 {
+
495  WriterContext *wctx = p;
+
496  return wctx->writer->name;
+
497 }
+
498 
+
499 #define OFFSET(x) offsetof(WriterContext, x)
+
500 
+
501 static const AVOption writer_options[] = {
+
502  { "string_validation", "set string validation mode",
+
503  OFFSET(string_validation), AV_OPT_TYPE_INT, {.i64=WRITER_STRING_VALIDATION_REPLACE}, 0, WRITER_STRING_VALIDATION_NB-1, .unit = "sv" },
+
504  { "sv", "set string validation mode",
+
505  OFFSET(string_validation), AV_OPT_TYPE_INT, {.i64=WRITER_STRING_VALIDATION_REPLACE}, 0, WRITER_STRING_VALIDATION_NB-1, .unit = "sv" },
+
506  { "ignore", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_IGNORE}, .unit = "sv" },
+
507  { "replace", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_REPLACE}, .unit = "sv" },
+
508  { "fail", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = WRITER_STRING_VALIDATION_FAIL}, .unit = "sv" },
+
509  { "string_validation_replacement", "set string validation replacement string", OFFSET(string_validation_replacement), AV_OPT_TYPE_STRING, {.str=""}},
+
510  { "svr", "set string validation replacement string", OFFSET(string_validation_replacement), AV_OPT_TYPE_STRING, {.str="\xEF\xBF\xBD"}},
+
511  { NULL }
+
512 };
+
513 
+
514 static void *writer_child_next(void *obj, void *prev)
+
515 {
+
516  WriterContext *ctx = obj;
+
517  if (!prev && ctx->writer && ctx->writer->priv_class && ctx->priv)
+
518  return ctx->priv;
+
519  return NULL;
+
520 }
+
521 
+
522 static const AVClass writer_class = {
+
523  .class_name = "Writer",
+
524  .item_name = writer_get_name,
+
525  .option = writer_options,
+
526  .version = LIBAVUTIL_VERSION_INT,
+
527  .child_next = writer_child_next,
+
528 };
+
529 
+
530 static void writer_close(WriterContext **wctx)
+
531 {
+
532  int i;
+
533 
+
534  if (!*wctx)
+
535  return;
+
536 
+
537  if ((*wctx)->writer->uninit)
+
538  (*wctx)->writer->uninit(*wctx);
+
539  for (i = 0; i < SECTION_MAX_NB_LEVELS; i++)
+
540  av_bprint_finalize(&(*wctx)->section_pbuf[i], NULL);
+
541  if ((*wctx)->writer->priv_class)
+
542  av_opt_free((*wctx)->priv);
+
543  av_freep(&((*wctx)->priv));
+
544  av_opt_free(*wctx);
+
545  av_freep(wctx);
+
546 }
+
547 
+
548 static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size)
+
549 {
+
550  int i;
+
551  av_bprintf(bp, "0X");
+
552  for (i = 0; i < ubuf_size; i++)
+
553  av_bprintf(bp, "%02X", ubuf[i]);
+
554 }
+
555 
+
556 
+
557 static int writer_open(WriterContext **wctx, const Writer *writer, const char *args,
+
558  const struct section *sections, int nb_sections)
+
559 {
+
560  int i, ret = 0;
+
561 
+
562  if (!(*wctx = av_mallocz(sizeof(WriterContext)))) {
+
563  ret = AVERROR(ENOMEM);
+
564  goto fail;
+
565  }
+
566 
+
567  if (!((*wctx)->priv = av_mallocz(writer->priv_size))) {
+
568  ret = AVERROR(ENOMEM);
+
569  goto fail;
+
570  }
+
571 
+
572  (*wctx)->class = &writer_class;
+
573  (*wctx)->writer = writer;
+
574  (*wctx)->level = -1;
+
575  (*wctx)->sections = sections;
+
576  (*wctx)->nb_sections = nb_sections;
+
577 
+
578  av_opt_set_defaults(*wctx);
+
579 
+
580  if (writer->priv_class) {
+
581  void *priv_ctx = (*wctx)->priv;
+
582  *((const AVClass **)priv_ctx) = writer->priv_class;
+
583  av_opt_set_defaults(priv_ctx);
+
584  }
+
585 
+
586  /* convert options to dictionary */
+
587  if (args) {
+
588  AVDictionary *opts = NULL;
+
589  AVDictionaryEntry *opt = NULL;
+
590 
+
591  if ((ret = av_dict_parse_string(&opts, args, "=", ":", 0)) < 0) {
+
592  av_log(*wctx, AV_LOG_ERROR, "Failed to parse option string '%s' provided to writer context\n", args);
+
593  av_dict_free(&opts);
+
594  goto fail;
+
595  }
+
596 
+
597  while ((opt = av_dict_get(opts, "", opt, AV_DICT_IGNORE_SUFFIX))) {
+
598  if ((ret = av_opt_set(*wctx, opt->key, opt->value, AV_OPT_SEARCH_CHILDREN)) < 0) {
+
599  av_log(*wctx, AV_LOG_ERROR, "Failed to set option '%s' with value '%s' provided to writer context\n",
+
600  opt->key, opt->value);
+
601  av_dict_free(&opts);
+
602  goto fail;
+
603  }
+
604  }
+
605 
+
606  av_dict_free(&opts);
+
607  }
+
608 
+
609  /* validate replace string */
+
610  {
+
611  const uint8_t *p = (*wctx)->string_validation_replacement;
+
612  const uint8_t *endp = p + strlen(p);
+
613  while (*p) {
+
614  const uint8_t *p0 = p;
+
615  int32_t code;
+
616  ret = av_utf8_decode(&code, &p, endp, (*wctx)->string_validation_utf8_flags);
+
617  if (ret < 0) {
+
618  AVBPrint bp;
+
619  av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
620  bprint_bytes(&bp, p0, p-p0),
+
621  av_log(wctx, AV_LOG_ERROR,
+
622  "Invalid UTF8 sequence %s found in string validation replace '%s'\n",
+
623  bp.str, (*wctx)->string_validation_replacement);
+
624  return ret;
+
625  }
+
626  }
+
627  }
+
628 
+
629  for (i = 0; i < SECTION_MAX_NB_LEVELS; i++)
+
630  av_bprint_init(&(*wctx)->section_pbuf[i], 1, AV_BPRINT_SIZE_UNLIMITED);
+
631 
+
632  if ((*wctx)->writer->init)
+
633  ret = (*wctx)->writer->init(*wctx);
+
634  if (ret < 0)
+
635  goto fail;
+
636 
+
637  return 0;
+
638 
+
639 fail:
+
640  writer_close(wctx);
+
641  return ret;
+
642 }
+
643 
+ +
645  int section_id)
+
646 {
+
647  int parent_section_id;
+
648  wctx->level++;
+
649  av_assert0(wctx->level < SECTION_MAX_NB_LEVELS);
+
650  parent_section_id = wctx->level ?
+
651  (wctx->section[wctx->level-1])->id : SECTION_ID_NONE;
+
652 
+
653  wctx->nb_item[wctx->level] = 0;
+
654  wctx->section[wctx->level] = &wctx->sections[section_id];
+
655 
+
656  if (section_id == SECTION_ID_PACKETS_AND_FRAMES) {
+
657  wctx->nb_section_packet = wctx->nb_section_frame =
+
658  wctx->nb_section_packet_frame = 0;
+
659  } else if (parent_section_id == SECTION_ID_PACKETS_AND_FRAMES) {
+
660  wctx->nb_section_packet_frame = section_id == SECTION_ID_PACKET ?
+
661  wctx->nb_section_packet : wctx->nb_section_frame;
+
662  }
+
663 
+
664  if (wctx->writer->print_section_header)
+
665  wctx->writer->print_section_header(wctx);
+
666 }
+
667 
+ +
669 {
+
670  int section_id = wctx->section[wctx->level]->id;
+
671  int parent_section_id = wctx->level ?
+
672  wctx->section[wctx->level-1]->id : SECTION_ID_NONE;
+
673 
+
674  if (parent_section_id != SECTION_ID_NONE)
+
675  wctx->nb_item[wctx->level-1]++;
+
676  if (parent_section_id == SECTION_ID_PACKETS_AND_FRAMES) {
+
677  if (section_id == SECTION_ID_PACKET) wctx->nb_section_packet++;
+
678  else wctx->nb_section_frame++;
+
679  }
+
680  if (wctx->writer->print_section_footer)
+
681  wctx->writer->print_section_footer(wctx);
+
682  wctx->level--;
+
683 }
+
684 
+
685 static inline void writer_print_integer(WriterContext *wctx,
+
686  const char *key, long long int val)
+
687 {
+
688  const struct section *section = wctx->section[wctx->level];
+
689 
+
690  if (section->show_all_entries || av_dict_get(section->entries_to_show, key, NULL, 0)) {
+
691  wctx->writer->print_integer(wctx, key, val);
+
692  wctx->nb_item[wctx->level]++;
+
693  }
+
694 }
+
695 
+
696 static inline int validate_string(WriterContext *wctx, char **dstp, const char *src)
+
697 {
+
698  const uint8_t *p, *endp;
+
699  AVBPrint dstbuf;
+
700  int invalid_chars_nb = 0, ret = 0;
+
701 
+
702  av_bprint_init(&dstbuf, 0, AV_BPRINT_SIZE_UNLIMITED);
+
703 
+
704  endp = src + strlen(src);
+
705  for (p = (uint8_t *)src; *p;) {
+
706  uint32_t code;
+
707  int invalid = 0;
+
708  const uint8_t *p0 = p;
+
709 
+
710  if (av_utf8_decode(&code, &p, endp, wctx->string_validation_utf8_flags) < 0) {
+
711  AVBPrint bp;
+
712  av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
713  bprint_bytes(&bp, p0, p-p0);
+
714  av_log(wctx, AV_LOG_DEBUG,
+
715  "Invalid UTF-8 sequence %s found in string '%s'\n", bp.str, src);
+
716  invalid = 1;
+
717  }
+
718 
+
719  if (invalid) {
+
720  invalid_chars_nb++;
+
721 
+
722  switch (wctx->string_validation) {
+ +
724  av_log(wctx, AV_LOG_ERROR,
+
725  "Invalid UTF-8 sequence found in string '%s'\n", src);
+
726  ret = AVERROR_INVALIDDATA;
+
727  goto end;
+
728  break;
+
729 
+ +
731  av_bprintf(&dstbuf, "%s", wctx->string_validation_replacement);
+
732  break;
+
733  }
+
734  }
+
735 
+
736  if (!invalid || wctx->string_validation == WRITER_STRING_VALIDATION_IGNORE)
+
737  av_bprint_append_data(&dstbuf, p0, p-p0);
+
738  }
+
739 
+
740  if (invalid_chars_nb && wctx->string_validation == WRITER_STRING_VALIDATION_REPLACE) {
+
741  av_log(wctx, AV_LOG_WARNING,
+
742  "%d invalid UTF-8 sequence(s) found in string '%s', replaced with '%s'\n",
+
743  invalid_chars_nb, src, wctx->string_validation_replacement);
+
744  }
+
745 
+
746 end:
+
747  av_bprint_finalize(&dstbuf, dstp);
+
748  return ret;
+
749 }
+
750 
+
751 #define PRINT_STRING_OPT 1
+
752 #define PRINT_STRING_VALIDATE 2
+
753 
+
754 static inline int writer_print_string(WriterContext *wctx,
+
755  const char *key, const char *val, int flags)
+
756 {
+
757  const struct section *section = wctx->section[wctx->level];
+
758  int ret = 0;
+
759 
+ + +
762  && (flags & PRINT_STRING_OPT)
+ +
764  return 0;
+
765 
+
766  if (section->show_all_entries || av_dict_get(section->entries_to_show, key, NULL, 0)) {
+ +
768  char *key1 = NULL, *val1 = NULL;
+
769  ret = validate_string(wctx, &key1, key);
+
770  if (ret < 0) goto end;
+
771  ret = validate_string(wctx, &val1, val);
+
772  if (ret < 0) goto end;
+
773  wctx->writer->print_string(wctx, key1, val1);
+
774  end:
+
775  if (ret < 0) {
+
776  av_log(wctx, AV_LOG_ERROR,
+
777  "Invalid key=value string combination %s=%s in section %s\n",
+
778  key, val, section->unique_name);
+
779  }
+
780  av_free(key1);
+
781  av_free(val1);
+
782  } else {
+
783  wctx->writer->print_string(wctx, key, val);
+
784  }
+
785 
+
786  wctx->nb_item[wctx->level]++;
+
787  }
+
788 
+
789  return ret;
+
790 }
+
791 
+
792 static inline void writer_print_rational(WriterContext *wctx,
+
793  const char *key, AVRational q, char sep)
+
794 {
+
795  AVBPrint buf;
+
796  av_bprint_init(&buf, 0, AV_BPRINT_SIZE_AUTOMATIC);
+
797  av_bprintf(&buf, "%d%c%d", q.num, sep, q.den);
+
798  writer_print_string(wctx, key, buf.str, 0);
+
799 }
+
800 
+
801 static void writer_print_time(WriterContext *wctx, const char *key,
+
802  int64_t ts, const AVRational *time_base, int is_duration)
+
803 {
+
804  char buf[128];
+
805 
+
806  if ((!is_duration && ts == AV_NOPTS_VALUE) || (is_duration && ts == 0)) {
+
807  writer_print_string(wctx, key, "N/A", PRINT_STRING_OPT);
+
808  } else {
+
809  double d = ts * av_q2d(*time_base);
+
810  struct unit_value uv;
+
811  uv.val.d = d;
+
812  uv.unit = unit_second_str;
+
813  value_string(buf, sizeof(buf), uv);
+
814  writer_print_string(wctx, key, buf, 0);
+
815  }
+
816 }
+
817 
+
818 static void writer_print_ts(WriterContext *wctx, const char *key, int64_t ts, int is_duration)
+
819 {
+
820  if ((!is_duration && ts == AV_NOPTS_VALUE) || (is_duration && ts == 0)) {
+
821  writer_print_string(wctx, key, "N/A", PRINT_STRING_OPT);
+
822  } else {
+
823  writer_print_integer(wctx, key, ts);
+
824  }
+
825 }
+
826 
+
827 static void writer_print_data(WriterContext *wctx, const char *name,
+
828  uint8_t *data, int size)
+
829 {
+
830  AVBPrint bp;
+
831  int offset = 0, l, i;
+
832 
+
833  av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
+
834  av_bprintf(&bp, "\n");
+
835  while (size) {
+
836  av_bprintf(&bp, "%08x: ", offset);
+
837  l = FFMIN(size, 16);
+
838  for (i = 0; i < l; i++) {
+
839  av_bprintf(&bp, "%02x", data[i]);
+
840  if (i & 1)
+
841  av_bprintf(&bp, " ");
+
842  }
+
843  av_bprint_chars(&bp, ' ', 41 - 2 * i - i / 2);
+
844  for (i = 0; i < l; i++)
+
845  av_bprint_chars(&bp, data[i] - 32U < 95 ? data[i] : '.', 1);
+
846  av_bprintf(&bp, "\n");
+
847  offset += l;
+
848  data += l;
+
849  size -= l;
+
850  }
+
851  writer_print_string(wctx, name, bp.str, 0);
+
852  av_bprint_finalize(&bp, NULL);
+
853 }
+
854 
+
855 static void writer_print_data_hash(WriterContext *wctx, const char *name,
+
856  uint8_t *data, int size)
+
857 {
+
858  char *p, buf[AV_HASH_MAX_SIZE * 2 + 64] = { 0 };
+
859 
+
860  if (!hash)
+
861  return;
+
862  av_hash_init(hash);
+
863  av_hash_update(hash, data, size);
+
864  snprintf(buf, sizeof(buf), "%s:", av_hash_get_name(hash));
+
865  p = buf + strlen(buf);
+
866  av_hash_final_hex(hash, p, buf + sizeof(buf) - p);
+
867  writer_print_string(wctx, name, buf, 0);
+
868 }
+
869 
+
870 static void writer_print_integers(WriterContext *wctx, const char *name,
+
871  uint8_t *data, int size, const char *format,
+
872  int columns, int bytes, int offset_add)
+
873 {
+
874  AVBPrint bp;
+
875  int offset = 0, l, i;
+
876 
+
877  av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED);
+
878  av_bprintf(&bp, "\n");
+
879  while (size) {
+
880  av_bprintf(&bp, "%08x: ", offset);
+
881  l = FFMIN(size, columns);
+
882  for (i = 0; i < l; i++) {
+
883  if (bytes == 1) av_bprintf(&bp, format, *data);
+
884  else if (bytes == 2) av_bprintf(&bp, format, AV_RN16(data));
+
885  else if (bytes == 4) av_bprintf(&bp, format, AV_RN32(data));
+
886  data += bytes;
+
887  size --;
+
888  }
+
889  av_bprintf(&bp, "\n");
+
890  offset += offset_add;
+
891  }
+
892  writer_print_string(wctx, name, bp.str, 0);
+
893  av_bprint_finalize(&bp, NULL);
+
894 }
+
895 
+
896 #define MAX_REGISTERED_WRITERS_NB 64
+
897 
+ +
899 
+
900 __thread int next_registered_writer_idx = 0;
+
901 
+
902 static int writer_register(const Writer *writer)
+
903 {
+ +
905  return AVERROR(ENOMEM);
+
906 
+ +
908  return 0;
+
909 }
+
910 
+
911 static const Writer *writer_get_by_name(const char *name)
+
912 {
+
913  int i;
+
914 
+
915  for (i = 0; registered_writers[i]; i++)
+
916  if (!strcmp(registered_writers[i]->name, name))
+
917  return registered_writers[i];
+
918 
+
919  return NULL;
+
920 }
+
921 
+
922 
+
923 /* WRITERS */
+
924 
+
925 #define DEFINE_WRITER_CLASS(name) \
+
926 static const char *name##_get_name(void *ctx) \
+
927 { \
+
928  return #name ; \
+
929 } \
+
930 static const AVClass name##_class = { \
+
931  .class_name = #name, \
+
932  .item_name = name##_get_name, \
+
933  .option = name##_options \
+
934 }
+
935 
+
936 /* Default output */
+
937 
+
938 typedef struct DefaultContext {
+
939  const AVClass *class;
+
940  int nokey;
+ + + +
944 
+
945 #undef OFFSET
+
946 #define OFFSET(x) offsetof(DefaultContext, x)
+
947 
+
948 static const AVOption default_options[] = {
+
949  { "noprint_wrappers", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
950  { "nw", "do not print headers and footers", OFFSET(noprint_wrappers), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
951  { "nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
952  { "nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
953  {NULL},
+
954 };
+
955 
+
956 DEFINE_WRITER_CLASS(default);
+
957 
+
958 /* lame uppercasing routine, assumes the string is lower case ASCII */
+
959 static inline char *upcase_string(char *dst, size_t dst_size, const char *src)
+
960 {
+
961  int i;
+
962  for (i = 0; src[i] && i < dst_size-1; i++)
+
963  dst[i] = av_toupper(src[i]);
+
964  dst[i] = 0;
+
965  return dst;
+
966 }
+
967 
+ +
969 {
+
970  DefaultContext *def = wctx->priv;
+
971  char buf[32];
+
972  const struct section *section = wctx->section[wctx->level];
+
973  const struct section *parent_section = wctx->level ?
+
974  wctx->section[wctx->level-1] : NULL;
+
975 
+
976  av_bprint_clear(&wctx->section_pbuf[wctx->level]);
+
977  if (parent_section &&
+
978  !(parent_section->flags & (SECTION_FLAG_IS_WRAPPER|SECTION_FLAG_IS_ARRAY))) {
+
979  def->nested_section[wctx->level] = 1;
+
980  av_bprintf(&wctx->section_pbuf[wctx->level], "%s%s:",
+
981  wctx->section_pbuf[wctx->level-1].str,
+
982  upcase_string(buf, sizeof(buf),
+
983  av_x_if_null(section->element_name, section->name)));
+
984  }
+
985 
+
986  if (def->noprint_wrappers || def->nested_section[wctx->level])
+
987  return;
+
988 
+ +
990  av_log(NULL, AV_LOG_STDERR, "[%s]\n", upcase_string(buf, sizeof(buf), section->name));
+
991 }
+
992 
+ +
994 {
+
995  DefaultContext *def = wctx->priv;
+
996  const struct section *section = wctx->section[wctx->level];
+
997  char buf[32];
+
998 
+
999  if (def->noprint_wrappers || def->nested_section[wctx->level])
+
1000  return;
+
1001 
+ +
1003  av_log(NULL, AV_LOG_STDERR, "[/%s]\n", upcase_string(buf, sizeof(buf), section->name));
+
1004 }
+
1005 
+
1006 static void default_print_str(WriterContext *wctx, const char *key, const char *value)
+
1007 {
+
1008  DefaultContext *def = wctx->priv;
+
1009 
+
1010  if (!def->nokey)
+
1011  av_log(NULL, AV_LOG_STDERR, "%s%s=", wctx->section_pbuf[wctx->level].str, key);
+
1012  av_log(NULL, AV_LOG_STDERR, "%s\n", value);
+
1013 }
+
1014 
+
1015 static void default_print_int(WriterContext *wctx, const char *key, long long int value)
+
1016 {
+
1017  DefaultContext *def = wctx->priv;
+
1018 
+
1019  if (!def->nokey)
+
1020  av_log(NULL, AV_LOG_STDERR, "%s%s=", wctx->section_pbuf[wctx->level].str, key);
+
1021  av_log(NULL, AV_LOG_STDERR, "%lld\n", value);
+
1022 }
+
1023 
+
1024 static const Writer default_writer = {
+
1025  .name = "default",
+
1026  .priv_size = sizeof(DefaultContext),
+ + +
1029  .print_integer = default_print_int,
+
1030  .print_string = default_print_str,
+ +
1032  .priv_class = &default_class,
+
1033 };
+
1034 
+
1035 /* Compact output */
+
1036 
+
1040 static const char *c_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
+
1041 {
+
1042  const char *p;
+
1043 
+
1044  for (p = src; *p; p++) {
+
1045  switch (*p) {
+
1046  case '\b': av_bprintf(dst, "%s", "\\b"); break;
+
1047  case '\f': av_bprintf(dst, "%s", "\\f"); break;
+
1048  case '\n': av_bprintf(dst, "%s", "\\n"); break;
+
1049  case '\r': av_bprintf(dst, "%s", "\\r"); break;
+
1050  case '\\': av_bprintf(dst, "%s", "\\\\"); break;
+
1051  default:
+
1052  if (*p == sep)
+
1053  av_bprint_chars(dst, '\\', 1);
+
1054  av_bprint_chars(dst, *p, 1);
+
1055  }
+
1056  }
+
1057  return dst->str;
+
1058 }
+
1059 
+
1063 static const char *csv_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
+
1064 {
+
1065  char meta_chars[] = { sep, '"', '\n', '\r', '\0' };
+
1066  int needs_quoting = !!src[strcspn(src, meta_chars)];
+
1067 
+
1068  if (needs_quoting)
+
1069  av_bprint_chars(dst, '"', 1);
+
1070 
+
1071  for (; *src; src++) {
+
1072  if (*src == '"')
+
1073  av_bprint_chars(dst, '"', 1);
+
1074  av_bprint_chars(dst, *src, 1);
+
1075  }
+
1076  if (needs_quoting)
+
1077  av_bprint_chars(dst, '"', 1);
+
1078  return dst->str;
+
1079 }
+
1080 
+
1081 static const char *none_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
+
1082 {
+
1083  return src;
+
1084 }
+
1085 
+
1086 typedef struct CompactContext {
+
1087  const AVClass *class;
+ +
1089  char item_sep;
+
1090  int nokey;
+ + +
1093  const char * (*escape_str)(AVBPrint *dst, const char *src, const char sep, void *log_ctx);
+ + + +
1097 } CompactContext;
+
1098 
+
1099 #undef OFFSET
+
1100 #define OFFSET(x) offsetof(CompactContext, x)
+
1101 
+
1102 static const AVOption compact_options[]= {
+
1103  {"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, 0, 0 },
+
1104  {"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str="|"}, 0, 0 },
+
1105  {"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1106  {"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1107  {"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, 0, 0 },
+
1108  {"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="c"}, 0, 0 },
+
1109  {"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1110  {"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1111  {NULL},
+
1112 };
+
1113 
+
1114 DEFINE_WRITER_CLASS(compact);
+
1115 
+
1116 static av_cold int compact_init(WriterContext *wctx)
+
1117 {
+
1118  CompactContext *compact = wctx->priv;
+
1119 
+
1120  if (strlen(compact->item_sep_str) != 1) {
+
1121  av_log(wctx, AV_LOG_ERROR, "Item separator '%s' specified, but must contain a single character\n",
+
1122  compact->item_sep_str);
+
1123  return AVERROR(EINVAL);
+
1124  }
+
1125  compact->item_sep = compact->item_sep_str[0];
+
1126 
+
1127  if (!strcmp(compact->escape_mode_str, "none")) compact->escape_str = none_escape_str;
+
1128  else if (!strcmp(compact->escape_mode_str, "c" )) compact->escape_str = c_escape_str;
+
1129  else if (!strcmp(compact->escape_mode_str, "csv" )) compact->escape_str = csv_escape_str;
+
1130  else {
+
1131  av_log(wctx, AV_LOG_ERROR, "Unknown escape mode '%s'\n", compact->escape_mode_str);
+
1132  return AVERROR(EINVAL);
+
1133  }
+
1134 
+
1135  return 0;
+
1136 }
+
1137 
+ +
1139 {
+
1140  CompactContext *compact = wctx->priv;
+
1141  const struct section *section = wctx->section[wctx->level];
+
1142  const struct section *parent_section = wctx->level ?
+
1143  wctx->section[wctx->level-1] : NULL;
+
1144  compact->terminate_line[wctx->level] = 1;
+
1145  compact->has_nested_elems[wctx->level] = 0;
+
1146 
+
1147  av_bprint_clear(&wctx->section_pbuf[wctx->level]);
+
1148  if (!(section->flags & SECTION_FLAG_IS_ARRAY) && parent_section &&
+
1149  !(parent_section->flags & (SECTION_FLAG_IS_WRAPPER|SECTION_FLAG_IS_ARRAY))) {
+
1150  compact->nested_section[wctx->level] = 1;
+
1151  compact->has_nested_elems[wctx->level-1] = 1;
+
1152  av_bprintf(&wctx->section_pbuf[wctx->level], "%s%s:",
+
1153  wctx->section_pbuf[wctx->level-1].str,
+
1154  (char *)av_x_if_null(section->element_name, section->name));
+
1155  wctx->nb_item[wctx->level] = wctx->nb_item[wctx->level-1];
+
1156  } else {
+
1157  if (parent_section && compact->has_nested_elems[wctx->level-1] &&
+ +
1159  compact->terminate_line[wctx->level-1] = 0;
+
1160  av_log(NULL, AV_LOG_STDERR, "\n");
+
1161  }
+
1162  if (compact->print_section &&
+ +
1164  av_log(NULL, AV_LOG_STDERR, "%s%c", section->name, compact->item_sep);
+
1165  }
+
1166 }
+
1167 
+ +
1169 {
+
1170  CompactContext *compact = wctx->priv;
+
1171 
+
1172  if (!compact->nested_section[wctx->level] &&
+
1173  compact->terminate_line[wctx->level] &&
+ +
1175  av_log(NULL, AV_LOG_STDERR, "\n");
+
1176 }
+
1177 
+
1178 static void compact_print_str(WriterContext *wctx, const char *key, const char *value)
+
1179 {
+
1180  CompactContext *compact = wctx->priv;
+
1181  AVBPrint buf;
+
1182 
+
1183  if (wctx->nb_item[wctx->level]) av_log(NULL, AV_LOG_STDERR, "%c", compact->item_sep);
+
1184  if (!compact->nokey)
+
1185  av_log(NULL, AV_LOG_STDERR, "%s%s=", wctx->section_pbuf[wctx->level].str, key);
+
1186  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1187  av_log(NULL, AV_LOG_STDERR, "%s", compact->escape_str(&buf, value, compact->item_sep, wctx));
+
1188  av_bprint_finalize(&buf, NULL);
+
1189 }
+
1190 
+
1191 static void compact_print_int(WriterContext *wctx, const char *key, long long int value)
+
1192 {
+
1193  CompactContext *compact = wctx->priv;
+
1194 
+
1195  if (wctx->nb_item[wctx->level]) av_log(NULL, AV_LOG_STDERR, "%c", compact->item_sep);
+
1196  if (!compact->nokey)
+
1197  av_log(NULL, AV_LOG_STDERR, "%s%s=", wctx->section_pbuf[wctx->level].str, key);
+
1198  av_log(NULL, AV_LOG_STDERR, "%lld", value);
+
1199 }
+
1200 
+
1201 static const Writer compact_writer = {
+
1202  .name = "compact",
+
1203  .priv_size = sizeof(CompactContext),
+
1204  .init = compact_init,
+ + +
1207  .print_integer = compact_print_int,
+
1208  .print_string = compact_print_str,
+ +
1210  .priv_class = &compact_class,
+
1211 };
+
1212 
+
1213 /* CSV output */
+
1214 
+
1215 #undef OFFSET
+
1216 #define OFFSET(x) offsetof(CompactContext, x)
+
1217 
+
1218 static const AVOption csv_options[] = {
+
1219  {"item_sep", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, 0, 0 },
+
1220  {"s", "set item separator", OFFSET(item_sep_str), AV_OPT_TYPE_STRING, {.str=","}, 0, 0 },
+
1221  {"nokey", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1222  {"nk", "force no key printing", OFFSET(nokey), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1223  {"escape", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, 0, 0 },
+
1224  {"e", "set escape mode", OFFSET(escape_mode_str), AV_OPT_TYPE_STRING, {.str="csv"}, 0, 0 },
+
1225  {"print_section", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1226  {"p", "print section name", OFFSET(print_section), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1227  {NULL},
+
1228 };
+
1229 
+
1230 DEFINE_WRITER_CLASS(csv);
+
1231 
+
1232 static const Writer csv_writer = {
+
1233  .name = "csv",
+
1234  .priv_size = sizeof(CompactContext),
+
1235  .init = compact_init,
+ + +
1238  .print_integer = compact_print_int,
+
1239  .print_string = compact_print_str,
+ +
1241  .priv_class = &csv_class,
+
1242 };
+
1243 
+
1244 /* Flat output */
+
1245 
+
1246 typedef struct FlatContext {
+
1247  const AVClass *class;
+
1248  const char *sep_str;
+
1249  char sep;
+ +
1251 } FlatContext;
+
1252 
+
1253 #undef OFFSET
+
1254 #define OFFSET(x) offsetof(FlatContext, x)
+
1255 
+
1256 static const AVOption flat_options[]= {
+
1257  {"sep_char", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, 0, 0 },
+
1258  {"s", "set separator", OFFSET(sep_str), AV_OPT_TYPE_STRING, {.str="."}, 0, 0 },
+
1259  {"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1260  {"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1261  {NULL},
+
1262 };
+
1263 
+
1264 DEFINE_WRITER_CLASS(flat);
+
1265 
+
1266 static av_cold int flat_init(WriterContext *wctx)
+
1267 {
+
1268  FlatContext *flat = wctx->priv;
+
1269 
+
1270  if (strlen(flat->sep_str) != 1) {
+
1271  av_log(wctx, AV_LOG_ERROR, "Item separator '%s' specified, but must contain a single character\n",
+
1272  flat->sep_str);
+
1273  return AVERROR(EINVAL);
+
1274  }
+
1275  flat->sep = flat->sep_str[0];
+
1276 
+
1277  return 0;
+
1278 }
+
1279 
+
1280 static const char *flat_escape_key_str(AVBPrint *dst, const char *src, const char sep)
+
1281 {
+
1282  const char *p;
+
1283 
+
1284  for (p = src; *p; p++) {
+
1285  if (!((*p >= '0' && *p <= '9') ||
+
1286  (*p >= 'a' && *p <= 'z') ||
+
1287  (*p >= 'A' && *p <= 'Z')))
+
1288  av_bprint_chars(dst, '_', 1);
+
1289  else
+
1290  av_bprint_chars(dst, *p, 1);
+
1291  }
+
1292  return dst->str;
+
1293 }
+
1294 
+
1295 static const char *flat_escape_value_str(AVBPrint *dst, const char *src)
+
1296 {
+
1297  const char *p;
+
1298 
+
1299  for (p = src; *p; p++) {
+
1300  switch (*p) {
+
1301  case '\n': av_bprintf(dst, "%s", "\\n"); break;
+
1302  case '\r': av_bprintf(dst, "%s", "\\r"); break;
+
1303  case '\\': av_bprintf(dst, "%s", "\\\\"); break;
+
1304  case '"': av_bprintf(dst, "%s", "\\\""); break;
+
1305  case '`': av_bprintf(dst, "%s", "\\`"); break;
+
1306  case '$': av_bprintf(dst, "%s", "\\$"); break;
+
1307  default: av_bprint_chars(dst, *p, 1); break;
+
1308  }
+
1309  }
+
1310  return dst->str;
+
1311 }
+
1312 
+ +
1314 {
+
1315  FlatContext *flat = wctx->priv;
+
1316  AVBPrint *buf = &wctx->section_pbuf[wctx->level];
+
1317  const struct section *section = wctx->section[wctx->level];
+
1318  const struct section *parent_section = wctx->level ?
+
1319  wctx->section[wctx->level-1] : NULL;
+
1320 
+
1321  /* build section header */
+
1322  av_bprint_clear(buf);
+
1323  if (!parent_section)
+
1324  return;
+
1325  av_bprintf(buf, "%s", wctx->section_pbuf[wctx->level-1].str);
+
1326 
+
1327  if (flat->hierarchical ||
+ +
1329  av_bprintf(buf, "%s%s", wctx->section[wctx->level]->name, flat->sep_str);
+
1330 
+
1331  if (parent_section->flags & SECTION_FLAG_IS_ARRAY) {
+
1332  int n = parent_section->id == SECTION_ID_PACKETS_AND_FRAMES ?
+
1333  wctx->nb_section_packet_frame : wctx->nb_item[wctx->level-1];
+
1334  av_bprintf(buf, "%d%s", n, flat->sep_str);
+
1335  }
+
1336  }
+
1337 }
+
1338 
+
1339 static void flat_print_int(WriterContext *wctx, const char *key, long long int value)
+
1340 {
+
1341  av_log(NULL, AV_LOG_STDERR, "%s%s=%lld\n", wctx->section_pbuf[wctx->level].str, key, value);
+
1342 }
+
1343 
+
1344 static void flat_print_str(WriterContext *wctx, const char *key, const char *value)
+
1345 {
+
1346  FlatContext *flat = wctx->priv;
+
1347  AVBPrint buf;
+
1348 
+
1349  av_log(NULL, AV_LOG_STDERR, "%s", wctx->section_pbuf[wctx->level].str);
+
1350  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1351  av_log(NULL, AV_LOG_STDERR, "%s=", flat_escape_key_str(&buf, key, flat->sep));
+
1352  av_bprint_clear(&buf);
+
1353  av_log(NULL, AV_LOG_STDERR, "\"%s\"\n", flat_escape_value_str(&buf, value));
+
1354  av_bprint_finalize(&buf, NULL);
+
1355 }
+
1356 
+
1357 static const Writer flat_writer = {
+
1358  .name = "flat",
+
1359  .priv_size = sizeof(FlatContext),
+
1360  .init = flat_init,
+ +
1362  .print_integer = flat_print_int,
+
1363  .print_string = flat_print_str,
+ +
1365  .priv_class = &flat_class,
+
1366 };
+
1367 
+
1368 /* INI format output */
+
1369 
+
1370 typedef struct INIContext {
+
1371  const AVClass *class;
+ +
1373 } INIContext;
+
1374 
+
1375 #undef OFFSET
+
1376 #define OFFSET(x) offsetof(INIContext, x)
+
1377 
+
1378 static const AVOption ini_options[] = {
+
1379  {"hierarchical", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1380  {"h", "specify if the section specification should be hierarchical", OFFSET(hierarchical), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1 },
+
1381  {NULL},
+
1382 };
+
1383 
+
1384 DEFINE_WRITER_CLASS(ini);
+
1385 
+
1386 static char *ini_escape_str(AVBPrint *dst, const char *src)
+
1387 {
+
1388  int i = 0;
+
1389  char c = 0;
+
1390 
+
1391  while ((c = src[i++])) {
+
1392  switch (c) {
+
1393  case '\b': av_bprintf(dst, "%s", "\\b"); break;
+
1394  case '\f': av_bprintf(dst, "%s", "\\f"); break;
+
1395  case '\n': av_bprintf(dst, "%s", "\\n"); break;
+
1396  case '\r': av_bprintf(dst, "%s", "\\r"); break;
+
1397  case '\t': av_bprintf(dst, "%s", "\\t"); break;
+
1398  case '\\':
+
1399  case '#' :
+
1400  case '=' :
+
1401  case ':' : av_bprint_chars(dst, '\\', 1);
+
1402  default:
+
1403  if ((unsigned char)c < 32)
+
1404  av_bprintf(dst, "\\x00%02x", c & 0xff);
+
1405  else
+
1406  av_bprint_chars(dst, c, 1);
+
1407  break;
+
1408  }
+
1409  }
+
1410  return dst->str;
+
1411 }
+
1412 
+ +
1414 {
+
1415  INIContext *ini = wctx->priv;
+
1416  AVBPrint *buf = &wctx->section_pbuf[wctx->level];
+
1417  const struct section *section = wctx->section[wctx->level];
+
1418  const struct section *parent_section = wctx->level ?
+
1419  wctx->section[wctx->level-1] : NULL;
+
1420 
+
1421  av_bprint_clear(buf);
+
1422  if (!parent_section) {
+
1423  av_log(NULL, AV_LOG_STDERR, "# ffprobe output\n\n");
+
1424  return;
+
1425  }
+
1426 
+
1427  if (wctx->nb_item[wctx->level-1])
+
1428  av_log(NULL, AV_LOG_STDERR, "\n");
+
1429 
+
1430  av_bprintf(buf, "%s", wctx->section_pbuf[wctx->level-1].str);
+
1431  if (ini->hierarchical ||
+ +
1433  av_bprintf(buf, "%s%s", buf->str[0] ? "." : "", wctx->section[wctx->level]->name);
+
1434 
+
1435  if (parent_section->flags & SECTION_FLAG_IS_ARRAY) {
+
1436  int n = parent_section->id == SECTION_ID_PACKETS_AND_FRAMES ?
+
1437  wctx->nb_section_packet_frame : wctx->nb_item[wctx->level-1];
+
1438  av_bprintf(buf, ".%d", n);
+
1439  }
+
1440  }
+
1441 
+ +
1443  av_log(NULL, AV_LOG_STDERR, "[%s]\n", buf->str);
+
1444 }
+
1445 
+
1446 static void ini_print_str(WriterContext *wctx, const char *key, const char *value)
+
1447 {
+
1448  AVBPrint buf;
+
1449 
+
1450  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1451  av_log(NULL, AV_LOG_STDERR, "%s=", ini_escape_str(&buf, key));
+
1452  av_bprint_clear(&buf);
+
1453  av_log(NULL, AV_LOG_STDERR, "%s\n", ini_escape_str(&buf, value));
+
1454  av_bprint_finalize(&buf, NULL);
+
1455 }
+
1456 
+
1457 static void ini_print_int(WriterContext *wctx, const char *key, long long int value)
+
1458 {
+
1459  av_log(NULL, AV_LOG_STDERR, "%s=%lld\n", key, value);
+
1460 }
+
1461 
+
1462 static const Writer ini_writer = {
+
1463  .name = "ini",
+
1464  .priv_size = sizeof(INIContext),
+ +
1466  .print_integer = ini_print_int,
+
1467  .print_string = ini_print_str,
+ +
1469  .priv_class = &ini_class,
+
1470 };
+
1471 
+
1472 /* JSON output */
+
1473 
+
1474 typedef struct JSONContext {
+
1475  const AVClass *class;
+ +
1477  int compact;
+
1478  const char *item_sep, *item_start_end;
+
1479 } JSONContext;
+
1480 
+
1481 #undef OFFSET
+
1482 #define OFFSET(x) offsetof(JSONContext, x)
+
1483 
+
1484 static const AVOption json_options[]= {
+
1485  { "compact", "enable compact output", OFFSET(compact), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1486  { "c", "enable compact output", OFFSET(compact), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1487  { NULL }
+
1488 };
+
1489 
+
1490 DEFINE_WRITER_CLASS(json);
+
1491 
+
1492 static av_cold int json_init(WriterContext *wctx)
+
1493 {
+
1494  JSONContext *json = wctx->priv;
+
1495 
+
1496  json->item_sep = json->compact ? ", " : ",\n";
+
1497  json->item_start_end = json->compact ? " " : "\n";
+
1498 
+
1499  return 0;
+
1500 }
+
1501 
+
1502 static const char *json_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
+
1503 {
+
1504  static const char json_escape[] = {'"', '\\', '\b', '\f', '\n', '\r', '\t', 0};
+
1505  static const char json_subst[] = {'"', '\\', 'b', 'f', 'n', 'r', 't', 0};
+
1506  const char *p;
+
1507 
+
1508  for (p = src; *p; p++) {
+
1509  char *s = strchr(json_escape, *p);
+
1510  if (s) {
+
1511  av_bprint_chars(dst, '\\', 1);
+
1512  av_bprint_chars(dst, json_subst[s - json_escape], 1);
+
1513  } else if ((unsigned char)*p < 32) {
+
1514  av_bprintf(dst, "\\u00%02x", *p & 0xff);
+
1515  } else {
+
1516  av_bprint_chars(dst, *p, 1);
+
1517  }
+
1518  }
+
1519  return dst->str;
+
1520 }
+
1521 
+
1522 #define JSON_INDENT() av_log(NULL, AV_LOG_STDERR, "%*c", json->indent_level * 4, ' ')
+
1523 
+ +
1525 {
+
1526  JSONContext *json = wctx->priv;
+
1527  AVBPrint buf;
+
1528  const struct section *section = wctx->section[wctx->level];
+
1529  const struct section *parent_section = wctx->level ?
+
1530  wctx->section[wctx->level-1] : NULL;
+
1531 
+
1532  if (wctx->level && wctx->nb_item[wctx->level-1])
+
1533  av_log(NULL, AV_LOG_STDERR, ",\n");
+
1534 
+ +
1536  av_log(NULL, AV_LOG_STDERR, "{\n");
+
1537  json->indent_level++;
+
1538  } else {
+
1539  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1540  json_escape_str(&buf, section->name, wctx);
+
1541  JSON_INDENT();
+
1542 
+
1543  json->indent_level++;
+ +
1545  av_log(NULL, AV_LOG_STDERR, "\"%s\": [\n", buf.str);
+
1546  } else if (parent_section && !(parent_section->flags & SECTION_FLAG_IS_ARRAY)) {
+
1547  av_log(NULL, AV_LOG_STDERR, "\"%s\": {%s", buf.str, json->item_start_end);
+
1548  } else {
+
1549  av_log(NULL, AV_LOG_STDERR, "{%s", json->item_start_end);
+
1550 
+
1551  /* this is required so the parser can distinguish between packets and frames */
+
1552  if (parent_section && parent_section->id == SECTION_ID_PACKETS_AND_FRAMES) {
+
1553  if (!json->compact)
+
1554  JSON_INDENT();
+
1555  av_log(NULL, AV_LOG_STDERR, "\"type\": \"%s\"", section->name);
+
1556  }
+
1557  }
+
1558  av_bprint_finalize(&buf, NULL);
+
1559  }
+
1560 }
+
1561 
+ +
1563 {
+
1564  JSONContext *json = wctx->priv;
+
1565  const struct section *section = wctx->section[wctx->level];
+
1566 
+
1567  if (wctx->level == 0) {
+
1568  json->indent_level--;
+
1569  av_log(NULL, AV_LOG_STDERR, "\n}\n");
+
1570  } else if (section->flags & SECTION_FLAG_IS_ARRAY) {
+
1571  av_log(NULL, AV_LOG_STDERR, "\n");
+
1572  json->indent_level--;
+
1573  JSON_INDENT();
+
1574  av_log(NULL, AV_LOG_STDERR, "]");
+
1575  } else {
+
1576  av_log(NULL, AV_LOG_STDERR, "%s", json->item_start_end);
+
1577  json->indent_level--;
+
1578  if (!json->compact)
+
1579  JSON_INDENT();
+
1580  av_log(NULL, AV_LOG_STDERR, "}");
+
1581  }
+
1582 }
+
1583 
+
1584 static inline void json_print_item_str(WriterContext *wctx,
+
1585  const char *key, const char *value)
+
1586 {
+
1587  AVBPrint buf;
+
1588 
+
1589  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1590  av_log(NULL, AV_LOG_STDERR, "\"%s\":", json_escape_str(&buf, key, wctx));
+
1591  av_bprint_clear(&buf);
+
1592  av_log(NULL, AV_LOG_STDERR, " \"%s\"", json_escape_str(&buf, value, wctx));
+
1593  av_bprint_finalize(&buf, NULL);
+
1594 }
+
1595 
+
1596 static void json_print_str(WriterContext *wctx, const char *key, const char *value)
+
1597 {
+
1598  JSONContext *json = wctx->priv;
+
1599  const struct section *parent_section = wctx->level ?
+
1600  wctx->section[wctx->level-1] : NULL;
+
1601 
+
1602  if (wctx->nb_item[wctx->level] || (parent_section && parent_section->id == SECTION_ID_PACKETS_AND_FRAMES))
+
1603  av_log(NULL, AV_LOG_STDERR, "%s", json->item_sep);
+
1604  if (!json->compact)
+
1605  JSON_INDENT();
+
1606  json_print_item_str(wctx, key, value);
+
1607 }
+
1608 
+
1609 static void json_print_int(WriterContext *wctx, const char *key, long long int value)
+
1610 {
+
1611  JSONContext *json = wctx->priv;
+
1612  const struct section *parent_section = wctx->level ?
+
1613  wctx->section[wctx->level-1] : NULL;
+
1614  AVBPrint buf;
+
1615 
+
1616  if (wctx->nb_item[wctx->level] || (parent_section && parent_section->id == SECTION_ID_PACKETS_AND_FRAMES))
+
1617  av_log(NULL, AV_LOG_STDERR, "%s", json->item_sep);
+
1618  if (!json->compact)
+
1619  JSON_INDENT();
+
1620 
+
1621  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1622  av_log(NULL, AV_LOG_STDERR, "\"%s\": %lld", json_escape_str(&buf, key, wctx), value);
+
1623  av_bprint_finalize(&buf, NULL);
+
1624 }
+
1625 
+
1626 static const Writer json_writer = {
+
1627  .name = "json",
+
1628  .priv_size = sizeof(JSONContext),
+
1629  .init = json_init,
+ + +
1632  .print_integer = json_print_int,
+
1633  .print_string = json_print_str,
+ +
1635  .priv_class = &json_class,
+
1636 };
+
1637 
+
1638 /* XML output */
+
1639 
+
1640 typedef struct XMLContext {
+
1641  const AVClass *class;
+ + + + +
1646 } XMLContext;
+
1647 
+
1648 #undef OFFSET
+
1649 #define OFFSET(x) offsetof(XMLContext, x)
+
1650 
+
1651 static const AVOption xml_options[] = {
+
1652  {"fully_qualified", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1653  {"q", "specify if the output should be fully qualified", OFFSET(fully_qualified), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1654  {"xsd_strict", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1655  {"x", "ensure that the output is XSD compliant", OFFSET(xsd_strict), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1 },
+
1656  {NULL},
+
1657 };
+
1658 
+
1659 DEFINE_WRITER_CLASS(xml);
+
1660 
+
1661 static av_cold int xml_init(WriterContext *wctx)
+
1662 {
+
1663  XMLContext *xml = wctx->priv;
+
1664 
+
1665  if (xml->xsd_strict) {
+
1666  xml->fully_qualified = 1;
+
1667 #define CHECK_COMPLIANCE(opt, opt_name) \
+
1668  if (opt) { \
+
1669  av_log(wctx, AV_LOG_ERROR, \
+
1670  "XSD-compliant output selected but option '%s' was selected, XML output may be non-compliant.\n" \
+
1671  "You need to disable such option with '-no%s'\n", opt_name, opt_name); \
+
1672  return AVERROR(EINVAL); \
+
1673  }
+
1674  CHECK_COMPLIANCE(show_private_data, "private");
+ + +
1677  }
+
1678 
+
1679  return 0;
+
1680 }
+
1681 
+
1682 #define XML_INDENT() av_log(NULL, AV_LOG_STDERR, "%*c", xml->indent_level * 4, ' ')
+
1683 
+ +
1685 {
+
1686  XMLContext *xml = wctx->priv;
+
1687  const struct section *section = wctx->section[wctx->level];
+
1688  const struct section *parent_section = wctx->level ?
+
1689  wctx->section[wctx->level-1] : NULL;
+
1690 
+
1691  if (wctx->level == 0) {
+
1692  const char *qual = " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+
1693  "xmlns:ffprobe=\"http://www.ffmpeg.org/schema/ffprobe\" "
+
1694  "xsi:schemaLocation=\"http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd\"";
+
1695 
+
1696  av_log(NULL, AV_LOG_STDERR, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+
1697  av_log(NULL, AV_LOG_STDERR, "<%sffprobe%s>\n",
+
1698  xml->fully_qualified ? "ffprobe:" : "",
+
1699  xml->fully_qualified ? qual : "");
+
1700  return;
+
1701  }
+
1702 
+
1703  if (xml->within_tag) {
+
1704  xml->within_tag = 0;
+
1705  av_log(NULL, AV_LOG_STDERR, ">\n");
+
1706  }
+ +
1708  xml->indent_level++;
+
1709  } else {
+
1710  if (parent_section && (parent_section->flags & SECTION_FLAG_IS_WRAPPER) &&
+
1711  wctx->level && wctx->nb_item[wctx->level-1])
+
1712  av_log(NULL, AV_LOG_STDERR, "\n");
+
1713  xml->indent_level++;
+
1714 
+ +
1716  XML_INDENT(); av_log(NULL, AV_LOG_STDERR, "<%s>\n", section->name);
+
1717  } else {
+
1718  XML_INDENT(); av_log(NULL, AV_LOG_STDERR, "<%s ", section->name);
+
1719  xml->within_tag = 1;
+
1720  }
+
1721  }
+
1722 }
+
1723 
+ +
1725 {
+
1726  XMLContext *xml = wctx->priv;
+
1727  const struct section *section = wctx->section[wctx->level];
+
1728 
+
1729  if (wctx->level == 0) {
+
1730  av_log(NULL, AV_LOG_STDERR, "</%sffprobe>\n", xml->fully_qualified ? "ffprobe:" : "");
+
1731  } else if (xml->within_tag) {
+
1732  xml->within_tag = 0;
+
1733  av_log(NULL, AV_LOG_STDERR, "/>\n");
+
1734  xml->indent_level--;
+ +
1736  xml->indent_level--;
+
1737  } else {
+
1738  XML_INDENT(); av_log(NULL, AV_LOG_STDERR, "</%s>\n", section->name);
+
1739  xml->indent_level--;
+
1740  }
+
1741 }
+
1742 
+
1743 static void xml_print_str(WriterContext *wctx, const char *key, const char *value)
+
1744 {
+
1745  AVBPrint buf;
+
1746  XMLContext *xml = wctx->priv;
+
1747  const struct section *section = wctx->section[wctx->level];
+
1748 
+
1749  av_bprint_init(&buf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
1750 
+ +
1752  XML_INDENT();
+
1753  av_bprint_escape(&buf, key, NULL,
+
1754  AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
+
1755  av_log(NULL, AV_LOG_STDERR, "<%s key=\"%s\"",
+
1756  section->element_name, buf.str);
+
1757  av_bprint_clear(&buf);
+
1758 
+
1759  av_bprint_escape(&buf, value, NULL,
+
1760  AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
+
1761  av_log(NULL, AV_LOG_STDERR, " value=\"%s\"/>\n", buf.str);
+
1762  } else {
+
1763  if (wctx->nb_item[wctx->level])
+
1764  av_log(NULL, AV_LOG_STDERR, " ");
+
1765 
+
1766  av_bprint_escape(&buf, value, NULL,
+
1767  AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
+
1768  av_log(NULL, AV_LOG_STDERR, "%s=\"%s\"", key, buf.str);
+
1769  }
+
1770 
+
1771  av_bprint_finalize(&buf, NULL);
+
1772 }
+
1773 
+
1774 static void xml_print_int(WriterContext *wctx, const char *key, long long int value)
+
1775 {
+
1776  if (wctx->nb_item[wctx->level])
+
1777  av_log(NULL, AV_LOG_STDERR, " ");
+
1778  av_log(NULL, AV_LOG_STDERR, "%s=\"%lld\"", key, value);
+
1779 }
+
1780 
+
1781 static Writer xml_writer = {
+
1782  .name = "xml",
+
1783  .priv_size = sizeof(XMLContext),
+
1784  .init = xml_init,
+ + +
1787  .print_integer = xml_print_int,
+
1788  .print_string = xml_print_str,
+ +
1790  .priv_class = &xml_class,
+
1791 };
+
1792 
+
1793 static void writer_register_all(void)
+
1794 {
+
1795 
+ + + + + + + +
1803 }
+
1804 
+
1805 #define print_fmt(k, f, ...) do { \
+
1806  av_bprint_clear(&pbuf); \
+
1807  av_bprintf(&pbuf, f, __VA_ARGS__); \
+
1808  writer_print_string(w, k, pbuf.str, 0); \
+
1809 } while (0)
+
1810 
+
1811 #define print_int(k, v) writer_print_integer(w, k, v)
+
1812 #define print_q(k, v, s) writer_print_rational(w, k, v, s)
+
1813 #define print_str(k, v) writer_print_string(w, k, v, 0)
+
1814 #define print_str_opt(k, v) writer_print_string(w, k, v, PRINT_STRING_OPT)
+
1815 #define print_str_validate(k, v) writer_print_string(w, k, v, PRINT_STRING_VALIDATE)
+
1816 #define print_time(k, v, tb) writer_print_time(w, k, v, tb, 0)
+
1817 #define print_ts(k, v) writer_print_ts(w, k, v, 0)
+
1818 #define print_duration_time(k, v, tb) writer_print_time(w, k, v, tb, 1)
+
1819 #define print_duration_ts(k, v) writer_print_ts(w, k, v, 1)
+
1820 #define print_val(k, v, u) do { \
+
1821  struct unit_value uv; \
+
1822  uv.val.i = v; \
+
1823  uv.unit = u; \
+
1824  writer_print_string(w, k, value_string(val_str, sizeof(val_str), uv), 0); \
+
1825 } while (0)
+
1826 
+
1827 #define print_section_header(s) writer_print_section_header(w, s)
+
1828 #define print_section_footer(s) writer_print_section_footer(w, s)
+
1829 
+
1830 #define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n) \
+
1831 { \
+
1832  ret = av_reallocp_array(&(ptr), (new_n), sizeof(*(ptr))); \
+
1833  if (ret < 0) \
+
1834  goto end; \
+
1835  memset( (ptr) + (cur_n), 0, ((new_n) - (cur_n)) * sizeof(*(ptr)) ); \
+
1836 }
+
1837 
+
1838 static inline int show_tags(WriterContext *w, AVDictionary *tags, int section_id)
+
1839 {
+
1840  AVDictionaryEntry *tag = NULL;
+
1841  int ret = 0;
+
1842 
+
1843  if (!tags)
+
1844  return 0;
+
1845  writer_print_section_header(w, section_id);
+
1846 
+
1847  while ((tag = av_dict_get(tags, "", tag, AV_DICT_IGNORE_SUFFIX))) {
+
1848  if ((ret = print_str_validate(tag->key, tag->value)) < 0)
+
1849  break;
+
1850  }
+ +
1852 
+
1853  return ret;
+
1854 }
+
1855 
+
1856 static void print_dynamic_hdr10_plus(WriterContext *w, const AVDynamicHDRPlus *metadata)
+
1857 {
+
1858  if (!metadata)
+
1859  return;
+
1860  print_int("application version", metadata->application_version);
+
1861  print_int("num_windows", metadata->num_windows);
+
1862  for (int n = 1; n < metadata->num_windows; n++) {
+
1863  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
+
1864  print_q("window_upper_left_corner_x",
+
1865  params->window_upper_left_corner_x,'/');
+
1866  print_q("window_upper_left_corner_y",
+
1867  params->window_upper_left_corner_y,'/');
+
1868  print_q("window_lower_right_corner_x",
+
1869  params->window_lower_right_corner_x,'/');
+
1870  print_q("window_lower_right_corner_y",
+
1871  params->window_lower_right_corner_y,'/');
+
1872  print_q("window_upper_left_corner_x",
+
1873  params->window_upper_left_corner_x,'/');
+
1874  print_q("window_upper_left_corner_y",
+
1875  params->window_upper_left_corner_y,'/');
+
1876  print_int("center_of_ellipse_x",
+
1877  params->center_of_ellipse_x ) ;
+
1878  print_int("center_of_ellipse_y",
+
1879  params->center_of_ellipse_y );
+
1880  print_int("rotation_angle",
+
1881  params->rotation_angle);
+
1882  print_int("semimajor_axis_internal_ellipse",
+
1883  params->semimajor_axis_internal_ellipse);
+
1884  print_int("semimajor_axis_external_ellipse",
+
1885  params->semimajor_axis_external_ellipse);
+
1886  print_int("semiminor_axis_external_ellipse",
+
1887  params->semiminor_axis_external_ellipse);
+
1888  print_int("overlap_process_option",
+
1889  params->overlap_process_option);
+
1890  }
+
1891  print_q("targeted_system_display_maximum_luminance",
+
1892  metadata->targeted_system_display_maximum_luminance,'/');
+
1893  if (metadata->targeted_system_display_actual_peak_luminance_flag) {
+
1894  print_int("num_rows_targeted_system_display_actual_peak_luminance",
+
1895  metadata->num_rows_targeted_system_display_actual_peak_luminance);
+
1896  print_int("num_cols_targeted_system_display_actual_peak_luminance",
+
1897  metadata->num_cols_targeted_system_display_actual_peak_luminance);
+
1898  for (int i = 0; i < metadata->num_rows_targeted_system_display_actual_peak_luminance; i++) {
+
1899  for (int j = 0; j < metadata->num_cols_targeted_system_display_actual_peak_luminance; j++) {
+
1900  print_q("targeted_system_display_actual_peak_luminance",
+
1901  metadata->targeted_system_display_actual_peak_luminance[i][j],'/');
+
1902  }
+
1903  }
+
1904  }
+
1905  for (int n = 0; n < metadata->num_windows; n++) {
+
1906  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
+
1907  for (int i = 0; i < 3; i++) {
+
1908  print_q("maxscl",params->maxscl[i],'/');
+
1909  }
+
1910  print_q("average_maxrgb",
+
1911  params->average_maxrgb,'/');
+
1912  print_int("num_distribution_maxrgb_percentiles",
+
1913  params->num_distribution_maxrgb_percentiles);
+
1914  for (int i = 0; i < params->num_distribution_maxrgb_percentiles; i++) {
+
1915  print_int("distribution_maxrgb_percentage",
+
1916  params->distribution_maxrgb[i].percentage);
+
1917  print_q("distribution_maxrgb_percentile",
+
1918  params->distribution_maxrgb[i].percentile,'/');
+
1919  }
+
1920  print_q("fraction_bright_pixels",
+
1921  params->fraction_bright_pixels,'/');
+
1922  }
+
1923  if (metadata->mastering_display_actual_peak_luminance_flag) {
+
1924  print_int("num_rows_mastering_display_actual_peak_luminance",
+
1925  metadata->num_rows_mastering_display_actual_peak_luminance);
+
1926  print_int("num_cols_mastering_display_actual_peak_luminance",
+
1927  metadata->num_cols_mastering_display_actual_peak_luminance);
+
1928  for (int i = 0; i < metadata->num_rows_mastering_display_actual_peak_luminance; i++) {
+
1929  for (int j = 0; j < metadata->num_cols_mastering_display_actual_peak_luminance; j++) {
+
1930  print_q("mastering_display_actual_peak_luminance",
+
1931  metadata->mastering_display_actual_peak_luminance[i][j],'/');
+
1932  }
+
1933  }
+
1934  }
+
1935 
+
1936  for (int n = 0; n < metadata->num_windows; n++) {
+
1937  const AVHDRPlusColorTransformParams *params = &metadata->params[n];
+
1938  if (params->tone_mapping_flag) {
+
1939  print_q("knee_point_x", params->knee_point_x,'/');
+
1940  print_q("knee_point_y", params->knee_point_y,'/');
+
1941  print_int("num_bezier_curve_anchors",
+
1942  params->num_bezier_curve_anchors );
+
1943  for (int i = 0; i < params->num_bezier_curve_anchors; i++) {
+
1944  print_q("bezier_curve_anchors",
+
1945  params->bezier_curve_anchors[i],'/');
+
1946  }
+
1947  }
+
1948  if (params->color_saturation_mapping_flag) {
+
1949  print_q("color_saturation_weight",
+
1950  params->color_saturation_weight,'/');
+
1951  }
+
1952  }
+
1953 }
+
1954 
+ +
1956  AVCodecParameters *par,
+
1957  const AVPacketSideData *side_data,
+
1958  int nb_side_data,
+
1959  SectionID id_data_list,
+
1960  SectionID id_data)
+
1961 {
+
1962  int i;
+
1963 
+
1964  writer_print_section_header(w, id_data_list);
+
1965  for (i = 0; i < nb_side_data; i++) {
+
1966  const AVPacketSideData *sd = &side_data[i];
+
1967  const char *name = av_packet_side_data_name(sd->type);
+
1968 
+
1969  writer_print_section_header(w, id_data);
+
1970  print_str("side_data_type", name ? name : "unknown");
+
1971  if (sd->type == AV_PKT_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
+
1972  writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
+
1973  print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
+
1974  } else if (sd->type == AV_PKT_DATA_STEREO3D) {
+
1975  const AVStereo3D *stereo = (AVStereo3D *)sd->data;
+
1976  print_str("type", av_stereo3d_type_name(stereo->type));
+
1977  print_int("inverted", !!(stereo->flags & AV_STEREO3D_FLAG_INVERT));
+
1978  } else if (sd->type == AV_PKT_DATA_SPHERICAL) {
+
1979  const AVSphericalMapping *spherical = (AVSphericalMapping *)sd->data;
+
1980  print_str("projection", av_spherical_projection_name(spherical->projection));
+
1981  if (spherical->projection == AV_SPHERICAL_CUBEMAP) {
+
1982  print_int("padding", spherical->padding);
+
1983  } else if (spherical->projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) {
+
1984  size_t l, t, r, b;
+
1985  av_spherical_tile_bounds(spherical, par->width, par->height,
+
1986  &l, &t, &r, &b);
+
1987  print_int("bound_left", l);
+
1988  print_int("bound_top", t);
+
1989  print_int("bound_right", r);
+
1990  print_int("bound_bottom", b);
+
1991  }
+
1992 
+
1993  print_int("yaw", (double) spherical->yaw / (1 << 16));
+
1994  print_int("pitch", (double) spherical->pitch / (1 << 16));
+
1995  print_int("roll", (double) spherical->roll / (1 << 16));
+
1996  } else if (sd->type == AV_PKT_DATA_SKIP_SAMPLES && sd->size == 10) {
+
1997  print_int("skip_samples", AV_RL32(sd->data));
+
1998  print_int("discard_padding", AV_RL32(sd->data + 4));
+
1999  print_int("skip_reason", AV_RL8(sd->data + 8));
+
2000  print_int("discard_reason", AV_RL8(sd->data + 9));
+
2001  } else if (sd->type == AV_PKT_DATA_MASTERING_DISPLAY_METADATA) {
+
2002  AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data;
+
2003 
+
2004  if (metadata->has_primaries) {
+
2005  print_q("red_x", metadata->display_primaries[0][0], '/');
+
2006  print_q("red_y", metadata->display_primaries[0][1], '/');
+
2007  print_q("green_x", metadata->display_primaries[1][0], '/');
+
2008  print_q("green_y", metadata->display_primaries[1][1], '/');
+
2009  print_q("blue_x", metadata->display_primaries[2][0], '/');
+
2010  print_q("blue_y", metadata->display_primaries[2][1], '/');
+
2011 
+
2012  print_q("white_point_x", metadata->white_point[0], '/');
+
2013  print_q("white_point_y", metadata->white_point[1], '/');
+
2014  }
+
2015 
+
2016  if (metadata->has_luminance) {
+
2017  print_q("min_luminance", metadata->min_luminance, '/');
+
2018  print_q("max_luminance", metadata->max_luminance, '/');
+
2019  }
+
2020  } else if (sd->type == AV_PKT_DATA_CONTENT_LIGHT_LEVEL) {
+
2021  AVContentLightMetadata *metadata = (AVContentLightMetadata *)sd->data;
+
2022  print_int("max_content", metadata->MaxCLL);
+
2023  print_int("max_average", metadata->MaxFALL);
+
2024  } else if (sd->type == AV_PKT_DATA_DOVI_CONF) {
+
2025  AVDOVIDecoderConfigurationRecord *dovi = (AVDOVIDecoderConfigurationRecord *)sd->data;
+
2026  print_int("dv_version_major", dovi->dv_version_major);
+
2027  print_int("dv_version_minor", dovi->dv_version_minor);
+
2028  print_int("dv_profile", dovi->dv_profile);
+
2029  print_int("dv_level", dovi->dv_level);
+
2030  print_int("rpu_present_flag", dovi->rpu_present_flag);
+
2031  print_int("el_present_flag", dovi->el_present_flag);
+
2032  print_int("bl_present_flag", dovi->bl_present_flag);
+
2033  print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id);
+
2034  } else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) {
+
2035  enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data;
+
2036  print_int("service_type", *t);
+
2037  } else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) {
+
2038  print_int("id", *sd->data);
+
2039  } else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) {
+
2040  const AVCPBProperties *prop = (AVCPBProperties *)sd->data;
+
2041  print_int("max_bitrate", prop->max_bitrate);
+
2042  print_int("min_bitrate", prop->min_bitrate);
+
2043  print_int("avg_bitrate", prop->avg_bitrate);
+
2044  print_int("buffer_size", prop->buffer_size);
+
2045  print_int("vbv_delay", prop->vbv_delay);
+
2046  } else if (sd->type == AV_PKT_DATA_WEBVTT_IDENTIFIER ||
+
2047  sd->type == AV_PKT_DATA_WEBVTT_SETTINGS) {
+
2048  if (do_show_data)
+
2049  writer_print_data(w, "data", sd->data, sd->size);
+
2050  writer_print_data_hash(w, "data_hash", sd->data, sd->size);
+
2051  }
+ +
2053  }
+ +
2055 }
+
2056 
+
2057 static void print_color_range(WriterContext *w, enum AVColorRange color_range)
+
2058 {
+
2059  const char *val = av_color_range_name(color_range);
+
2060  if (!val || color_range == AVCOL_RANGE_UNSPECIFIED) {
+
2061  print_str_opt("color_range", "unknown");
+
2062  } else {
+
2063  print_str("color_range", val);
+
2064  }
+
2065 }
+
2066 
+
2067 static void print_color_space(WriterContext *w, enum AVColorSpace color_space)
+
2068 {
+
2069  const char *val = av_color_space_name(color_space);
+
2070  if (!val || color_space == AVCOL_SPC_UNSPECIFIED) {
+
2071  print_str_opt("color_space", "unknown");
+
2072  } else {
+
2073  print_str("color_space", val);
+
2074  }
+
2075 }
+
2076 
+
2077 static void print_primaries(WriterContext *w, enum AVColorPrimaries color_primaries)
+
2078 {
+
2079  const char *val = av_color_primaries_name(color_primaries);
+
2080  if (!val || color_primaries == AVCOL_PRI_UNSPECIFIED) {
+
2081  print_str_opt("color_primaries", "unknown");
+
2082  } else {
+
2083  print_str("color_primaries", val);
+
2084  }
+
2085 }
+
2086 
+
2087 static void print_color_trc(WriterContext *w, enum AVColorTransferCharacteristic color_trc)
+
2088 {
+
2089  const char *val = av_color_transfer_name(color_trc);
+
2090  if (!val || color_trc == AVCOL_TRC_UNSPECIFIED) {
+
2091  print_str_opt("color_transfer", "unknown");
+
2092  } else {
+
2093  print_str("color_transfer", val);
+
2094  }
+
2095 }
+
2096 
+
2097 static void print_chroma_location(WriterContext *w, enum AVChromaLocation chroma_location)
+
2098 {
+
2099  const char *val = av_chroma_location_name(chroma_location);
+
2100  if (!val || chroma_location == AVCHROMA_LOC_UNSPECIFIED) {
+
2101  print_str_opt("chroma_location", "unspecified");
+
2102  } else {
+
2103  print_str("chroma_location", val);
+
2104  }
+
2105 }
+
2106 
+
2107 
+
2108 static void clear_log(int need_lock)
+
2109 {
+
2110  int i;
+
2111 
+
2112  if (need_lock)
+
2113  pthread_mutex_lock(&log_mutex);
+
2114  for (i=0; i<log_buffer_size; i++) {
+
2115  av_freep(&log_buffer[i].context_name);
+
2116  av_freep(&log_buffer[i].parent_name);
+
2117  av_freep(&log_buffer[i].log_message);
+
2118  }
+
2119  log_buffer_size = 0;
+
2120  if(need_lock)
+
2121  pthread_mutex_unlock(&log_mutex);
+
2122 }
+
2123 
+
2124 static int show_log(WriterContext *w, int section_ids, int section_id, int log_level)
+
2125 {
+
2126  int i;
+
2127  pthread_mutex_lock(&log_mutex);
+
2128  if (!log_buffer_size) {
+
2129  pthread_mutex_unlock(&log_mutex);
+
2130  return 0;
+
2131  }
+
2132  writer_print_section_header(w, section_ids);
+
2133 
+
2134  for (i=0; i<log_buffer_size; i++) {
+
2135  if (log_buffer[i].log_level <= log_level) {
+
2136  writer_print_section_header(w, section_id);
+
2137  print_str("context", log_buffer[i].context_name);
+
2138  print_int("level", log_buffer[i].log_level);
+
2139  print_int("category", log_buffer[i].category);
+
2140  if (log_buffer[i].parent_name) {
+
2141  print_str("parent_context", log_buffer[i].parent_name);
+
2142  print_int("parent_category", log_buffer[i].parent_category);
+
2143  } else {
+
2144  print_str_opt("parent_context", "N/A");
+
2145  print_str_opt("parent_category", "N/A");
+
2146  }
+
2147  print_str("message", log_buffer[i].log_message);
+ +
2149  }
+
2150  }
+
2151  clear_log(0);
+
2152  pthread_mutex_unlock(&log_mutex);
+
2153 
+ +
2155 
+
2156  return 0;
+
2157 }
+
2158 
+
2159 static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int packet_idx)
+
2160 {
+
2161  char val_str[128];
+
2162  AVStream *st = ifile->streams[pkt->stream_index].st;
+
2163  AVBPrint pbuf;
+
2164  const char *s;
+
2165 
+
2166  av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
2167 
+ +
2169 
+
2170  s = av_get_media_type_string(st->codecpar->codec_type);
+
2171  if (s) print_str ("codec_type", s);
+
2172  else print_str_opt("codec_type", "unknown");
+
2173  print_int("stream_index", pkt->stream_index);
+
2174  print_ts ("pts", pkt->pts);
+
2175  print_time("pts_time", pkt->pts, &st->time_base);
+
2176  print_ts ("dts", pkt->dts);
+
2177  print_time("dts_time", pkt->dts, &st->time_base);
+
2178  print_duration_ts("duration", pkt->duration);
+
2179  print_duration_time("duration_time", pkt->duration, &st->time_base);
+
2180  print_val("size", pkt->size, unit_byte_str);
+
2181  if (pkt->pos != -1) print_fmt ("pos", "%"PRId64, pkt->pos);
+
2182  else print_str_opt("pos", "N/A");
+
2183  print_fmt("flags", "%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
+
2184  pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_');
+
2185 
+
2186  if (pkt->side_data_elems) {
+
2187  size_t size;
+
2188  const uint8_t *side_metadata;
+
2189 
+
2190  side_metadata = av_packet_get_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, &size);
+
2191  if (side_metadata && size && do_show_packet_tags) {
+
2192  AVDictionary *dict = NULL;
+
2193  if (av_packet_unpack_dictionary(side_metadata, size, &dict) >= 0)
+ +
2195  av_dict_free(&dict);
+
2196  }
+
2197 
+
2198  print_pkt_side_data(w, st->codecpar, pkt->side_data, pkt->side_data_elems,
+ + +
2201  }
+
2202 
+
2203  if (do_show_data)
+
2204  writer_print_data(w, "data", pkt->data, pkt->size);
+
2205  writer_print_data_hash(w, "data_hash", pkt->data, pkt->size);
+ +
2207 
+
2208  av_bprint_finalize(&pbuf, NULL);
+
2209  fflush(stdout);
+
2210 }
+
2211 
+
2212 static void show_subtitle(WriterContext *w, AVSubtitle *sub, AVStream *stream,
+
2213  AVFormatContext *fmt_ctx)
+
2214 {
+
2215  AVBPrint pbuf;
+
2216 
+
2217  av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
2218 
+ +
2220 
+
2221  print_str ("media_type", "subtitle");
+
2222  print_ts ("pts", sub->pts);
+
2223  print_time("pts_time", sub->pts, &AV_TIME_BASE_Q);
+
2224  print_int ("format", sub->format);
+
2225  print_int ("start_display_time", sub->start_display_time);
+
2226  print_int ("end_display_time", sub->end_display_time);
+
2227  print_int ("num_rects", sub->num_rects);
+
2228 
+ +
2230 
+
2231  av_bprint_finalize(&pbuf, NULL);
+
2232  fflush(stdout);
+
2233 }
+
2234 
+
2235 static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
+
2236  AVFormatContext *fmt_ctx)
+
2237 {
+
2238  AVBPrint pbuf;
+
2239  char val_str[128];
+
2240  const char *s;
+
2241  int i;
+
2242 
+
2243  av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
2244 
+ +
2246 
+
2247  s = av_get_media_type_string(stream->codecpar->codec_type);
+
2248  if (s) print_str ("media_type", s);
+
2249  else print_str_opt("media_type", "unknown");
+
2250  print_int("stream_index", stream->index);
+
2251  print_int("key_frame", frame->key_frame);
+
2252  print_ts ("pts", frame->pts);
+
2253  print_time("pts_time", frame->pts, &stream->time_base);
+
2254  print_ts ("pkt_dts", frame->pkt_dts);
+
2255  print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
+
2256  print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
+
2257  print_time("best_effort_timestamp_time", frame->best_effort_timestamp, &stream->time_base);
+
2258  print_duration_ts ("pkt_duration", frame->pkt_duration);
+
2259  print_duration_time("pkt_duration_time", frame->pkt_duration, &stream->time_base);
+
2260  if (frame->pkt_pos != -1) print_fmt ("pkt_pos", "%"PRId64, frame->pkt_pos);
+
2261  else print_str_opt("pkt_pos", "N/A");
+
2262  if (frame->pkt_size != -1) print_val ("pkt_size", frame->pkt_size, unit_byte_str);
+
2263  else print_str_opt("pkt_size", "N/A");
+
2264 
+
2265  switch (stream->codecpar->codec_type) {
+
2266  AVRational sar;
+
2267 
+
2268  case AVMEDIA_TYPE_VIDEO:
+
2269  print_int("width", frame->width);
+
2270  print_int("height", frame->height);
+
2271  s = av_get_pix_fmt_name(frame->format);
+
2272  if (s) print_str ("pix_fmt", s);
+
2273  else print_str_opt("pix_fmt", "unknown");
+
2274  sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, frame);
+
2275  if (sar.num) {
+
2276  print_q("sample_aspect_ratio", sar, ':');
+
2277  } else {
+
2278  print_str_opt("sample_aspect_ratio", "N/A");
+
2279  }
+
2280  print_fmt("pict_type", "%c", av_get_picture_type_char(frame->pict_type));
+
2281  print_int("coded_picture_number", frame->coded_picture_number);
+
2282  print_int("display_picture_number", frame->display_picture_number);
+
2283  print_int("interlaced_frame", frame->interlaced_frame);
+
2284  print_int("top_field_first", frame->top_field_first);
+
2285  print_int("repeat_pict", frame->repeat_pict);
+
2286 
+
2287  print_color_range(w, frame->color_range);
+
2288  print_color_space(w, frame->colorspace);
+
2289  print_primaries(w, frame->color_primaries);
+
2290  print_color_trc(w, frame->color_trc);
+
2291  print_chroma_location(w, frame->chroma_location);
+
2292  break;
+
2293 
+
2294  case AVMEDIA_TYPE_AUDIO:
+
2295  s = av_get_sample_fmt_name(frame->format);
+
2296  if (s) print_str ("sample_fmt", s);
+
2297  else print_str_opt("sample_fmt", "unknown");
+
2298  print_int("nb_samples", frame->nb_samples);
+
2299  print_int("channels", frame->channels);
+
2300  if (frame->channel_layout) {
+
2301  av_bprint_clear(&pbuf);
+
2302  av_bprint_channel_layout(&pbuf, frame->channels,
+
2303  frame->channel_layout);
+
2304  print_str ("channel_layout", pbuf.str);
+
2305  } else
+
2306  print_str_opt("channel_layout", "unknown");
+
2307  break;
+
2308  }
+
2309  if (do_show_frame_tags)
+
2310  show_tags(w, frame->metadata, SECTION_ID_FRAME_TAGS);
+
2311  if (do_show_log)
+ +
2313  if (frame->nb_side_data) {
+ +
2315  for (i = 0; i < frame->nb_side_data; i++) {
+
2316  AVFrameSideData *sd = frame->side_data[i];
+
2317  const char *name;
+
2318 
+ +
2320  name = av_frame_side_data_name(sd->type);
+
2321  print_str("side_data_type", name ? name : "unknown");
+
2322  if (sd->type == AV_FRAME_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
+
2323  writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
+
2324  print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
+
2325  } else if (sd->type == AV_FRAME_DATA_GOP_TIMECODE && sd->size >= 8) {
+
2326  char tcbuf[AV_TIMECODE_STR_SIZE];
+
2327  av_timecode_make_mpeg_tc_string(tcbuf, *(int64_t *)(sd->data));
+
2328  print_str("timecode", tcbuf);
+
2329  } else if (sd->type == AV_FRAME_DATA_S12M_TIMECODE && sd->size == 16) {
+
2330  uint32_t *tc = (uint32_t*)sd->data;
+
2331  int m = FFMIN(tc[0],3);
+ +
2333  for (int j = 1; j <= m ; j++) {
+
2334  char tcbuf[AV_TIMECODE_STR_SIZE];
+
2335  av_timecode_make_smpte_tc_string2(tcbuf, stream->avg_frame_rate, tc[j], 0, 0);
+ +
2337  print_str("value", tcbuf);
+ +
2339  }
+ +
2341  } else if (sd->type == AV_FRAME_DATA_MASTERING_DISPLAY_METADATA) {
+
2342  AVMasteringDisplayMetadata *metadata = (AVMasteringDisplayMetadata *)sd->data;
+
2343 
+
2344  if (metadata->has_primaries) {
+
2345  print_q("red_x", metadata->display_primaries[0][0], '/');
+
2346  print_q("red_y", metadata->display_primaries[0][1], '/');
+
2347  print_q("green_x", metadata->display_primaries[1][0], '/');
+
2348  print_q("green_y", metadata->display_primaries[1][1], '/');
+
2349  print_q("blue_x", metadata->display_primaries[2][0], '/');
+
2350  print_q("blue_y", metadata->display_primaries[2][1], '/');
+
2351 
+
2352  print_q("white_point_x", metadata->white_point[0], '/');
+
2353  print_q("white_point_y", metadata->white_point[1], '/');
+
2354  }
+
2355 
+
2356  if (metadata->has_luminance) {
+
2357  print_q("min_luminance", metadata->min_luminance, '/');
+
2358  print_q("max_luminance", metadata->max_luminance, '/');
+
2359  }
+
2360  } else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_PLUS) {
+
2361  AVDynamicHDRPlus *metadata = (AVDynamicHDRPlus *)sd->data;
+
2362  print_dynamic_hdr10_plus(w, metadata);
+
2363  } else if (sd->type == AV_FRAME_DATA_CONTENT_LIGHT_LEVEL) {
+
2364  AVContentLightMetadata *metadata = (AVContentLightMetadata *)sd->data;
+
2365  print_int("max_content", metadata->MaxCLL);
+
2366  print_int("max_average", metadata->MaxFALL);
+
2367  } else if (sd->type == AV_FRAME_DATA_ICC_PROFILE) {
+
2368  AVDictionaryEntry *tag = av_dict_get(sd->metadata, "name", NULL, AV_DICT_MATCH_CASE);
+
2369  if (tag)
+
2370  print_str(tag->key, tag->value);
+
2371  print_int("size", sd->size);
+
2372  }
+ +
2374  }
+ +
2376  }
+
2377 
+ +
2379 
+
2380  av_bprint_finalize(&pbuf, NULL);
+
2381  fflush(stdout);
+
2382 }
+
2383 
+
2384 static av_always_inline int process_frame(WriterContext *w,
+
2385  InputFile *ifile,
+
2386  AVFrame *frame, AVPacket *pkt,
+
2387  int *packet_new)
+
2388 {
+
2389  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2390  AVCodecContext *dec_ctx = ifile->streams[pkt->stream_index].dec_ctx;
+
2391  AVCodecParameters *par = ifile->streams[pkt->stream_index].st->codecpar;
+
2392  AVSubtitle sub;
+
2393  int ret = 0, got_frame = 0;
+
2394 
+
2395  clear_log(1);
+
2396  if (dec_ctx && dec_ctx->codec) {
+
2397  switch (par->codec_type) {
+
2398  case AVMEDIA_TYPE_VIDEO:
+
2399  case AVMEDIA_TYPE_AUDIO:
+
2400  if (*packet_new) {
+
2401  ret = avcodec_send_packet(dec_ctx, pkt);
+
2402  if (ret == AVERROR(EAGAIN)) {
+
2403  ret = 0;
+
2404  } else if (ret >= 0 || ret == AVERROR_EOF) {
+
2405  ret = 0;
+
2406  *packet_new = 0;
+
2407  }
+
2408  }
+
2409  if (ret >= 0) {
+
2410  ret = avcodec_receive_frame(dec_ctx, frame);
+
2411  if (ret >= 0) {
+
2412  got_frame = 1;
+
2413  } else if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) {
+
2414  ret = 0;
+
2415  }
+
2416  }
+
2417  break;
+
2418 
+
2419  case AVMEDIA_TYPE_SUBTITLE:
+
2420  if (*packet_new)
+
2421  ret = avcodec_decode_subtitle2(dec_ctx, &sub, &got_frame, pkt);
+
2422  *packet_new = 0;
+
2423  break;
+
2424  default:
+
2425  *packet_new = 0;
+
2426  }
+
2427  } else {
+
2428  *packet_new = 0;
+
2429  }
+
2430 
+
2431  if (ret < 0)
+
2432  return ret;
+
2433  if (got_frame) {
+
2434  int is_sub = (par->codec_type == AVMEDIA_TYPE_SUBTITLE);
+
2435  nb_streams_frames[pkt->stream_index]++;
+
2436  if (do_show_frames) {
+
2437  if (is_sub) {
+
2438  show_subtitle(w, &sub, ifile->streams[pkt->stream_index].st, fmt_ctx);
+
2439  } else {
+
2440  show_frame(w, frame, ifile->streams[pkt->stream_index].st, fmt_ctx);
+
2441  }
+
2442  }
+
2443  if (is_sub) {
+
2444  avsubtitle_free(&sub);
+
2445  }
+
2446  }
+
2447  return got_frame || *packet_new;
+
2448 }
+
2449 
+
2450 static void log_read_interval(const ReadInterval *interval, void *log_ctx, int log_level)
+
2451 {
+
2452  av_log(log_ctx, log_level, "id:%d", interval->id);
+
2453 
+
2454  if (interval->has_start) {
+
2455  av_log(log_ctx, log_level, " start:%s%s", interval->start_is_offset ? "+" : "",
+
2456  av_ts2timestr(interval->start, &AV_TIME_BASE_Q));
+
2457  } else {
+
2458  av_log(log_ctx, log_level, " start:N/A");
+
2459  }
+
2460 
+
2461  if (interval->has_end) {
+
2462  av_log(log_ctx, log_level, " end:%s", interval->end_is_offset ? "+" : "");
+
2463  if (interval->duration_frames)
+
2464  av_log(log_ctx, log_level, "#%"PRId64, interval->end);
+
2465  else
+
2466  av_log(log_ctx, log_level, "%s", av_ts2timestr(interval->end, &AV_TIME_BASE_Q));
+
2467  } else {
+
2468  av_log(log_ctx, log_level, " end:N/A");
+
2469  }
+
2470 
+
2471  av_log(log_ctx, log_level, "\n");
+
2472 }
+
2473 
+ +
2475  const ReadInterval *interval, int64_t *cur_ts)
+
2476 {
+
2477  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2478  AVPacket *pkt = NULL;
+
2479  AVFrame *frame = NULL;
+
2480  int ret = 0, i = 0, frame_count = 0;
+
2481  int64_t start = -INT64_MAX, end = interval->end;
+
2482  int has_start = 0, has_end = interval->has_end && !interval->end_is_offset;
+
2483 
+
2484  av_log(NULL, AV_LOG_VERBOSE, "Processing read interval ");
+
2485  log_read_interval(interval, NULL, AV_LOG_VERBOSE);
+
2486 
+
2487  if (interval->has_start) {
+
2488  int64_t target;
+
2489  if (interval->start_is_offset) {
+
2490  if (*cur_ts == AV_NOPTS_VALUE) {
+
2491  av_log(NULL, AV_LOG_ERROR,
+
2492  "Could not seek to relative position since current "
+
2493  "timestamp is not defined\n");
+
2494  ret = AVERROR(EINVAL);
+
2495  goto end;
+
2496  }
+
2497  target = *cur_ts + interval->start;
+
2498  } else {
+
2499  target = interval->start;
+
2500  }
+
2501 
+
2502  av_log(NULL, AV_LOG_VERBOSE, "Seeking to read interval start point %s\n",
+
2503  av_ts2timestr(target, &AV_TIME_BASE_Q));
+
2504  if ((ret = avformat_seek_file(fmt_ctx, -1, -INT64_MAX, target, INT64_MAX, 0)) < 0) {
+
2505  av_log(NULL, AV_LOG_ERROR, "Could not seek to position %"PRId64": %s\n",
+
2506  interval->start, av_err2str(ret));
+
2507  goto end;
+
2508  }
+
2509  }
+
2510 
+
2511  frame = av_frame_alloc();
+
2512  if (!frame) {
+
2513  ret = AVERROR(ENOMEM);
+
2514  goto end;
+
2515  }
+
2516  pkt = av_packet_alloc();
+
2517  if (!pkt) {
+
2518  ret = AVERROR(ENOMEM);
+
2519  goto end;
+
2520  }
+
2521  while (!av_read_frame(fmt_ctx, pkt)) {
+
2522  if (fmt_ctx->nb_streams > nb_streams) {
+
2523  REALLOCZ_ARRAY_STREAM(nb_streams_frames, nb_streams, fmt_ctx->nb_streams);
+
2524  REALLOCZ_ARRAY_STREAM(nb_streams_packets, nb_streams, fmt_ctx->nb_streams);
+
2525  REALLOCZ_ARRAY_STREAM(selected_streams, nb_streams, fmt_ctx->nb_streams);
+
2526  nb_streams = fmt_ctx->nb_streams;
+
2527  }
+
2528  if (selected_streams[pkt->stream_index]) {
+
2529  AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
+
2530 
+
2531  if (pkt->pts != AV_NOPTS_VALUE)
+
2532  *cur_ts = av_rescale_q(pkt->pts, tb, AV_TIME_BASE_Q);
+
2533 
+
2534  if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
+
2535  start = *cur_ts;
+
2536  has_start = 1;
+
2537  }
+
2538 
+
2539  if (has_start && !has_end && interval->end_is_offset) {
+
2540  end = start + interval->end;
+
2541  has_end = 1;
+
2542  }
+
2543 
+
2544  if (interval->end_is_offset && interval->duration_frames) {
+
2545  if (frame_count >= interval->end)
+
2546  break;
+
2547  } else if (has_end && *cur_ts != AV_NOPTS_VALUE && *cur_ts >= end) {
+
2548  break;
+
2549  }
+
2550 
+
2551  frame_count++;
+
2552  if (do_read_packets) {
+
2553  if (do_show_packets)
+
2554  show_packet(w, ifile, pkt, i++);
+
2555  nb_streams_packets[pkt->stream_index]++;
+
2556  }
+
2557  if (do_read_frames) {
+
2558  int packet_new = 1;
+
2559  while (process_frame(w, ifile, frame, pkt, &packet_new) > 0);
+
2560  }
+
2561  }
+
2562  av_packet_unref(pkt);
+
2563  }
+
2564  av_packet_unref(pkt);
+
2565  //Flush remaining frames that are cached in the decoder
+
2566  for (i = 0; i < fmt_ctx->nb_streams; i++) {
+
2567  pkt->stream_index = i;
+
2568  if (do_read_frames)
+
2569  while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
+
2570  }
+
2571 
+
2572 end:
+
2573  av_frame_free(&frame);
+
2574  av_packet_free(&pkt);
+
2575  if (ret < 0) {
+
2576  av_log(NULL, AV_LOG_ERROR, "Could not read packets in interval ");
+
2577  log_read_interval(interval, NULL, AV_LOG_ERROR);
+
2578  }
+
2579  return ret;
+
2580 }
+
2581 
+
2582 static int read_packets(WriterContext *w, InputFile *ifile)
+
2583 {
+
2584  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2585  int i, ret = 0;
+
2586  int64_t cur_ts = fmt_ctx->start_time;
+
2587 
+
2588  if (read_intervals_nb == 0) {
+
2589  ReadInterval interval = (ReadInterval) { .has_start = 0, .has_end = 0 };
+
2590  ret = read_interval_packets(w, ifile, &interval, &cur_ts);
+
2591  } else {
+
2592  for (i = 0; i < read_intervals_nb; i++) {
+
2593  ret = read_interval_packets(w, ifile, &read_intervals[i], &cur_ts);
+
2594  if (ret < 0)
+
2595  break;
+
2596  }
+
2597  }
+
2598 
+
2599  return ret;
+
2600 }
+
2601 
+
2602 static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int in_program)
+
2603 {
+
2604  AVStream *stream = ist->st;
+
2605  AVCodecParameters *par;
+
2606  AVCodecContext *dec_ctx;
+
2607  char val_str[128];
+
2608  const char *s;
+
2609  AVRational sar, dar;
+
2610  AVBPrint pbuf;
+
2611  const AVCodecDescriptor *cd;
+
2612  int ret = 0;
+
2613  const char *profile = NULL;
+
2614 
+
2615  av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
2616 
+ +
2618 
+
2619  print_int("index", stream->index);
+
2620 
+
2621  par = stream->codecpar;
+
2622  dec_ctx = ist->dec_ctx;
+
2623  if ((cd = avcodec_descriptor_get(par->codec_id))) {
+
2624  print_str("codec_name", cd->name);
+
2625  if (!do_bitexact) {
+
2626  print_str("codec_long_name",
+
2627  cd->long_name ? cd->long_name : "unknown");
+
2628  }
+
2629  } else {
+
2630  print_str_opt("codec_name", "unknown");
+
2631  if (!do_bitexact) {
+
2632  print_str_opt("codec_long_name", "unknown");
+
2633  }
+
2634  }
+
2635 
+
2636  if (!do_bitexact && (profile = avcodec_profile_name(par->codec_id, par->profile)))
+
2637  print_str("profile", profile);
+
2638  else {
+
2639  if (par->profile != FF_PROFILE_UNKNOWN) {
+
2640  char profile_num[12];
+
2641  snprintf(profile_num, sizeof(profile_num), "%d", par->profile);
+
2642  print_str("profile", profile_num);
+
2643  } else
+
2644  print_str_opt("profile", "unknown");
+
2645  }
+
2646 
+
2647  s = av_get_media_type_string(par->codec_type);
+
2648  if (s) print_str ("codec_type", s);
+
2649  else print_str_opt("codec_type", "unknown");
+
2650 
+
2651  /* print AVI/FourCC tag */
+
2652  print_str("codec_tag_string", av_fourcc2str(par->codec_tag));
+
2653  print_fmt("codec_tag", "0x%04"PRIx32, par->codec_tag);
+
2654 
+
2655  switch (par->codec_type) {
+
2656  case AVMEDIA_TYPE_VIDEO:
+
2657  print_int("width", par->width);
+
2658  print_int("height", par->height);
+
2659  if (dec_ctx) {
+
2660  print_int("coded_width", dec_ctx->coded_width);
+
2661  print_int("coded_height", dec_ctx->coded_height);
+
2662  print_int("closed_captions", !!(dec_ctx->properties & FF_CODEC_PROPERTY_CLOSED_CAPTIONS));
+
2663  }
+
2664  print_int("has_b_frames", par->video_delay);
+
2665  sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, NULL);
+
2666  if (sar.num) {
+
2667  print_q("sample_aspect_ratio", sar, ':');
+
2668  av_reduce(&dar.num, &dar.den,
+
2669  par->width * sar.num,
+
2670  par->height * sar.den,
+
2671  1024*1024);
+
2672  print_q("display_aspect_ratio", dar, ':');
+
2673  } else {
+
2674  print_str_opt("sample_aspect_ratio", "N/A");
+
2675  print_str_opt("display_aspect_ratio", "N/A");
+
2676  }
+
2677  s = av_get_pix_fmt_name(par->format);
+
2678  if (s) print_str ("pix_fmt", s);
+
2679  else print_str_opt("pix_fmt", "unknown");
+
2680  print_int("level", par->level);
+
2681 
+
2682  print_color_range(w, par->color_range);
+
2683  print_color_space(w, par->color_space);
+
2684  print_color_trc(w, par->color_trc);
+
2685  print_primaries(w, par->color_primaries);
+
2686  print_chroma_location(w, par->chroma_location);
+
2687 
+
2688  if (par->field_order == AV_FIELD_PROGRESSIVE)
+
2689  print_str("field_order", "progressive");
+
2690  else if (par->field_order == AV_FIELD_TT)
+
2691  print_str("field_order", "tt");
+
2692  else if (par->field_order == AV_FIELD_BB)
+
2693  print_str("field_order", "bb");
+
2694  else if (par->field_order == AV_FIELD_TB)
+
2695  print_str("field_order", "tb");
+
2696  else if (par->field_order == AV_FIELD_BT)
+
2697  print_str("field_order", "bt");
+
2698  else
+
2699  print_str_opt("field_order", "unknown");
+
2700 
+
2701  if (dec_ctx)
+
2702  print_int("refs", dec_ctx->refs);
+
2703  break;
+
2704 
+
2705  case AVMEDIA_TYPE_AUDIO:
+
2706  s = av_get_sample_fmt_name(par->format);
+
2707  if (s) print_str ("sample_fmt", s);
+
2708  else print_str_opt("sample_fmt", "unknown");
+
2709  print_val("sample_rate", par->sample_rate, unit_hertz_str);
+
2710  print_int("channels", par->channels);
+
2711 
+
2712  if (par->channel_layout) {
+
2713  av_bprint_clear(&pbuf);
+
2714  av_bprint_channel_layout(&pbuf, par->channels, par->channel_layout);
+
2715  print_str ("channel_layout", pbuf.str);
+
2716  } else {
+
2717  print_str_opt("channel_layout", "unknown");
+
2718  }
+
2719 
+
2720  print_int("bits_per_sample", av_get_bits_per_sample(par->codec_id));
+
2721  break;
+
2722 
+
2723  case AVMEDIA_TYPE_SUBTITLE:
+
2724  if (par->width)
+
2725  print_int("width", par->width);
+
2726  else
+
2727  print_str_opt("width", "N/A");
+
2728  if (par->height)
+
2729  print_int("height", par->height);
+
2730  else
+
2731  print_str_opt("height", "N/A");
+
2732  break;
+
2733  }
+
2734 
+
2735  if (dec_ctx && dec_ctx->codec && dec_ctx->codec->priv_class && show_private_data) {
+
2736  const AVOption *opt = NULL;
+
2737  while ((opt = av_opt_next(dec_ctx->priv_data,opt))) {
+
2738  uint8_t *str;
+
2739  if (!(opt->flags & AV_OPT_FLAG_EXPORT)) continue;
+
2740  if (av_opt_get(dec_ctx->priv_data, opt->name, 0, &str) >= 0) {
+
2741  print_str(opt->name, str);
+
2742  av_free(str);
+
2743  }
+
2744  }
+
2745  }
+
2746 
+
2747  if (fmt_ctx->iformat->flags & AVFMT_SHOW_IDS) print_fmt ("id", "0x%x", stream->id);
+
2748  else print_str_opt("id", "N/A");
+
2749  print_q("r_frame_rate", stream->r_frame_rate, '/');
+
2750  print_q("avg_frame_rate", stream->avg_frame_rate, '/');
+
2751  print_q("time_base", stream->time_base, '/');
+
2752  print_ts ("start_pts", stream->start_time);
+
2753  print_time("start_time", stream->start_time, &stream->time_base);
+
2754  print_ts ("duration_ts", stream->duration);
+
2755  print_time("duration", stream->duration, &stream->time_base);
+
2756  if (par->bit_rate > 0) print_val ("bit_rate", par->bit_rate, unit_bit_per_second_str);
+
2757  else print_str_opt("bit_rate", "N/A");
+
2758  if (dec_ctx && dec_ctx->rc_max_rate > 0)
+
2759  print_val ("max_bit_rate", dec_ctx->rc_max_rate, unit_bit_per_second_str);
+
2760  else
+
2761  print_str_opt("max_bit_rate", "N/A");
+
2762  if (dec_ctx && dec_ctx->bits_per_raw_sample > 0) print_fmt("bits_per_raw_sample", "%d", dec_ctx->bits_per_raw_sample);
+
2763  else print_str_opt("bits_per_raw_sample", "N/A");
+
2764  if (stream->nb_frames) print_fmt ("nb_frames", "%"PRId64, stream->nb_frames);
+
2765  else print_str_opt("nb_frames", "N/A");
+
2766  if (nb_streams_frames[stream_idx]) print_fmt ("nb_read_frames", "%"PRIu64, nb_streams_frames[stream_idx]);
+
2767  else print_str_opt("nb_read_frames", "N/A");
+
2768  if (nb_streams_packets[stream_idx]) print_fmt ("nb_read_packets", "%"PRIu64, nb_streams_packets[stream_idx]);
+
2769  else print_str_opt("nb_read_packets", "N/A");
+
2770  if (do_show_data)
+
2771  writer_print_data(w, "extradata", par->extradata,
+
2772  par->extradata_size);
+
2773 
+
2774  if (par->extradata_size > 0) {
+
2775  writer_print_data_hash(w, "extradata_hash", par->extradata,
+
2776  par->extradata_size);
+
2777  }
+
2778 
+
2779  /* Print disposition information */
+
2780 #define PRINT_DISPOSITION(flagname, name) do { \
+
2781  print_int(name, !!(stream->disposition & AV_DISPOSITION_##flagname)); \
+
2782  } while (0)
+
2783 
+ + +
2786  PRINT_DISPOSITION(DEFAULT, "default");
+
2787  PRINT_DISPOSITION(DUB, "dub");
+
2788  PRINT_DISPOSITION(ORIGINAL, "original");
+
2789  PRINT_DISPOSITION(COMMENT, "comment");
+
2790  PRINT_DISPOSITION(LYRICS, "lyrics");
+
2791  PRINT_DISPOSITION(KARAOKE, "karaoke");
+
2792  PRINT_DISPOSITION(FORCED, "forced");
+
2793  PRINT_DISPOSITION(HEARING_IMPAIRED, "hearing_impaired");
+
2794  PRINT_DISPOSITION(VISUAL_IMPAIRED, "visual_impaired");
+
2795  PRINT_DISPOSITION(CLEAN_EFFECTS, "clean_effects");
+
2796  PRINT_DISPOSITION(ATTACHED_PIC, "attached_pic");
+
2797  PRINT_DISPOSITION(TIMED_THUMBNAILS, "timed_thumbnails");
+
2798  PRINT_DISPOSITION(CAPTIONS, "captions");
+
2799  PRINT_DISPOSITION(DESCRIPTIONS, "descriptions");
+
2800  PRINT_DISPOSITION(METADATA, "metadata");
+
2801  PRINT_DISPOSITION(DEPENDENT, "dependent");
+
2802  PRINT_DISPOSITION(STILL_IMAGE, "still_image");
+ +
2804  }
+
2805 
+
2806  if (do_show_stream_tags)
+
2807  ret = show_tags(w, stream->metadata, in_program ? SECTION_ID_PROGRAM_STREAM_TAGS : SECTION_ID_STREAM_TAGS);
+
2808 
+
2809  if (stream->nb_side_data) {
+
2810  print_pkt_side_data(w, stream->codecpar, stream->side_data, stream->nb_side_data,
+ + +
2813  }
+
2814 
+ +
2816  av_bprint_finalize(&pbuf, NULL);
+
2817  fflush(stdout);
+
2818 
+
2819  return ret;
+
2820 }
+
2821 
+
2822 static int show_streams(WriterContext *w, InputFile *ifile)
+
2823 {
+
2824  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2825  int i, ret = 0;
+
2826 
+ +
2828  for (i = 0; i < ifile->nb_streams; i++)
+
2829  if (selected_streams[i]) {
+
2830  ret = show_stream(w, fmt_ctx, i, &ifile->streams[i], 0);
+
2831  if (ret < 0)
+
2832  break;
+
2833  }
+ +
2835 
+
2836  return ret;
+
2837 }
+
2838 
+
2839 static int show_program(WriterContext *w, InputFile *ifile, AVProgram *program)
+
2840 {
+
2841  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2842  int i, ret = 0;
+
2843 
+ +
2845  print_int("program_id", program->id);
+
2846  print_int("program_num", program->program_num);
+
2847  print_int("nb_streams", program->nb_stream_indexes);
+
2848  print_int("pmt_pid", program->pmt_pid);
+
2849  print_int("pcr_pid", program->pcr_pid);
+
2850  print_ts("start_pts", program->start_time);
+
2851  print_time("start_time", program->start_time, &AV_TIME_BASE_Q);
+
2852  print_ts("end_pts", program->end_time);
+
2853  print_time("end_time", program->end_time, &AV_TIME_BASE_Q);
+ +
2855  ret = show_tags(w, program->metadata, SECTION_ID_PROGRAM_TAGS);
+
2856  if (ret < 0)
+
2857  goto end;
+
2858 
+ +
2860  for (i = 0; i < program->nb_stream_indexes; i++) {
+
2861  if (selected_streams[program->stream_index[i]]) {
+
2862  ret = show_stream(w, fmt_ctx, program->stream_index[i], &ifile->streams[program->stream_index[i]], 1);
+
2863  if (ret < 0)
+
2864  break;
+
2865  }
+
2866  }
+ +
2868 
+
2869 end:
+ +
2871  return ret;
+
2872 }
+
2873 
+
2874 static int show_programs(WriterContext *w, InputFile *ifile)
+
2875 {
+
2876  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2877  int i, ret = 0;
+
2878 
+ +
2880  for (i = 0; i < fmt_ctx->nb_programs; i++) {
+
2881  AVProgram *program = fmt_ctx->programs[i];
+
2882  if (!program)
+
2883  continue;
+
2884  ret = show_program(w, ifile, program);
+
2885  if (ret < 0)
+
2886  break;
+
2887  }
+ +
2889  return ret;
+
2890 }
+
2891 
+
2892 static int show_chapters(WriterContext *w, InputFile *ifile)
+
2893 {
+
2894  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2895  int i, ret = 0;
+
2896 
+ +
2898  for (i = 0; i < fmt_ctx->nb_chapters; i++) {
+
2899  AVChapter *chapter = fmt_ctx->chapters[i];
+
2900 
+ +
2902  print_int("id", chapter->id);
+
2903  print_q ("time_base", chapter->time_base, '/');
+
2904  print_int("start", chapter->start);
+
2905  print_time("start_time", chapter->start, &chapter->time_base);
+
2906  print_int("end", chapter->end);
+
2907  print_time("end_time", chapter->end, &chapter->time_base);
+ +
2909  ret = show_tags(w, chapter->metadata, SECTION_ID_CHAPTER_TAGS);
+ +
2911  }
+ +
2913 
+
2914  return ret;
+
2915 }
+
2916 
+
2917 static int show_format(WriterContext *w, InputFile *ifile)
+
2918 {
+
2919  AVFormatContext *fmt_ctx = ifile->fmt_ctx;
+
2920  char val_str[128];
+
2921  int64_t size = fmt_ctx->pb ? avio_size(fmt_ctx->pb) : -1;
+
2922  int ret = 0;
+
2923 
+ +
2925  print_str_validate("filename", fmt_ctx->url);
+
2926  print_int("nb_streams", fmt_ctx->nb_streams);
+
2927  print_int("nb_programs", fmt_ctx->nb_programs);
+
2928  print_str("format_name", fmt_ctx->iformat->name);
+
2929  if (!do_bitexact) {
+
2930  if (fmt_ctx->iformat->long_name) print_str ("format_long_name", fmt_ctx->iformat->long_name);
+
2931  else print_str_opt("format_long_name", "unknown");
+
2932  }
+
2933  print_time("start_time", fmt_ctx->start_time, &AV_TIME_BASE_Q);
+
2934  print_time("duration", fmt_ctx->duration, &AV_TIME_BASE_Q);
+
2935  if (size >= 0) print_val ("size", size, unit_byte_str);
+
2936  else print_str_opt("size", "N/A");
+
2937  if (fmt_ctx->bit_rate > 0) print_val ("bit_rate", fmt_ctx->bit_rate, unit_bit_per_second_str);
+
2938  else print_str_opt("bit_rate", "N/A");
+
2939  print_int("probe_score", fmt_ctx->probe_score);
+
2940  if (do_show_format_tags)
+
2941  ret = show_tags(w, fmt_ctx->metadata, SECTION_ID_FORMAT_TAGS);
+
2942 
+ +
2944  fflush(stdout);
+
2945  return ret;
+
2946 }
+
2947 
+
2948 static void show_error(WriterContext *w, int err)
+
2949 {
+
2950  char errbuf[128];
+
2951  const char *errbuf_ptr = errbuf;
+
2952 
+
2953  if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
+
2954  errbuf_ptr = strerror(AVUNERROR(err));
+
2955 
+ +
2957  print_int("code", err);
+
2958  print_str("string", errbuf_ptr);
+ +
2960 }
+
2961 
+
2962 static int open_input_file(InputFile *ifile, const char *filename, const char *print_filename)
+
2963 {
+
2964  int err, i;
+
2965  AVFormatContext *fmt_ctx = NULL;
+
2966  AVDictionaryEntry *t = NULL;
+
2967  int scan_all_pmts_set = 0;
+
2968 
+
2969  fmt_ctx = avformat_alloc_context();
+
2970  if (!fmt_ctx) {
+
2971  print_error(filename, AVERROR(ENOMEM));
+
2972  exit_program(1);
+
2973  }
+
2974 
+
2975  if (!av_dict_get(format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) {
+
2976  av_dict_set(&format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE);
+
2977  scan_all_pmts_set = 1;
+
2978  }
+
2979  if ((err = avformat_open_input(&fmt_ctx, filename,
+
2980  iformat, &format_opts)) < 0) {
+
2981  print_error(filename, err);
+
2982  return err;
+
2983  }
+
2984  if (print_filename) {
+
2985  av_freep(&fmt_ctx->url);
+
2986  fmt_ctx->url = av_strdup(print_filename);
+
2987  }
+
2988  ifile->fmt_ctx = fmt_ctx;
+
2989  if (scan_all_pmts_set)
+
2990  av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
+
2991  while ((t = av_dict_get(format_opts, "", t, AV_DICT_IGNORE_SUFFIX)))
+
2992  av_log(NULL, AV_LOG_WARNING, "Option %s skipped - not known to demuxer.\n", t->key);
+
2993 
+
2994  if (find_stream_info) {
+
2995  AVDictionary **opts = setup_find_stream_info_opts(fmt_ctx, codec_opts);
+
2996  int orig_nb_streams = fmt_ctx->nb_streams;
+
2997 
+
2998  err = avformat_find_stream_info(fmt_ctx, opts);
+
2999 
+
3000  for (i = 0; i < orig_nb_streams; i++)
+
3001  av_dict_free(&opts[i]);
+
3002  av_freep(&opts);
+
3003 
+
3004  if (err < 0) {
+
3005  print_error(filename, err);
+
3006  return err;
+
3007  }
+
3008  }
+
3009 
+
3010  av_dump_format(fmt_ctx, 0, filename, 0);
+
3011 
+
3012  ifile->streams = av_mallocz_array(fmt_ctx->nb_streams,
+
3013  sizeof(*ifile->streams));
+
3014  if (!ifile->streams)
+
3015  exit(1);
+
3016  ifile->nb_streams = fmt_ctx->nb_streams;
+
3017 
+
3018  /* bind a decoder to each input stream */
+
3019  for (i = 0; i < fmt_ctx->nb_streams; i++) {
+
3020  InputStream *ist = &ifile->streams[i];
+
3021  AVStream *stream = fmt_ctx->streams[i];
+
3022  const AVCodec *codec;
+
3023 
+
3024  ist->st = stream;
+
3025 
+
3026  if (stream->codecpar->codec_id == AV_CODEC_ID_PROBE) {
+
3027  av_log(NULL, AV_LOG_WARNING,
+
3028  "Failed to probe codec for input stream %d\n",
+
3029  stream->index);
+
3030  continue;
+
3031  }
+
3032 
+
3033  codec = avcodec_find_decoder(stream->codecpar->codec_id);
+
3034  if (!codec) {
+
3035  av_log(NULL, AV_LOG_WARNING,
+
3036  "Unsupported codec with id %d for input stream %d\n",
+
3037  stream->codecpar->codec_id, stream->index);
+
3038  continue;
+
3039  }
+
3040  {
+
3041  AVDictionary *opts = filter_codec_opts(codec_opts, stream->codecpar->codec_id,
+
3042  fmt_ctx, stream, codec);
+
3043 
+
3044  ist->dec_ctx = avcodec_alloc_context3(codec);
+
3045  if (!ist->dec_ctx)
+
3046  exit(1);
+
3047 
+
3048  err = avcodec_parameters_to_context(ist->dec_ctx, stream->codecpar);
+
3049  if (err < 0)
+
3050  exit(1);
+
3051 
+
3052  if (do_show_log) {
+
3053  // For loging it is needed to disable at least frame threads as otherwise
+
3054  // the log information would need to be reordered and matches up to contexts and frames
+
3055  // That is in fact possible but not trivial
+
3056  av_dict_set(&codec_opts, "threads", "1", 0);
+
3057  }
+
3058 
+
3059  ist->dec_ctx->pkt_timebase = stream->time_base;
+
3060 
+
3061  if (avcodec_open2(ist->dec_ctx, codec, &opts) < 0) {
+
3062  av_log(NULL, AV_LOG_WARNING, "Could not open codec for input stream %d\n",
+
3063  stream->index);
+
3064  exit(1);
+
3065  }
+
3066 
+
3067  if ((t = av_dict_get(opts, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
+
3068  av_log(NULL, AV_LOG_ERROR, "Option %s for input stream %d not found\n",
+
3069  t->key, stream->index);
+
3070  return AVERROR_OPTION_NOT_FOUND;
+
3071  }
+
3072  }
+
3073  }
+
3074 
+
3075  ifile->fmt_ctx = fmt_ctx;
+
3076  return 0;
+
3077 }
+
3078 
+
3079 static void close_input_file(InputFile *ifile)
+
3080 {
+
3081  int i;
+
3082 
+
3083  /* close decoder for each stream */
+
3084  for (i = 0; i < ifile->nb_streams; i++)
+
3085  avcodec_free_context(&ifile->streams[i].dec_ctx);
+
3086 
+
3087  av_freep(&ifile->streams);
+
3088  ifile->nb_streams = 0;
+
3089 
+
3090  avformat_close_input(&ifile->fmt_ctx);
+
3091 }
+
3092 
+
3093 static int probe_file(WriterContext *wctx, const char *filename,
+
3094  const char *print_filename)
+
3095 {
+
3096  InputFile ifile = { 0 };
+
3097  int ret, i;
+
3098  int section_id;
+
3099 
+ + +
3102 
+
3103  ret = open_input_file(&ifile, filename, print_filename);
+
3104  if (ret < 0)
+
3105  goto end;
+
3106 
+
3107 #define CHECK_END if (ret < 0) goto end
+
3108 
+
3109  nb_streams = ifile.fmt_ctx->nb_streams;
+
3110  REALLOCZ_ARRAY_STREAM(nb_streams_frames,0,ifile.fmt_ctx->nb_streams);
+
3111  REALLOCZ_ARRAY_STREAM(nb_streams_packets,0,ifile.fmt_ctx->nb_streams);
+
3112  REALLOCZ_ARRAY_STREAM(selected_streams,0,ifile.fmt_ctx->nb_streams);
+
3113 
+
3114  for (i = 0; i < ifile.fmt_ctx->nb_streams; i++) {
+
3115  if (stream_specifier) {
+
3116  ret = avformat_match_stream_specifier(ifile.fmt_ctx,
+
3117  ifile.fmt_ctx->streams[i],
+ +
3119  CHECK_END;
+
3120  else
+
3121  selected_streams[i] = ret;
+
3122  ret = 0;
+
3123  } else {
+
3124  selected_streams[i] = 1;
+
3125  }
+
3126  if (!selected_streams[i])
+
3127  ifile.fmt_ctx->streams[i]->discard = AVDISCARD_ALL;
+
3128  }
+
3129 
+ + + +
3133  section_id = SECTION_ID_PACKETS_AND_FRAMES;
+
3134  else if (do_show_packets && !do_show_frames)
+
3135  section_id = SECTION_ID_PACKETS;
+
3136  else // (!do_show_packets && do_show_frames)
+
3137  section_id = SECTION_ID_FRAMES;
+ +
3139  writer_print_section_header(wctx, section_id);
+
3140  ret = read_packets(wctx, &ifile);
+ + +
3143  CHECK_END;
+
3144  }
+
3145 
+
3146  if (do_show_programs) {
+
3147  ret = show_programs(wctx, &ifile);
+
3148  CHECK_END;
+
3149  }
+
3150 
+
3151  if (do_show_streams) {
+
3152  ret = show_streams(wctx, &ifile);
+
3153  CHECK_END;
+
3154  }
+
3155  if (do_show_chapters) {
+
3156  ret = show_chapters(wctx, &ifile);
+
3157  CHECK_END;
+
3158  }
+
3159  if (do_show_format) {
+
3160  ret = show_format(wctx, &ifile);
+
3161  CHECK_END;
+
3162  }
+
3163 
+
3164 end:
+
3165  if (ifile.fmt_ctx)
+
3166  close_input_file(&ifile);
+
3167  av_freep(&nb_streams_frames);
+
3168  av_freep(&nb_streams_packets);
+
3169  av_freep(&selected_streams);
+
3170 
+
3171  return ret;
+
3172 }
+
3173 
+
3174 static void show_usage(void)
+
3175 {
+
3176  av_log(NULL, AV_LOG_INFO, "Simple multimedia streams analyzer\n");
+
3177  av_log(NULL, AV_LOG_INFO, "usage: %s [OPTIONS] [INPUT_FILE]\n", program_name);
+
3178  av_log(NULL, AV_LOG_INFO, "\n");
+
3179 }
+
3180 
+ +
3182 {
+
3183  AVBPrint pbuf;
+
3184  av_bprint_init(&pbuf, 1, AV_BPRINT_SIZE_UNLIMITED);
+
3185 
+ +
3187  print_str("version", FFMPEG_VERSION);
+
3188  print_fmt("copyright", "Copyright (c) %d-%d the FFmpeg developers",
+
3189  program_birth_year, CONFIG_THIS_YEAR);
+
3190  print_str("compiler_ident", CC_IDENT);
+
3191  print_str("configuration", FFMPEG_CONFIGURATION);
+ +
3193 
+
3194  av_bprint_finalize(&pbuf, NULL);
+
3195 }
+
3196 
+
3197 #define SHOW_LIB_VERSION(libname, LIBNAME) \
+
3198  do { \
+
3199  if (CONFIG_##LIBNAME) { \
+
3200  unsigned int version = libname##_version(); \
+
3201  writer_print_section_header(w, SECTION_ID_LIBRARY_VERSION); \
+
3202  print_str("name", "lib" #libname); \
+
3203  print_int("major", LIB##LIBNAME##_VERSION_MAJOR); \
+
3204  print_int("minor", LIB##LIBNAME##_VERSION_MINOR); \
+
3205  print_int("micro", LIB##LIBNAME##_VERSION_MICRO); \
+
3206  print_int("version", version); \
+
3207  print_str("ident", LIB##LIBNAME##_IDENT); \
+
3208  writer_print_section_footer(w); \
+
3209  } \
+
3210  } while (0)
+
3211 
+ +
3213 {
+ +
3215  SHOW_LIB_VERSION(avutil, AVUTIL);
+
3216  SHOW_LIB_VERSION(avcodec, AVCODEC);
+
3217  SHOW_LIB_VERSION(avformat, AVFORMAT);
+
3218  SHOW_LIB_VERSION(avdevice, AVDEVICE);
+
3219  SHOW_LIB_VERSION(avfilter, AVFILTER);
+
3220  SHOW_LIB_VERSION(swscale, SWSCALE);
+
3221  SHOW_LIB_VERSION(swresample, SWRESAMPLE);
+ +
3223 }
+
3224 
+
3225 #define PRINT_PIX_FMT_FLAG(flagname, name) \
+
3226  do { \
+
3227  print_int(name, !!(pixdesc->flags & AV_PIX_FMT_FLAG_##flagname)); \
+
3228  } while (0)
+
3229 
+ +
3231 {
+
3232  const AVPixFmtDescriptor *pixdesc = NULL;
+
3233  int i, n;
+
3234 
+ +
3236  while ((pixdesc = av_pix_fmt_desc_next(pixdesc))) {
+ +
3238  print_str("name", pixdesc->name);
+
3239  print_int("nb_components", pixdesc->nb_components);
+
3240  if ((pixdesc->nb_components >= 3) && !(pixdesc->flags & AV_PIX_FMT_FLAG_RGB)) {
+
3241  print_int ("log2_chroma_w", pixdesc->log2_chroma_w);
+
3242  print_int ("log2_chroma_h", pixdesc->log2_chroma_h);
+
3243  } else {
+
3244  print_str_opt("log2_chroma_w", "N/A");
+
3245  print_str_opt("log2_chroma_h", "N/A");
+
3246  }
+
3247  n = av_get_bits_per_pixel(pixdesc);
+
3248  if (n) print_int ("bits_per_pixel", n);
+
3249  else print_str_opt("bits_per_pixel", "N/A");
+ + +
3252  PRINT_PIX_FMT_FLAG(BE, "big_endian");
+
3253  PRINT_PIX_FMT_FLAG(PAL, "palette");
+
3254  PRINT_PIX_FMT_FLAG(BITSTREAM, "bitstream");
+
3255  PRINT_PIX_FMT_FLAG(HWACCEL, "hwaccel");
+
3256  PRINT_PIX_FMT_FLAG(PLANAR, "planar");
+
3257  PRINT_PIX_FMT_FLAG(RGB, "rgb");
+
3258  PRINT_PIX_FMT_FLAG(ALPHA, "alpha");
+ +
3260  }
+
3261  if (do_show_pixel_format_components && (pixdesc->nb_components > 0)) {
+ +
3263  for (i = 0; i < pixdesc->nb_components; i++) {
+ +
3265  print_int("index", i + 1);
+
3266  print_int("bit_depth", pixdesc->comp[i].depth);
+ +
3268  }
+ +
3270  }
+ +
3272  }
+ +
3274 }
+
3275 
+
3276 static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
+
3277 {
+
3278  if (!av_strcasecmp(arg, "always")) show_optional_fields = SHOW_OPTIONAL_FIELDS_ALWAYS;
+
3279  else if (!av_strcasecmp(arg, "never")) show_optional_fields = SHOW_OPTIONAL_FIELDS_NEVER;
+
3280  else if (!av_strcasecmp(arg, "auto")) show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO;
+
3281 
+
3282  if (show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO && av_strcasecmp(arg, "auto"))
+ +
3284  return 0;
+
3285 }
+
3286 
+
3287 static int opt_format(void *optctx, const char *opt, const char *arg)
+
3288 {
+
3289  iformat = av_find_input_format(arg);
+
3290  if (!iformat) {
+
3291  av_log(NULL, AV_LOG_ERROR, "Unknown input format: %s\n", arg);
+
3292  return AVERROR(EINVAL);
+
3293  }
+
3294  return 0;
+
3295 }
+
3296 
+
3297 static inline void mark_section_show_entries(SectionID section_id,
+
3298  int show_all_entries, AVDictionary *entries)
+
3299 {
+
3300  struct section *section = &sections[section_id];
+
3301 
+ +
3303  if (show_all_entries) {
+
3304  SectionID *id;
+
3305  for (id = section->children_ids; *id != -1; id++)
+ +
3307  } else {
+
3308  av_dict_copy(&section->entries_to_show, entries, 0);
+
3309  }
+
3310 }
+
3311 
+
3312 static int match_section(const char *section_name,
+
3313  int show_all_entries, AVDictionary *entries)
+
3314 {
+
3315  int i, ret = 0;
+
3316 
+
3317  for (i = 0; i < FF_ARRAY_ELEMS(sections); i++) {
+
3318  const struct section *section = &sections[i];
+
3319  if (!strcmp(section_name, section->name) ||
+
3320  (section->unique_name && !strcmp(section_name, section->unique_name))) {
+
3321  av_log(NULL, AV_LOG_DEBUG,
+
3322  "'%s' matches section with unique name '%s'\n", section_name,
+
3323  (char *)av_x_if_null(section->unique_name, section->name));
+
3324  ret++;
+ +
3326  }
+
3327  }
+
3328  return ret;
+
3329 }
+
3330 
+
3331 static int opt_show_entries(void *optctx, const char *opt, const char *arg)
+
3332 {
+
3333  const char *p = arg;
+
3334  int ret = 0;
+
3335 
+
3336  while (*p) {
+
3337  AVDictionary *entries = NULL;
+
3338  char *section_name = av_get_token(&p, "=:");
+
3339  int show_all_entries = 0;
+
3340 
+
3341  if (!section_name) {
+
3342  av_log(NULL, AV_LOG_ERROR,
+
3343  "Missing section name for option '%s'\n", opt);
+
3344  return AVERROR(EINVAL);
+
3345  }
+
3346 
+
3347  if (*p == '=') {
+
3348  p++;
+
3349  while (*p && *p != ':') {
+
3350  char *entry = av_get_token(&p, ",:");
+
3351  if (!entry)
+
3352  break;
+
3353  av_log(NULL, AV_LOG_VERBOSE,
+
3354  "Adding '%s' to the entries to show in section '%s'\n",
+
3355  entry, section_name);
+
3356  av_dict_set(&entries, entry, "", AV_DICT_DONT_STRDUP_KEY);
+
3357  if (*p == ',')
+
3358  p++;
+
3359  }
+
3360  } else {
+
3361  show_all_entries = 1;
+
3362  }
+
3363 
+
3364  ret = match_section(section_name, show_all_entries, entries);
+
3365  if (ret == 0) {
+
3366  av_log(NULL, AV_LOG_ERROR, "No match for section '%s'\n", section_name);
+
3367  ret = AVERROR(EINVAL);
+
3368  }
+
3369  av_dict_free(&entries);
+
3370  av_free(section_name);
+
3371 
+
3372  if (ret <= 0)
+
3373  break;
+
3374  if (*p)
+
3375  p++;
+
3376  }
+
3377 
+
3378  return ret;
+
3379 }
+
3380 
+
3381 static int opt_show_format_entry(void *optctx, const char *opt, const char *arg)
+
3382 {
+
3383  char *buf = av_asprintf("format=%s", arg);
+
3384  int ret;
+
3385 
+
3386  if (!buf)
+
3387  return AVERROR(ENOMEM);
+
3388 
+
3389  av_log(NULL, AV_LOG_WARNING,
+
3390  "Option '%s' is deprecated, use '-show_entries format=%s' instead\n",
+
3391  opt, arg);
+
3392  ret = opt_show_entries(optctx, opt, buf);
+
3393  av_free(buf);
+
3394  return ret;
+
3395 }
+
3396 
+
3397 static void opt_input_file(void *optctx, const char *arg)
+
3398 {
+
3399  if (input_filename) {
+
3400  av_log(NULL, AV_LOG_ERROR,
+
3401  "Argument '%s' provided as input filename, but '%s' was already specified.\n",
+
3402  arg, input_filename);
+
3403  exit_program(1);
+
3404  }
+
3405  if (!strcmp(arg, "-"))
+
3406  arg = "pipe:";
+
3407  input_filename = arg;
+
3408 }
+
3409 
+
3410 static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
+
3411 {
+
3412  opt_input_file(optctx, arg);
+
3413  return 0;
+
3414 }
+
3415 
+
3416 static int opt_print_filename(void *optctx, const char *opt, const char *arg)
+
3417 {
+
3418  print_input_filename = arg;
+
3419  return 0;
+
3420 }
+
3421 
+
3422 void show_help_default_ffprobe(const char *opt, const char *arg)
+
3423 {
+
3424  show_usage();
+
3425  show_help_options(ffprobe_options, "Main options:", 0, 0, 0);
+
3426  av_log(NULL, AV_LOG_STDERR, "\n");
+
3427 
+
3428  show_help_children(avformat_get_class(), AV_OPT_FLAG_DECODING_PARAM);
+
3429  show_help_children(avcodec_get_class(), AV_OPT_FLAG_DECODING_PARAM);
+
3430 }
+
3431 
+
3437 static int parse_read_interval(const char *interval_spec,
+
3438  ReadInterval *interval)
+
3439 {
+
3440  int ret = 0;
+
3441  char *next, *p, *spec = av_strdup(interval_spec);
+
3442  if (!spec)
+
3443  return AVERROR(ENOMEM);
+
3444 
+
3445  if (!*spec) {
+
3446  av_log(NULL, AV_LOG_ERROR, "Invalid empty interval specification\n");
+
3447  ret = AVERROR(EINVAL);
+
3448  goto end;
+
3449  }
+
3450 
+
3451  p = spec;
+
3452  next = strchr(spec, '%');
+
3453  if (next)
+
3454  *next++ = 0;
+
3455 
+
3456  /* parse first part */
+
3457  if (*p) {
+
3458  interval->has_start = 1;
+
3459 
+
3460  if (*p == '+') {
+
3461  interval->start_is_offset = 1;
+
3462  p++;
+
3463  } else {
+
3464  interval->start_is_offset = 0;
+
3465  }
+
3466 
+
3467  ret = av_parse_time(&interval->start, p, 1);
+
3468  if (ret < 0) {
+
3469  av_log(NULL, AV_LOG_ERROR, "Invalid interval start specification '%s'\n", p);
+
3470  goto end;
+
3471  }
+
3472  } else {
+
3473  interval->has_start = 0;
+
3474  }
+
3475 
+
3476  /* parse second part */
+
3477  p = next;
+
3478  if (p && *p) {
+
3479  int64_t us;
+
3480  interval->has_end = 1;
+
3481 
+
3482  if (*p == '+') {
+
3483  interval->end_is_offset = 1;
+
3484  p++;
+
3485  } else {
+
3486  interval->end_is_offset = 0;
+
3487  }
+
3488 
+
3489  if (interval->end_is_offset && *p == '#') {
+
3490  long long int lli;
+
3491  char *tail;
+
3492  interval->duration_frames = 1;
+
3493  p++;
+
3494  lli = strtoll(p, &tail, 10);
+
3495  if (*tail || lli < 0) {
+
3496  av_log(NULL, AV_LOG_ERROR,
+
3497  "Invalid or negative value '%s' for duration number of frames\n", p);
+
3498  goto end;
+
3499  }
+
3500  interval->end = lli;
+
3501  } else {
+
3502  interval->duration_frames = 0;
+
3503  ret = av_parse_time(&us, p, 1);
+
3504  if (ret < 0) {
+
3505  av_log(NULL, AV_LOG_ERROR, "Invalid interval end/duration specification '%s'\n", p);
+
3506  goto end;
+
3507  }
+
3508  interval->end = us;
+
3509  }
+
3510  } else {
+
3511  interval->has_end = 0;
+
3512  }
+
3513 
+
3514 end:
+
3515  av_free(spec);
+
3516  return ret;
+
3517 }
+
3518 
+
3519 static int parse_read_intervals(const char *intervals_spec)
+
3520 {
+
3521  int ret, n, i;
+
3522  char *p, *spec = av_strdup(intervals_spec);
+
3523  if (!spec)
+
3524  return AVERROR(ENOMEM);
+
3525 
+
3526  /* preparse specification, get number of intervals */
+
3527  for (n = 0, p = spec; *p; p++)
+
3528  if (*p == ',')
+
3529  n++;
+
3530  n++;
+
3531 
+
3532  read_intervals = av_malloc_array(n, sizeof(*read_intervals));
+
3533  if (!read_intervals) {
+
3534  ret = AVERROR(ENOMEM);
+
3535  goto end;
+
3536  }
+
3537  read_intervals_nb = n;
+
3538 
+
3539  /* parse intervals */
+
3540  p = spec;
+
3541  for (i = 0; p; i++) {
+
3542  char *next;
+
3543 
+
3544  av_assert0(i < read_intervals_nb);
+
3545  next = strchr(p, ',');
+
3546  if (next)
+
3547  *next++ = 0;
+
3548 
+
3549  read_intervals[i].id = i;
+
3550  ret = parse_read_interval(p, &read_intervals[i]);
+
3551  if (ret < 0) {
+
3552  av_log(NULL, AV_LOG_ERROR, "Error parsing read interval #%d '%s'\n",
+
3553  i, p);
+
3554  goto end;
+
3555  }
+
3556  av_log(NULL, AV_LOG_VERBOSE, "Parsed log interval ");
+
3557  log_read_interval(&read_intervals[i], NULL, AV_LOG_VERBOSE);
+
3558  p = next;
+
3559  }
+
3560  av_assert0(i == read_intervals_nb);
+
3561 
+
3562 end:
+
3563  av_free(spec);
+
3564  return ret;
+
3565 }
+
3566 
+
3567 static int opt_read_intervals(void *optctx, const char *opt, const char *arg)
+
3568 {
+
3569  return parse_read_intervals(arg);
+
3570 }
+
3571 
+
3572 static int opt_pretty(void *optctx, const char *opt, const char *arg)
+
3573 {
+
3574  show_value_unit = 1;
+
3575  use_value_prefix = 1;
+ + +
3578  return 0;
+
3579 }
+
3580 
+
3581 static void print_section(SectionID id, int level)
+
3582 {
+
3583  const SectionID *pid;
+
3584  const struct section *section = &sections[id];
+
3585  av_log(NULL, AV_LOG_STDERR, "%c%c%c",
+
3586  section->flags & SECTION_FLAG_IS_WRAPPER ? 'W' : '.',
+
3587  section->flags & SECTION_FLAG_IS_ARRAY ? 'A' : '.',
+ +
3589  av_log(NULL, AV_LOG_STDERR, "%*c %s", level * 4, ' ', section->name);
+
3590  if (section->unique_name)
+
3591  av_log(NULL, AV_LOG_STDERR, "/%s", section->unique_name);
+
3592  av_log(NULL, AV_LOG_STDERR, "\n");
+
3593 
+
3594  for (pid = section->children_ids; *pid != -1; pid++)
+
3595  print_section(*pid, level+1);
+
3596 }
+
3597 
+
3598 static int opt_sections(void *optctx, const char *opt, const char *arg)
+
3599 {
+
3600  av_log(NULL, AV_LOG_STDERR, "Sections:\n"
+
3601  "W.. = Section is a wrapper (contains other sections, no local entries)\n"
+
3602  ".A. = Section contains an array of elements of the same type\n"
+
3603  "..V = Section may contain a variable number of fields with variable keys\n"
+
3604  "FLAGS NAME/UNIQUE_NAME\n"
+
3605  "---\n");
+ +
3607  return 0;
+
3608 }
+
3609 
+
3610 static int opt_show_versions(void *optctx, const char *opt, const char *arg)
+
3611 {
+ + +
3614  return 0;
+
3615 }
+
3616 
+
3617 #define DEFINE_OPT_SHOW_SECTION(section, target_section_id) \
+
3618  static int opt_show_##section(void *optctx, const char *opt, const char *arg) \
+
3619  { \
+
3620  mark_section_show_entries(SECTION_ID_##target_section_id, 1, NULL); \
+
3621  return 0; \
+
3622  }
+
3623 
+
3624 DEFINE_OPT_SHOW_SECTION(chapters, CHAPTERS)
+
3625 DEFINE_OPT_SHOW_SECTION(error, ERROR)
+ +
3627 DEFINE_OPT_SHOW_SECTION(frames, FRAMES)
+
3628 DEFINE_OPT_SHOW_SECTION(library_versions, LIBRARY_VERSIONS)
+
3629 DEFINE_OPT_SHOW_SECTION(packets, PACKETS)
+
3630 DEFINE_OPT_SHOW_SECTION(pixel_formats, PIXEL_FORMATS)
+
3631 DEFINE_OPT_SHOW_SECTION(program_version, PROGRAM_VERSION)
+
3632 DEFINE_OPT_SHOW_SECTION(streams, STREAMS)
+
3633 DEFINE_OPT_SHOW_SECTION(programs, PROGRAMS)
+
3634 
+
3635 static inline int check_section_show_entries(int section_id)
+
3636 {
+
3637  int *id;
+
3638  struct section *section = &sections[section_id];
+
3639  if (sections[section_id].show_all_entries || sections[section_id].entries_to_show)
+
3640  return 1;
+
3641  for (id = section->children_ids; *id != -1; id++)
+
3642  if (check_section_show_entries(*id))
+
3643  return 1;
+
3644  return 0;
+
3645 }
+
3646 
+
3647 #define SET_DO_SHOW(id, varname) do { \
+
3648  if (check_section_show_entries(SECTION_ID_##id)) \
+
3649  do_show_##varname = 1; \
+
3650  } while (0)
+
3651 
+ + +
3654  longjmp_value = 0;
+
3655 
+
3656  do_bitexact = 0;
+
3657  do_count_frames = 0;
+
3658  do_count_packets = 0;
+
3659  do_read_frames = 0;
+
3660  do_read_packets = 0;
+
3661  do_show_chapters = 0;
+
3662  do_show_error = 0;
+
3663  do_show_format = 0;
+
3664  do_show_frames = 0;
+
3665  do_show_packets = 0;
+
3666  do_show_programs = 0;
+
3667  do_show_streams = 0;
+ +
3669  do_show_data = 0;
+ + + + + +
3675  do_show_log = 0;
+
3676 
+ +
3678  do_show_format_tags = 0;
+
3679  do_show_frame_tags = 0;
+ +
3681  do_show_stream_tags = 0;
+
3682  do_show_packet_tags = 0;
+
3683 
+
3684  show_value_unit = 0;
+
3685  use_value_prefix = 0;
+ + +
3688  show_private_data = 1;
+
3689 
+
3690  print_format = NULL;
+
3691  stream_specifier = NULL;
+
3692  show_data_hash = NULL;
+
3693 
+
3694  read_intervals = NULL;
+
3695  read_intervals_nb = 0;
+
3696  find_stream_info = 1;
+
3697 
+
3698  ffprobe_options = NULL;
+
3699 
+
3700  input_filename = NULL;
+
3701  print_input_filename = NULL;
+
3702  iformat = NULL;
+
3703 
+
3704  hash = NULL;
+
3705 
+ +
3707 
+
3708  nb_streams = 0;
+
3709  nb_streams_packets = NULL;
+
3710  nb_streams_frames = NULL;
+
3711  selected_streams = NULL;
+
3712 
+
3713  log_buffer = NULL;
+
3714  log_buffer_size = 0;
+
3715 }
+
3716 
+
3717 int ffprobe_execute(int argc, char **argv)
+
3718 {
+
3719  char _program_name[] = "ffprobe";
+
3720  program_name = (char*)&_program_name;
+
3721  program_birth_year = 2007;
+
3722 
+
3723  OptionDef options[] = {
+
3724  { "L", OPT_EXIT, { .func_arg = show_license }, "show license" },
+
3725  { "h", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
3726  { "?", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
3727  { "help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
3728  { "-help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" },
+
3729  { "version", OPT_EXIT, { .func_arg = show_version }, "show version" },
+
3730  { "buildconf", OPT_EXIT, { .func_arg = show_buildconf }, "show build configuration" },
+
3731  { "formats", OPT_EXIT, { .func_arg = show_formats }, "show available formats" },
+
3732  { "muxers", OPT_EXIT, { .func_arg = show_muxers }, "show available muxers" },
+
3733  { "demuxers", OPT_EXIT, { .func_arg = show_demuxers }, "show available demuxers" },
+
3734  { "devices", OPT_EXIT, { .func_arg = show_devices }, "show available devices" },
+
3735  { "codecs", OPT_EXIT, { .func_arg = show_codecs }, "show available codecs" },
+
3736  { "decoders", OPT_EXIT, { .func_arg = show_decoders }, "show available decoders" },
+
3737  { "encoders", OPT_EXIT, { .func_arg = show_encoders }, "show available encoders" },
+
3738  { "bsfs", OPT_EXIT, { .func_arg = show_bsfs }, "show available bit stream filters" },
+
3739  { "protocols", OPT_EXIT, { .func_arg = show_protocols }, "show available protocols" },
+
3740  { "filters", OPT_EXIT, { .func_arg = show_filters }, "show available filters" },
+
3741  { "pix_fmts", OPT_EXIT, { .func_arg = show_pix_fmts }, "show available pixel formats" },
+
3742  { "layouts", OPT_EXIT, { .func_arg = show_layouts }, "show standard channel layouts" },
+
3743  { "sample_fmts", OPT_EXIT, { .func_arg = show_sample_fmts }, "show available audio sample formats" },
+
3744  { "colors", OPT_EXIT, { .func_arg = show_colors }, "show available color names" },
+
3745  { "loglevel", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" },
+
3746  { "v", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" },
+
3747  { "report", 0, { .func_arg = opt_report }, "generate a report" },
+
3748  { "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
+
3749  { "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
+
3750  { "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
+
3751  { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
+
3752 
+
3753  #if CONFIG_AVDEVICE
+
3754  { "sources" , OPT_EXIT | HAS_ARG, { .func_arg = show_sources },
+
3755  "list sources of the input device", "device" },
+
3756  { "sinks" , OPT_EXIT | HAS_ARG, { .func_arg = show_sinks },
+
3757  "list sinks of the output device", "device" },
+
3758  #endif
+
3759 
+
3760  { "f", HAS_ARG, {.func_arg = opt_format}, "force format", "format" },
+
3761  { "unit", OPT_BOOL, {&show_value_unit}, "show unit of the displayed values" },
+
3762  { "prefix", OPT_BOOL, {&use_value_prefix}, "use SI prefixes for the displayed values" },
+
3763  { "byte_binary_prefix", OPT_BOOL, {&use_byte_value_binary_prefix},
+
3764  "use binary prefixes for byte units" },
+
3765  { "sexagesimal", OPT_BOOL, {&use_value_sexagesimal_format},
+
3766  "use sexagesimal format HOURS:MM:SS.MICROSECONDS for time units" },
+
3767  { "pretty", 0, {.func_arg = opt_pretty},
+
3768  "prettify the format of displayed values, make it more human readable" },
+
3769  { "print_format", OPT_STRING | HAS_ARG, { &print_format },
+
3770  "set the output printing format (available formats are: default, compact, csv, flat, ini, json, xml)", "format" },
+
3771  { "of", OPT_STRING | HAS_ARG, { &print_format }, "alias for -print_format", "format" },
+
3772  { "select_streams", OPT_STRING | HAS_ARG, { &stream_specifier }, "select the specified streams", "stream_specifier" },
+
3773  { "sections", OPT_EXIT, {.func_arg = opt_sections}, "print sections structure and section information, and exit" },
+
3774  { "show_data", OPT_BOOL, { &do_show_data }, "show packets data" },
+
3775  { "show_data_hash", OPT_STRING | HAS_ARG, { &show_data_hash }, "show packets data hash" },
+
3776  { "show_error", 0, { .func_arg = &opt_show_error }, "show probing error" },
+
3777  { "show_format", 0, { .func_arg = &opt_show_format }, "show format/container info" },
+
3778  { "show_frames", 0, { .func_arg = &opt_show_frames }, "show frames info" },
+
3779  { "show_format_entry", HAS_ARG, {.func_arg = opt_show_format_entry},
+
3780  "show a particular entry from the format/container info", "entry" },
+
3781  { "show_entries", HAS_ARG, {.func_arg = opt_show_entries},
+
3782  "show a set of specified entries", "entry_list" },
+
3783  #if HAVE_THREADS
+
3784  { "show_log", OPT_INT|HAS_ARG, { &do_show_log }, "show log" },
+
3785  #endif
+
3786  { "show_packets", 0, { .func_arg = &opt_show_packets }, "show packets info" },
+
3787  { "show_programs", 0, { .func_arg = &opt_show_programs }, "show programs info" },
+
3788  { "show_streams", 0, { .func_arg = &opt_show_streams }, "show streams info" },
+
3789  { "show_chapters", 0, { .func_arg = &opt_show_chapters }, "show chapters info" },
+
3790  { "count_frames", OPT_BOOL, { &do_count_frames }, "count the number of frames per stream" },
+
3791  { "count_packets", OPT_BOOL, { &do_count_packets }, "count the number of packets per stream" },
+
3792  { "show_program_version", 0, { .func_arg = &opt_show_program_version }, "show ffprobe version" },
+
3793  { "show_library_versions", 0, { .func_arg = &opt_show_library_versions }, "show library versions" },
+
3794  { "show_versions", 0, { .func_arg = &opt_show_versions }, "show program and library versions" },
+
3795  { "show_pixel_formats", 0, { .func_arg = &opt_show_pixel_formats }, "show pixel format descriptions" },
+
3796  { "show_optional_fields", HAS_ARG, { .func_arg = &opt_show_optional_fields }, "show optional fields" },
+
3797  { "show_private_data", OPT_BOOL, { &show_private_data }, "show private data" },
+
3798  { "private", OPT_BOOL, { &show_private_data }, "same as show_private_data" },
+
3799  { "bitexact", OPT_BOOL, {&do_bitexact}, "force bitexact output" },
+
3800  { "read_intervals", HAS_ARG, {.func_arg = opt_read_intervals}, "set read intervals", "read_intervals" },
+
3801  { "default", HAS_ARG | OPT_AUDIO | OPT_VIDEO | OPT_EXPERT, {.func_arg = opt_default}, "generic catch all option", "" },
+
3802  { "i", HAS_ARG, {.func_arg = opt_input_file_i}, "read specified file", "input_file"},
+
3803  { "print_filename", HAS_ARG, {.func_arg = opt_print_filename}, "override the printed input filename", "print_file"},
+
3804  { "find_stream_info", OPT_BOOL | OPT_INPUT | OPT_EXPERT, { &find_stream_info },
+
3805  "read and decode the streams to fill missing information with heuristics" },
+
3806  { NULL, },
+
3807  };
+
3808 
+
3809  const Writer *w;
+
3810  WriterContext *wctx;
+
3811  char *buf;
+
3812  char *w_name = NULL, *w_args = NULL;
+
3813  int ret, i;
+
3814 
+
3815  int savedCode = setjmp(ex_buf__);
+
3816  if (savedCode == 0) {
+
3817 
+ +
3819 
+
3820  init_dynload();
+
3821 
+
3822  #if HAVE_THREADS
+
3823  ret = pthread_mutex_init(&log_mutex, NULL);
+
3824  if (ret != 0) {
+
3825  goto end;
+
3826  }
+
3827  #endif
+
3828  av_log_set_flags(AV_LOG_SKIP_REPEATED);
+ +
3830 
+
3831  ffprobe_options = options;
+
3832  parse_loglevel(argc, argv, options);
+
3833  avformat_network_init();
+
3834  #if CONFIG_AVDEVICE
+
3835  avdevice_register_all();
+
3836  #endif
+
3837 
+
3838  show_banner(argc, argv, options);
+
3839  parse_options(NULL, argc, argv, options, opt_input_file);
+
3840 
+
3841  if (do_show_log)
+
3842  av_log_set_callback(log_callback);
+
3843 
+
3844  /* mark things to show, based on -show_entries */
+
3845  SET_DO_SHOW(CHAPTERS, chapters);
+
3846  SET_DO_SHOW(ERROR, error);
+
3847  SET_DO_SHOW(FORMAT, format);
+
3848  SET_DO_SHOW(FRAMES, frames);
+
3849  SET_DO_SHOW(LIBRARY_VERSIONS, library_versions);
+
3850  SET_DO_SHOW(PACKETS, packets);
+
3851  SET_DO_SHOW(PIXEL_FORMATS, pixel_formats);
+
3852  SET_DO_SHOW(PIXEL_FORMAT_FLAGS, pixel_format_flags);
+
3853  SET_DO_SHOW(PIXEL_FORMAT_COMPONENTS, pixel_format_components);
+
3854  SET_DO_SHOW(PROGRAM_VERSION, program_version);
+
3855  SET_DO_SHOW(PROGRAMS, programs);
+
3856  SET_DO_SHOW(STREAMS, streams);
+
3857  SET_DO_SHOW(STREAM_DISPOSITION, stream_disposition);
+
3858  SET_DO_SHOW(PROGRAM_STREAM_DISPOSITION, stream_disposition);
+
3859 
+
3860  SET_DO_SHOW(CHAPTER_TAGS, chapter_tags);
+
3861  SET_DO_SHOW(FORMAT_TAGS, format_tags);
+
3862  SET_DO_SHOW(FRAME_TAGS, frame_tags);
+
3863  SET_DO_SHOW(PROGRAM_TAGS, program_tags);
+
3864  SET_DO_SHOW(STREAM_TAGS, stream_tags);
+
3865  SET_DO_SHOW(PROGRAM_STREAM_TAGS, stream_tags);
+
3866  SET_DO_SHOW(PACKET_TAGS, packet_tags);
+
3867 
+ +
3869  av_log(NULL, AV_LOG_ERROR,
+
3870  "-bitexact and -show_program_version or -show_library_versions "
+
3871  "options are incompatible\n");
+
3872  ret = AVERROR(EINVAL);
+
3873  goto end;
+
3874  }
+
3875 
+ +
3877 
+
3878  if (!print_format)
+
3879  print_format = av_strdup("default");
+
3880  if (!print_format) {
+
3881  ret = AVERROR(ENOMEM);
+
3882  goto end;
+
3883  }
+
3884  w_name = av_strtok(print_format, "=", &buf);
+
3885  if (!w_name) {
+
3886  av_log(NULL, AV_LOG_ERROR,
+
3887  "No name specified for the output format\n");
+
3888  ret = AVERROR(EINVAL);
+
3889  goto end;
+
3890  }
+
3891  w_args = buf;
+
3892 
+
3893  if (show_data_hash) {
+
3894  if ((ret = av_hash_alloc(&hash, show_data_hash)) < 0) {
+
3895  if (ret == AVERROR(EINVAL)) {
+
3896  const char *n;
+
3897  av_log(NULL, AV_LOG_ERROR,
+
3898  "Unknown hash algorithm '%s'\nKnown algorithms:",
+
3899  show_data_hash);
+
3900  for (i = 0; (n = av_hash_names(i)); i++)
+
3901  av_log(NULL, AV_LOG_ERROR, " %s", n);
+
3902  av_log(NULL, AV_LOG_ERROR, "\n");
+
3903  }
+
3904  goto end;
+
3905  }
+
3906  }
+
3907 
+
3908  w = writer_get_by_name(w_name);
+
3909  if (!w) {
+
3910  av_log(NULL, AV_LOG_ERROR, "Unknown output format with name '%s'\n", w_name);
+
3911  ret = AVERROR(EINVAL);
+
3912  goto end;
+
3913  }
+
3914 
+
3915  if ((ret = writer_open(&wctx, w, w_args,
+
3916  sections, FF_ARRAY_ELEMS(sections))) >= 0) {
+
3917  if (w == &xml_writer)
+
3918  wctx->string_validation_utf8_flags |= AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES;
+
3919 
+ +
3921 
+ + + + + + +
3928 
+
3929  if (!input_filename &&
+ + +
3932  show_usage();
+
3933  av_log(NULL, AV_LOG_ERROR, "You have to specify one input file.\n");
+
3934  av_log(NULL, AV_LOG_ERROR, "Use -h to get full help or, even better, run 'man %s'.\n", program_name);
+
3935  ret = AVERROR(EINVAL);
+
3936  } else if (input_filename) {
+ +
3938  if (ret < 0 && do_show_error)
+
3939  show_error(wctx, ret);
+
3940  }
+
3941 
+ +
3943  writer_close(&wctx);
+
3944  }
+
3945 
+
3946  main_ffprobe_return_code = ret < 0;
+
3947 
+
3948  } else {
+ +
3950  }
+
3951 
+
3952 end:
+
3953  av_freep(&print_format);
+
3954  av_freep(&read_intervals);
+
3955  av_hash_freep(&hash);
+
3956 
+
3957  uninit_opts();
+
3958  for (i = 0; i < FF_ARRAY_ELEMS(sections); i++)
+
3959  av_dict_free(&(sections[i].entries_to_show));
+
3960 
+
3961  avformat_network_deinit();
+
3962 
+
3963  return main_ffprobe_return_code;
+
3964 }
+
+
xml_print_str
static void xml_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1743
+
SECTION_ID_PROGRAM_TAGS
@ SECTION_ID_PROGRAM_TAGS
Definition: fftools_ffprobe.c:201
+
show_private_data
__thread int show_private_data
Definition: fftools_ffprobe.c:124
+
ffprobe_show_pixel_formats
static void ffprobe_show_pixel_formats(WriterContext *w)
Definition: fftools_ffprobe.c:3230
+
json_print_item_str
static void json_print_item_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1584
+
probe_file
static int probe_file(WriterContext *wctx, const char *filename, const char *print_filename)
Definition: fftools_ffprobe.c:3093
+
JSON_INDENT
#define JSON_INDENT()
Definition: fftools_ffprobe.c:1522
+
bin_str
const char * bin_str
Definition: fftools_ffprobe.c:279
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+
print_primaries
static void print_primaries(WriterContext *w, enum AVColorPrimaries color_primaries)
Definition: fftools_ffprobe.c:2077
+
SECTION_ID_FRAME_SIDE_DATA_TIMECODE
@ SECTION_ID_FRAME_SIDE_DATA_TIMECODE
Definition: fftools_ffprobe.c:180
+
writer_print_integer
static void writer_print_integer(WriterContext *wctx, const char *key, long long int val)
Definition: fftools_ffprobe.c:685
+
clear_log
static void clear_log(int need_lock)
Definition: fftools_ffprobe.c:2108
+
validate_string
static int validate_string(WriterContext *wctx, char **dstp, const char *src)
Definition: fftools_ffprobe.c:696
+
opt_show_versions
static int opt_show_versions(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3610
+
close_input_file
static void close_input_file(InputFile *ifile)
Definition: fftools_ffprobe.c:3079
+
show_decoders
int show_decoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1691
+
json_print_str
static void json_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1596
+
log_buffer
__thread LogBuffer * log_buffer
Definition: fftools_ffprobe.c:312
+
print_section_footer
#define print_section_footer(s)
Definition: fftools_ffprobe.c:1828
+
Writer::uninit
void(* uninit)(WriterContext *wctx)
Definition: fftools_ffprobe.c:453
+
CompactContext::terminate_line
int terminate_line[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:1096
+
PRINT_STRING_VALIDATE
#define PRINT_STRING_VALIDATE
Definition: fftools_ffprobe.c:752
+
print_int
#define print_int(k, v)
Definition: fftools_ffprobe.c:1811
+
do_count_packets
__thread int do_count_packets
Definition: fftools_ffprobe.c:94
+
LogBuffer
struct LogBuffer LogBuffer
+
flat_options
static const AVOption flat_options[]
Definition: fftools_ffprobe.c:1256
+
default_print_section_footer
static void default_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:993
+
show_optional_fields
__thread int show_optional_fields
Definition: fftools_ffprobe.c:129
+
print_section_header
#define print_section_header(s)
Definition: fftools_ffprobe.c:1827
+
FlatContext::sep
char sep
Definition: fftools_ffprobe.c:1249
+
ex_buf__
__thread jmp_buf ex_buf__
Definition: ffmpegkit_exception.cpp:23
+
DefaultContext
Definition: fftools_ffprobe.c:938
+
writer_options
static const AVOption writer_options[]
Definition: fftools_ffprobe.c:501
+
do_show_pixel_format_flags
__thread int do_show_pixel_format_flags
Definition: fftools_ffprobe.c:109
+
ini_print_str
static void ini_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1446
+
ini_writer
static const Writer ini_writer
Definition: fftools_ffprobe.c:1462
+
OPT_EXIT
#define OPT_EXIT
Definition: fftools_cmdutils.h:203
+
if
if(!fg) exit_program(1)
+
SECTION_ID_PIXEL_FORMAT
@ SECTION_ID_PIXEL_FORMAT
Definition: fftools_ffprobe.c:191
+
SECTION_ID_PACKET
@ SECTION_ID_PACKET
Definition: fftools_ffprobe.c:185
+
filter_codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Definition: fftools_cmdutils.c:2156
+
writer_print_integers
static void writer_print_integers(WriterContext *wctx, const char *name, uint8_t *data, int size, const char *format, int columns, int bytes, int offset_add)
Definition: fftools_ffprobe.c:870
+
CompactContext::nested_section
int nested_section[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:1094
+
MAX_REGISTERED_WRITERS_NB
#define MAX_REGISTERED_WRITERS_NB
Definition: fftools_ffprobe.c:896
+
SECTION_FLAG_HAS_VARIABLE_FIELDS
#define SECTION_FLAG_HAS_VARIABLE_FIELDS
Definition: fftools_ffprobe.c:156
+
program_name
__thread char * program_name
Definition: fftools_cmdutils.c:97
+
SECTION_ID_FRAME_SIDE_DATA
@ SECTION_ID_FRAME_SIDE_DATA
Definition: fftools_ffprobe.c:178
+
read_interval_packets
static int read_interval_packets(WriterContext *w, InputFile *ifile, const ReadInterval *interval, int64_t *cur_ts)
Definition: fftools_ffprobe.c:2474
+
Writer::flags
int flags
a combination or WRITER_FLAG_*
Definition: fftools_ffprobe.c:460
+
LogBuffer::parent_category
AVClassCategory parent_category
Definition: fftools_ffprobe.c:309
+
codec_opts
__thread AVDictionary * codec_opts
Definition: fftools_cmdutils.c:102
+
DefaultContext::nokey
int nokey
Definition: fftools_ffprobe.c:940
+
do_show_format
__thread int do_show_format
Definition: fftools_ffprobe.c:99
+
ffprobe_show_program_version
static void ffprobe_show_program_version(WriterContext *w)
Definition: fftools_ffprobe.c:3181
+
writer_register_all
static void writer_register_all(void)
Definition: fftools_ffprobe.c:1793
+
WriterContext::name
char * name
name of this writer instance
Definition: fftools_ffprobe.c:468
+
writer_get_name
static const char * writer_get_name(void *p)
Definition: fftools_ffprobe.c:493
+
selected_streams
__thread int * selected_streams
Definition: fftools_ffprobe.c:298
+
OPT_INPUT
#define OPT_INPUT
Definition: fftools_cmdutils.h:210
+
WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
#define WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS
Definition: fftools_ffprobe.c:437
+
do_show_stream_tags
__thread int do_show_stream_tags
Definition: fftools_ffprobe.c:117
+
INIContext
Definition: fftools_ffprobe.c:1370
+
writer_print_ts
static void writer_print_ts(WriterContext *wctx, const char *key, int64_t ts, int is_duration)
Definition: fftools_ffprobe.c:818
+
c_escape_str
static const char * c_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Definition: fftools_ffprobe.c:1040
+
ini_escape_str
static char * ini_escape_str(AVBPrint *dst, const char *src)
Definition: fftools_ffprobe.c:1386
+
show_pix_fmts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1791
+
LogBuffer::category
AVClassCategory category
Definition: fftools_ffprobe.c:307
+
DEFINE_OPT_SHOW_SECTION
#define DEFINE_OPT_SHOW_SECTION(section, target_section_id)
Definition: fftools_ffprobe.c:3617
+
WriterContext::writer
const Writer * writer
the Writer of which this is an instance
Definition: fftools_ffprobe.c:467
+
CompactContext::item_sep_str
char * item_sep_str
Definition: fftools_ffprobe.c:1088
+
SectionID
SectionID
Definition: fftools_ffprobe.c:166
+
ReadInterval::end
int64_t end
start, end in second/AV_TIME_BASE units
Definition: fftools_ffprobe.c:137
+
exit_program
void exit_program(int ret)
Definition: fftools_cmdutils.c:160
+
section::element_name
const char * element_name
name of the contained element, if provided
Definition: fftools_ffprobe.c:160
+
compact_print_section_footer
static void compact_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1168
+
DefaultContext::nested_section
int nested_section[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:942
+
InputFile::fmt_ctx
AVFormatContext * fmt_ctx
Definition: fftools_ffprobe.c:86
+
parse_options
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
Definition: fftools_cmdutils.c:409
+
do_show_chapter_tags
__thread int do_show_chapter_tags
Definition: fftools_ffprobe.c:113
+
writer_print_string
static int writer_print_string(WriterContext *wctx, const char *key, const char *val, int flags)
Definition: fftools_ffprobe.c:754
+
InputStream
Definition: fftools_ffmpeg.h:324
+
upcase_string
static char * upcase_string(char *dst, size_t dst_size, const char *src)
Definition: fftools_ffprobe.c:959
+
SECTION_ID_PROGRAM_STREAMS
@ SECTION_ID_PROGRAM_STREAMS
Definition: fftools_ffprobe.c:199
+
DEFINE_WRITER_CLASS
#define DEFINE_WRITER_CLASS(name)
Definition: fftools_ffprobe.c:925
+
show_encoders
int show_encoders(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1697
+
flat_print_section_header
static void flat_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1313
+
show_demuxers
int show_demuxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1411
+
section::id
int id
unique id identifying a section
Definition: fftools_ffprobe.c:151
+
LogBuffer
Definition: fftools_ffprobe.c:303
+
bin_val
double bin_val
Definition: fftools_ffprobe.c:277
+
JSONContext::indent_level
int indent_level
Definition: fftools_ffprobe.c:1476
+
CHECK_COMPLIANCE
#define CHECK_COMPLIANCE(opt, opt_name)
+
value_string
static char * value_string(char *buf, int buf_size, struct unit_value uv)
Definition: fftools_ffprobe.c:380
+
WriterContext::level
int level
current level, starting from 0
Definition: fftools_ffprobe.c:474
+
find_stream_info
__thread int find_stream_info
Definition: fftools_ffmpeg_opt.c:203
+
print_color_trc
static void print_color_trc(WriterContext *w, enum AVColorTransferCharacteristic color_trc)
Definition: fftools_ffprobe.c:2087
+
do_show_program_tags
__thread int do_show_program_tags
Definition: fftools_ffprobe.c:116
+
writer_print_rational
static void writer_print_rational(WriterContext *wctx, const char *key, AVRational q, char sep)
Definition: fftools_ffprobe.c:792
+
do_show_packets
__thread int do_show_packets
Definition: fftools_ffprobe.c:101
+
show_muxers
int show_muxers(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1406
+
section::unique_name
const char * unique_name
unique section name, in case the name is ambiguous
Definition: fftools_ffprobe.c:161
+
show_streams
static int show_streams(WriterContext *w, InputFile *ifile)
Definition: fftools_ffprobe.c:2822
+
ffprobe_options
__thread OptionDef * ffprobe_options
Definition: fftools_ffprobe.c:264
+
FlatContext::hierarchical
int hierarchical
Definition: fftools_ffprobe.c:1250
+
print_str_opt
#define print_str_opt(k, v)
Definition: fftools_ffprobe.c:1814
+
LogBuffer::context_name
char * context_name
Definition: fftools_ffprobe.c:304
+
StringValidation
StringValidation
Definition: fftools_ffprobe.c:440
+
XMLContext::within_tag
int within_tag
Definition: fftools_ffprobe.c:1642
+
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Definition: fftools_cmdutils.c:204
+
do_show_programs
__thread int do_show_programs
Definition: fftools_ffprobe.c:102
+
do_show_frame_tags
__thread int do_show_frame_tags
Definition: fftools_ffprobe.c:115
+
print_chroma_location
static void print_chroma_location(WriterContext *w, enum AVChromaLocation chroma_location)
Definition: fftools_ffprobe.c:2097
+
main_ffprobe_return_code
__thread volatile int main_ffprobe_return_code
Definition: fftools_ffprobe.c:273
+
show_value_unit
__thread int show_value_unit
Definition: fftools_ffprobe.c:120
+
InputFile
struct InputFile InputFile
+
do_count_frames
__thread int do_count_frames
Definition: fftools_ffprobe.c:93
+
compact_print_int
static void compact_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1191
+
flat_writer
static const Writer flat_writer
Definition: fftools_ffprobe.c:1357
+
show_help_default_ffprobe
void show_help_default_ffprobe(const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3422
+
none_escape_str
static const char * none_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Definition: fftools_ffprobe.c:1081
+
ReadInterval::start_is_offset
int start_is_offset
Definition: fftools_ffprobe.c:139
+
SECTION_FLAG_IS_WRAPPER
#define SECTION_FLAG_IS_WRAPPER
the section only contains other sections, but has no data at its own level
Definition: fftools_ffprobe.c:154
+
SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST
@ SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST
Definition: fftools_ffprobe.c:179
+
SECTION_ID_CHAPTER_TAGS
@ SECTION_ID_CHAPTER_TAGS
Definition: fftools_ffprobe.c:169
+
log_read_interval
static void log_read_interval(const ReadInterval *interval, void *log_ctx, int log_level)
Definition: fftools_ffprobe.c:2450
+
REALLOCZ_ARRAY_STREAM
#define REALLOCZ_ARRAY_STREAM(ptr, cur_n, new_n)
Definition: fftools_ffprobe.c:1830
+
xml_print_int
static void xml_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1774
+
do_show_format_tags
__thread int do_show_format_tags
Definition: fftools_ffprobe.c:114
+
XMLContext::indent_level
int indent_level
Definition: fftools_ffprobe.c:1643
+
print_color_range
static void print_color_range(WriterContext *w, enum AVColorRange color_range)
Definition: fftools_ffprobe.c:2057
+
show_help
int show_help(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:2042
+
parse_number_or_die
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
Definition: fftools_cmdutils.c:171
+
OPT_VIDEO
#define OPT_VIDEO
Definition: fftools_cmdutils.h:197
+
writer_class
static const AVClass writer_class
Definition: fftools_ffprobe.c:522
+
unit_value::val
union unit_value::@4 val
+
next_registered_writer_idx
__thread int next_registered_writer_idx
Definition: fftools_ffprobe.c:900
+
xml_init
static av_cold int xml_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1661
+
pthread_mutex_lock
#define pthread_mutex_lock(a)
Definition: fftools_ffprobe.c:72
+
SECTION_ID_FRAME_LOGS
@ SECTION_ID_FRAME_LOGS
Definition: fftools_ffprobe.c:182
+
sections
static struct section sections[]
Definition: fftools_ffprobe.c:214
+
DefaultContext::noprint_wrappers
int noprint_wrappers
Definition: fftools_ffprobe.c:941
+
use_value_prefix
__thread int use_value_prefix
Definition: fftools_ffprobe.c:121
+
flat_escape_value_str
static const char * flat_escape_value_str(AVBPrint *dst, const char *src)
Definition: fftools_ffprobe.c:1295
+
SECTION_ID_FORMAT
@ SECTION_ID_FORMAT
Definition: fftools_ffprobe.c:172
+
SECTION_ID_PROGRAM
@ SECTION_ID_PROGRAM
Definition: fftools_ffprobe.c:198
+
match_section
static int match_section(const char *section_name, int show_all_entries, AVDictionary *entries)
Definition: fftools_ffprobe.c:3312
+
OPT_INT
#define OPT_INT
Definition: fftools_cmdutils.h:199
+
opt_default
int opt_default(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:575
+
opt_read_intervals
static int opt_read_intervals(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3567
+
CompactContext::print_section
int print_section
Definition: fftools_ffprobe.c:1091
+
show_filters
int show_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1730
+
process_frame
static av_always_inline int process_frame(WriterContext *w, InputFile *ifile, AVFrame *frame, AVPacket *pkt, int *packet_new)
Definition: fftools_ffprobe.c:2384
+
writer_print_section_header
static void writer_print_section_header(WriterContext *wctx, int section_id)
Definition: fftools_ffprobe.c:644
+
FlatContext
struct FlatContext FlatContext
+
xml_print_section_header
static void xml_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1684
+
print_fmt
#define print_fmt(k, f,...)
Definition: fftools_ffprobe.c:1805
+
print_str_validate
#define print_str_validate(k, v)
Definition: fftools_ffprobe.c:1815
+
compact_init
static av_cold int compact_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1116
+
opt_input_file_i
static int opt_input_file_i(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3410
+
show_version
int show_version(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1242
+
use_byte_value_binary_prefix
__thread int use_byte_value_binary_prefix
Definition: fftools_ffprobe.c:122
+
writer_close
static void writer_close(WriterContext **wctx)
Definition: fftools_ffprobe.c:530
+
SHOW_OPTIONAL_FIELDS_AUTO
#define SHOW_OPTIONAL_FIELDS_AUTO
Definition: fftools_ffprobe.c:126
+
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:536
+
default_print_int
static void default_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1015
+
DefaultContext
struct DefaultContext DefaultContext
+
bprint_bytes
static void bprint_bytes(AVBPrint *bp, const uint8_t *ubuf, size_t ubuf_size)
Definition: fftools_ffprobe.c:548
+
show_program
static int show_program(WriterContext *w, InputFile *ifile, AVProgram *program)
Definition: fftools_ffprobe.c:2839
+
dec_val
double dec_val
Definition: fftools_ffprobe.c:278
+
show_programs
static int show_programs(WriterContext *w, InputFile *ifile)
Definition: fftools_ffprobe.c:2874
+
HAS_ARG
#define HAS_ARG
Definition: fftools_cmdutils.h:193
+
flat_init
static av_cold int flat_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1266
+
json_writer
static const Writer json_writer
Definition: fftools_ffprobe.c:1626
+
mark_section_show_entries
static void mark_section_show_entries(SectionID section_id, int show_all_entries, AVDictionary *entries)
Definition: fftools_ffprobe.c:3297
+
print_q
#define print_q(k, v, s)
Definition: fftools_ffprobe.c:1812
+
show_data_hash
__thread char * show_data_hash
Definition: fftools_ffprobe.c:133
+
ffmpegkit_exception.h
+
print_duration_ts
#define print_duration_ts(k, v)
Definition: fftools_ffprobe.c:1819
+
ReadInterval::has_end
int has_end
Definition: fftools_ffprobe.c:138
+
SECTION_MAX_NB_CHILDREN
#define SECTION_MAX_NB_CHILDREN
Definition: fftools_ffprobe.c:148
+
section::show_all_entries
int show_all_entries
Definition: fftools_ffprobe.c:163
+
SHOW_OPTIONAL_FIELDS_ALWAYS
#define SHOW_OPTIONAL_FIELDS_ALWAYS
Definition: fftools_ffprobe.c:128
+
Writer::init
int(* init)(WriterContext *wctx)
Definition: fftools_ffprobe.c:452
+
opt_format
static int opt_format(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3287
+
PRINT_STRING_OPT
#define PRINT_STRING_OPT
Definition: fftools_ffprobe.c:751
+
SECTION_ID_PIXEL_FORMAT_FLAGS
@ SECTION_ID_PIXEL_FORMAT_FLAGS
Definition: fftools_ffprobe.c:192
+
ReadInterval::end_is_offset
int end_is_offset
Definition: fftools_ffprobe.c:139
+
InputFile
Definition: fftools_ffmpeg.h:425
+
default_print_section_header
static void default_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:968
+
log_callback
static void log_callback(void *ptr, int level, const char *fmt, va_list vl)
Definition: fftools_ffprobe.c:315
+
SECTION_ID_STREAM_SIDE_DATA
@ SECTION_ID_STREAM_SIDE_DATA
Definition: fftools_ffprobe.c:210
+
OPT_STRING
#define OPT_STRING
Definition: fftools_cmdutils.h:196
+
SECTION_ID_PACKET_SIDE_DATA
@ SECTION_ID_PACKET_SIDE_DATA
Definition: fftools_ffprobe.c:190
+
InputStream
struct InputStream InputStream
+
do_show_packet_tags
__thread int do_show_packet_tags
Definition: fftools_ffprobe.c:118
+
flat_escape_key_str
static const char * flat_escape_key_str(AVBPrint *dst, const char *src, const char sep)
Definition: fftools_ffprobe.c:1280
+
section::name
const char * name
Definition: fftools_ffprobe.c:152
+
opt_show_entries
static int opt_show_entries(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3331
+
InputFile::streams
InputStream * streams
Definition: fftools_ffprobe.c:88
+
print_ts
#define print_ts(k, v)
Definition: fftools_ffprobe.c:1817
+
SECTION_ID_PROGRAM_STREAM_TAGS
@ SECTION_ID_PROGRAM_STREAM_TAGS
Definition: fftools_ffprobe.c:197
+
show_colors
int show_colors(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1777
+
opt_show_format_entry
static int opt_show_format_entry(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3381
+
default_print_str
static void default_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1006
+
section::children_ids
int children_ids[SECTION_MAX_NB_CHILDREN+1]
list of children section IDS, terminated by -1
Definition: fftools_ffprobe.c:159
+
Writer::print_rational
void(* print_rational)(WriterContext *wctx, AVRational *q, char *sep)
Definition: fftools_ffprobe.c:458
+
CompactContext
Definition: fftools_ffprobe.c:1086
+
show_bsfs
int show_bsfs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1703
+
csv_escape_str
static const char * csv_escape_str(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Definition: fftools_ffprobe.c:1063
+
SECTION_ID_FRAME_SIDE_DATA_LIST
@ SECTION_ID_FRAME_SIDE_DATA_LIST
Definition: fftools_ffprobe.c:177
+
unit_bit_per_second_str
static const char unit_bit_per_second_str[]
Definition: fftools_ffprobe.c:293
+
SECTION_ID_FORMAT_TAGS
@ SECTION_ID_FORMAT_TAGS
Definition: fftools_ffprobe.c:173
+
show_tags
static int show_tags(WriterContext *w, AVDictionary *tags, int section_id)
Definition: fftools_ffprobe.c:1838
+
Writer::priv_class
const AVClass * priv_class
private class of the writer, if any
Definition: fftools_ffprobe.c:448
+
Writer
Definition: fftools_ffprobe.c:447
+
SHOW_LIB_VERSION
#define SHOW_LIB_VERSION(libname, LIBNAME)
Definition: fftools_ffprobe.c:3197
+
print_time
#define print_time(k, v, tb)
Definition: fftools_ffprobe.c:1816
+
print_duration_time
#define print_duration_time(k, v, tb)
Definition: fftools_ffprobe.c:1818
+
print_input_filename
const __thread char * print_input_filename
Definition: fftools_ffprobe.c:268
+
SECTION_ID_FRAMES
@ SECTION_ID_FRAMES
Definition: fftools_ffprobe.c:175
+
show_frame
static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream, AVFormatContext *fmt_ctx)
Definition: fftools_ffprobe.c:2235
+
dec_str
const char * dec_str
Definition: fftools_ffprobe.c:280
+
SECTION_ID_PIXEL_FORMAT_COMPONENTS
@ SECTION_ID_PIXEL_FORMAT_COMPONENTS
Definition: fftools_ffprobe.c:194
+
SECTION_ID_ROOT
@ SECTION_ID_ROOT
Definition: fftools_ffprobe.c:204
+
SECTION_ID_ERROR
@ SECTION_ID_ERROR
Definition: fftools_ffprobe.c:171
+
JSONContext
struct JSONContext JSONContext
+
csv_writer
static const Writer csv_writer
Definition: fftools_ffprobe.c:1232
+
WRITER_STRING_VALIDATION_FAIL
@ WRITER_STRING_VALIDATION_FAIL
Definition: fftools_ffprobe.c:441
+
xml_print_section_footer
static void xml_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1724
+
SECTION_ID_SUBTITLE
@ SECTION_ID_SUBTITLE
Definition: fftools_ffprobe.c:211
+
print_color_space
static void print_color_space(WriterContext *w, enum AVColorSpace color_space)
Definition: fftools_ffprobe.c:2067
+
program_birth_year
__thread int program_birth_year
Definition: fftools_cmdutils.c:98
+
SECTION_FLAG_IS_ARRAY
#define SECTION_FLAG_IS_ARRAY
the section contains an array of elements of the same type
Definition: fftools_ffprobe.c:155
+
WriterContext::string_validation_replacement
char * string_validation_replacement
Definition: fftools_ffprobe.c:489
+
uninit_opts
void uninit_opts(void)
Definition: fftools_cmdutils.c:115
+
hash
__thread struct AVHashContext * hash
Definition: fftools_ffprobe.c:271
+
SECTION_ID_PIXEL_FORMATS
@ SECTION_ID_PIXEL_FORMATS
Definition: fftools_ffprobe.c:195
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
show_error
static void show_error(WriterContext *w, int err)
Definition: fftools_ffprobe.c:2948
+
InputFile::nb_streams
int nb_streams
Definition: fftools_ffmpeg.h:441
+
format_opts
__thread AVDictionary * format_opts
Definition: fftools_cmdutils.c:102
+
json_escape_str
static const char * json_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
Definition: fftools_ffprobe.c:1502
+
XMLContext::xsd_strict
int xsd_strict
Definition: fftools_ffprobe.c:1645
+
compact_print_section_header
static void compact_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1138
+
opt_loglevel
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:919
+
do_show_chapters
__thread int do_show_chapters
Definition: fftools_ffprobe.c:97
+
show_sample_fmts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1853
+
json_print_section_header
static void json_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1524
+
do_show_frames
__thread int do_show_frames
Definition: fftools_ffprobe.c:100
+
register_exit
void register_exit(void(*cb)(int ret))
Definition: fftools_cmdutils.c:155
+
ReadInterval::id
int id
identifier
Definition: fftools_ffprobe.c:136
+
Writer::print_section_footer
void(* print_section_footer)(WriterContext *wctx)
Definition: fftools_ffprobe.c:456
+
unit_second_str
static const char unit_second_str[]
Definition: fftools_ffprobe.c:290
+
show_help_children
void show_help_children(const AVClass *avClass, int flags)
Definition: fftools_cmdutils.c:233
+
WRITER_STRING_VALIDATION_NB
@ WRITER_STRING_VALIDATION_NB
Definition: fftools_ffprobe.c:444
+
print_error
void print_error(const char *filename, int err)
Definition: fftools_cmdutils.c:1134
+
writer_print_time
static void writer_print_time(WriterContext *wctx, const char *key, int64_t ts, const AVRational *time_base, int is_duration)
Definition: fftools_ffprobe.c:801
+
SECTION_ID_PROGRAM_STREAM
@ SECTION_ID_PROGRAM_STREAM
Definition: fftools_ffprobe.c:200
+
csv_options
static const AVOption csv_options[]
Definition: fftools_ffprobe.c:1218
+
SECTION_ID_PROGRAM_VERSION
@ SECTION_ID_PROGRAM_VERSION
Definition: fftools_ffprobe.c:202
+
Writer::name
const char * name
Definition: fftools_ffprobe.c:450
+
section
Definition: fftools_ffprobe.c:150
+
opt_sections
static int opt_sections(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3598
+
SECTION_ID_PACKETS_AND_FRAMES
@ SECTION_ID_PACKETS_AND_FRAMES
Definition: fftools_ffprobe.c:188
+
registered_writers
const __thread Writer * registered_writers[MAX_REGISTERED_WRITERS_NB+1]
Definition: fftools_ffprobe.c:898
+
do_show_log
__thread int do_show_log
Definition: fftools_ffprobe.c:111
+
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Definition: fftools_cmdutils.c:1231
+
opt_cpucount
int opt_cpucount(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:893
+
WriterContext::priv
void * priv
private data for use by the filter
Definition: fftools_ffprobe.c:469
+
unit_value
Definition: fftools_ffprobe.c:375
+
InputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:326
+
ini_print_section_header
static void ini_print_section_header(WriterContext *wctx)
Definition: fftools_ffprobe.c:1413
+
JSONContext
Definition: fftools_ffprobe.c:1474
+
ReadInterval::has_start
int has_start
Definition: fftools_ffprobe.c:138
+
WriterContext::nb_sections
int nb_sections
number of sections
Definition: fftools_ffprobe.c:472
+
parse_read_interval
static int parse_read_interval(const char *interval_spec, ReadInterval *interval)
Definition: fftools_ffprobe.c:3437
+
Writer::print_integer
void(* print_integer)(WriterContext *wctx, const char *, long long int)
Definition: fftools_ffprobe.c:457
+
InputStream::dec_ctx
AVCodecContext * dec_ctx
Definition: fftools_ffmpeg.h:333
+
LogBuffer::log_level
int log_level
Definition: fftools_ffprobe.c:305
+
WriterContext::sections
const struct section * sections
array containing all sections
Definition: fftools_ffprobe.c:471
+
si_prefixes
static const struct @3 si_prefixes[]
+
d
d
Definition: fftools_ffmpeg_filter.c:165
+
SECTION_ID_STREAM_TAGS
@ SECTION_ID_STREAM_TAGS
Definition: fftools_ffprobe.c:208
+
WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
#define WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER
Definition: fftools_ffprobe.c:438
+
compact_writer
static const Writer compact_writer
Definition: fftools_ffprobe.c:1201
+
read_packets
static int read_packets(WriterContext *w, InputFile *ifile)
Definition: fftools_ffprobe.c:2582
+
stream_specifier
__thread char * stream_specifier
Definition: fftools_ffprobe.c:132
+
opt_cpuflags
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:881
+
section::entries_to_show
AVDictionary * entries_to_show
Definition: fftools_ffprobe.c:162
+
ReadInterval::duration_frames
int duration_frames
Definition: fftools_ffprobe.c:140
+
WRITER_STRING_VALIDATION_IGNORE
@ WRITER_STRING_VALIDATION_IGNORE
Definition: fftools_ffprobe.c:443
+
print_val
#define print_val(k, v, u)
Definition: fftools_ffprobe.c:1820
+
OFFSET
#define OFFSET(x)
Definition: fftools_ffprobe.c:1649
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
format
fg outputs[0] format
Definition: fftools_ffmpeg_filter.c:184
+
show_log
static int show_log(WriterContext *w, int section_ids, int section_id, int log_level)
Definition: fftools_ffprobe.c:2124
+
PRINT_PIX_FMT_FLAG
#define PRINT_PIX_FMT_FLAG(flagname, name)
Definition: fftools_ffprobe.c:3225
+
do_show_data
__thread int do_show_data
Definition: fftools_ffprobe.c:105
+
show_protocols
int show_protocols(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1715
+
Writer
struct Writer Writer
+
writer_register
static int writer_register(const Writer *writer)
Definition: fftools_ffprobe.c:902
+
do_show_program_version
__thread int do_show_program_version
Definition: fftools_ffprobe.c:106
+
XMLContext
Definition: fftools_ffprobe.c:1640
+
unit_value::unit
const char * unit
Definition: fftools_ffprobe.c:377
+
WriterContext::nb_section_packet_frame
unsigned int nb_section_packet_frame
nb_section_packet or nb_section_frame according if is_packets_and_frames
Definition: fftools_ffprobe.c:486
+
SECTION_ID_NONE
@ SECTION_ID_NONE
Definition: fftools_ffprobe.c:167
+
section::flags
int flags
For these sections the element_name field is mandatory.
Definition: fftools_ffprobe.c:158
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
SECTION_ID_PROGRAMS
@ SECTION_ID_PROGRAMS
Definition: fftools_ffprobe.c:203
+
show_codecs
int show_codecs(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1596
+
print_pkt_side_data
static void print_pkt_side_data(WriterContext *w, AVCodecParameters *par, const AVPacketSideData *side_data, int nb_side_data, SectionID id_data_list, SectionID id_data)
Definition: fftools_ffprobe.c:1955
+
CompactContext::nokey
int nokey
Definition: fftools_ffprobe.c:1090
+
SECTION_ID_CHAPTER
@ SECTION_ID_CHAPTER
Definition: fftools_ffprobe.c:168
+
ffprobe_execute
int ffprobe_execute(int argc, char **argv)
Definition: fftools_ffprobe.c:3717
+
XMLContext
struct XMLContext XMLContext
+
SECTION_ID_PACKETS
@ SECTION_ID_PACKETS
Definition: fftools_ffprobe.c:187
+
do_show_stream_disposition
__thread int do_show_stream_disposition
Definition: fftools_ffprobe.c:104
+
XML_INDENT
#define XML_INDENT()
Definition: fftools_ffprobe.c:1682
+
hide_banner
__thread int hide_banner
Definition: fftools_cmdutils.c:106
+
default_writer
static const Writer default_writer
Definition: fftools_ffprobe.c:1024
+
writer_get_by_name
static const Writer * writer_get_by_name(const char *name)
Definition: fftools_ffprobe.c:911
+
log_buffer_size
__thread int log_buffer_size
Definition: fftools_ffprobe.c:313
+
FlatContext
Definition: fftools_ffprobe.c:1246
+
WriterContext
Definition: fftools_ffprobe.c:465
+
read_intervals
__thread ReadInterval * read_intervals
Definition: fftools_ffprobe.c:143
+
OptionDef
Definition: fftools_cmdutils.h:190
+
opt_report
int opt_report(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1102
+
unit_byte_str
static const char unit_byte_str[]
Definition: fftools_ffprobe.c:292
+
opt_input_file
static void opt_input_file(void *optctx, const char *arg)
Definition: fftools_ffprobe.c:3397
+
show_chapters
static int show_chapters(WriterContext *w, InputFile *ifile)
Definition: fftools_ffprobe.c:2892
+
nb_streams_frames
__thread uint64_t * nb_streams_frames
Definition: fftools_ffprobe.c:297
+
opt_pretty
static int opt_pretty(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3572
+
ini_options
static const AVOption ini_options[]
Definition: fftools_ffprobe.c:1378
+
SECTION_ID_STREAM_SIDE_DATA_LIST
@ SECTION_ID_STREAM_SIDE_DATA_LIST
Definition: fftools_ffprobe.c:209
+
WriterContext::nb_section_frame
unsigned int nb_section_frame
number of the frame section in case we are in "packets_and_frames" section
Definition: fftools_ffprobe.c:485
+
JSONContext::compact
int compact
Definition: fftools_ffprobe.c:1477
+
WriterContext::string_validation
int string_validation
Definition: fftools_ffprobe.c:488
+
do_show_error
__thread int do_show_error
Definition: fftools_ffprobe.c:98
+
show_usage
static void show_usage(void)
Definition: fftools_ffprobe.c:3174
+
ini_print_int
static void ini_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1457
+
WriterContext::nb_section_packet
unsigned int nb_section_packet
number of the packet section in case we are in "packets_and_frames" section
Definition: fftools_ffprobe.c:484
+
input_filename
const __thread char * input_filename
Definition: fftools_ffprobe.c:267
+
ReadInterval::start
int64_t start
Definition: fftools_ffprobe.c:137
+
SHOW_OPTIONAL_FIELDS_NEVER
#define SHOW_OPTIONAL_FIELDS_NEVER
Definition: fftools_ffprobe.c:127
+
json_print_int
static void json_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1609
+
writer_print_data
static void writer_print_data(WriterContext *wctx, const char *name, uint8_t *data, int size)
Definition: fftools_ffprobe.c:827
+
SECTION_ID_FRAME_LOG
@ SECTION_ID_FRAME_LOG
Definition: fftools_ffprobe.c:181
+
check_section_show_entries
static int check_section_show_entries(int section_id)
Definition: fftools_ffprobe.c:3635
+
show_devices
int show_devices(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1416
+
show_subtitle
static void show_subtitle(WriterContext *w, AVSubtitle *sub, AVStream *stream, AVFormatContext *fmt_ctx)
Definition: fftools_ffprobe.c:2212
+
nb_streams
__thread int nb_streams
Definition: fftools_ffprobe.c:295
+
compact_options
static const AVOption compact_options[]
Definition: fftools_ffprobe.c:1102
+
SECTION_ID_FRAME
@ SECTION_ID_FRAME
Definition: fftools_ffprobe.c:174
+
INIContext::hierarchical
int hierarchical
Definition: fftools_ffprobe.c:1372
+
Writer::print_string
void(* print_string)(WriterContext *wctx, const char *, const char *)
Definition: fftools_ffprobe.c:459
+
opt_print_filename
static int opt_print_filename(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3416
+
ffprobe_var_cleanup
void ffprobe_var_cleanup()
Definition: fftools_ffprobe.c:3652
+
do_show_streams
__thread int do_show_streams
Definition: fftools_ffprobe.c:103
+
ffprobe_cleanup
static void ffprobe_cleanup(int ret)
Definition: fftools_ffprobe.c:364
+
OPT_AUDIO
#define OPT_AUDIO
Definition: fftools_cmdutils.h:198
+
WriterContext::section
const struct section * section[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:480
+
Writer::print_section_header
void(* print_section_header)(WriterContext *wctx)
Definition: fftools_ffprobe.c:455
+
print_dynamic_hdr10_plus
static void print_dynamic_hdr10_plus(WriterContext *w, const AVDynamicHDRPlus *metadata)
Definition: fftools_ffprobe.c:1856
+
compact_print_str
static void compact_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1178
+
OPT_BOOL
#define OPT_BOOL
Definition: fftools_cmdutils.h:194
+
ReadInterval
struct ReadInterval ReadInterval
+
WriterContext::nb_item
unsigned int nb_item[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:477
+
writer_print_data_hash
static void writer_print_data_hash(WriterContext *wctx, const char *name, uint8_t *data, int size)
Definition: fftools_ffprobe.c:855
+
fftools_cmdutils.h
+
writer_print_section_footer
static void writer_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:668
+
json_options
static const AVOption json_options[]
Definition: fftools_ffprobe.c:1484
+
use_value_sexagesimal_format
__thread int use_value_sexagesimal_format
Definition: fftools_ffprobe.c:123
+
SECTION_ID_PIXEL_FORMAT_COMPONENT
@ SECTION_ID_PIXEL_FORMAT_COMPONENT
Definition: fftools_ffprobe.c:193
+
CHECK_END
#define CHECK_END
+
flat_print_str
static void flat_print_str(WriterContext *wctx, const char *key, const char *value)
Definition: fftools_ffprobe.c:1344
+
do_read_frames
__thread int do_read_frames
Definition: fftools_ffprobe.c:95
+
flat_print_int
static void flat_print_int(WriterContext *wctx, const char *key, long long int value)
Definition: fftools_ffprobe.c:1339
+
SECTION_ID_STREAMS
@ SECTION_ID_STREAMS
Definition: fftools_ffprobe.c:207
+
show_format
static int show_format(WriterContext *w, InputFile *ifile)
Definition: fftools_ffprobe.c:2917
+
XMLContext::fully_qualified
int fully_qualified
Definition: fftools_ffprobe.c:1644
+
unit_hertz_str
static const char unit_hertz_str[]
Definition: fftools_ffprobe.c:291
+
writer_child_next
static void * writer_child_next(void *obj, void *prev)
Definition: fftools_ffprobe.c:514
+
show_stream
static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_idx, InputStream *ist, int in_program)
Definition: fftools_ffprobe.c:2602
+
setup_find_stream_info_opts
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Definition: fftools_cmdutils.c:2214
+
CompactContext::has_nested_elems
int has_nested_elems[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:1095
+
WriterContext::section_pbuf
AVBPrint section_pbuf[SECTION_MAX_NB_LEVELS]
Definition: fftools_ffprobe.c:481
+
SECTION_ID_LIBRARY_VERSIONS
@ SECTION_ID_LIBRARY_VERSIONS
Definition: fftools_ffprobe.c:184
+
Writer::priv_size
int priv_size
private size for the writer context
Definition: fftools_ffprobe.c:449
+
JSONContext::item_sep
const char * item_sep
Definition: fftools_ffprobe.c:1478
+
SECTION_ID_FRAME_TAGS
@ SECTION_ID_FRAME_TAGS
Definition: fftools_ffprobe.c:176
+
SECTION_MAX_NB_LEVELS
#define SECTION_MAX_NB_LEVELS
Definition: fftools_ffprobe.c:463
+
unit_value::i
long long int i
Definition: fftools_ffprobe.c:376
+
SET_DO_SHOW
#define SET_DO_SHOW(id, varname)
Definition: fftools_ffprobe.c:3647
+
SECTION_ID_CHAPTERS
@ SECTION_ID_CHAPTERS
Definition: fftools_ffprobe.c:170
+
show_layouts
int show_layouts(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1824
+
print_section
static void print_section(SectionID id, int level)
Definition: fftools_ffprobe.c:3581
+
xml_options
static const AVOption xml_options[]
Definition: fftools_ffprobe.c:1651
+
ffprobe_show_library_versions
static void ffprobe_show_library_versions(WriterContext *w)
Definition: fftools_ffprobe.c:3212
+
parse_read_intervals
static int parse_read_intervals(const char *intervals_spec)
Definition: fftools_ffprobe.c:3519
+
SECTION_ID_PACKET_TAGS
@ SECTION_ID_PACKET_TAGS
Definition: fftools_ffprobe.c:186
+
show_license
int show_license(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1257
+
SECTION_ID_STREAM
@ SECTION_ID_STREAM
Definition: fftools_ffprobe.c:205
+
WriterContext::string_validation_utf8_flags
unsigned int string_validation_utf8_flags
Definition: fftools_ffprobe.c:490
+
show_buildconf
int show_buildconf(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1250
+
show_formats
int show_formats(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1401
+
INIContext
struct INIContext INIContext
+
writer_open
static int writer_open(WriterContext **wctx, const Writer *writer, const char *args, const struct section *sections, int nb_sections)
Definition: fftools_ffprobe.c:557
+
JSONContext::item_start_end
const char * item_start_end
Definition: fftools_ffprobe.c:1478
+
SECTION_ID_PACKET_SIDE_DATA_LIST
@ SECTION_ID_PACKET_SIDE_DATA_LIST
Definition: fftools_ffprobe.c:189
+
CompactContext
struct CompactContext CompactContext
+
ReadInterval
Definition: fftools_ffprobe.c:135
+
open_input_file
static int open_input_file(InputFile *ifile, const char *filename, const char *print_filename)
Definition: fftools_ffprobe.c:2962
+
do_show_library_versions
__thread int do_show_library_versions
Definition: fftools_ffprobe.c:107
+
xml_writer
static Writer xml_writer
Definition: fftools_ffprobe.c:1781
+
CompactContext::escape_str
const char *(* escape_str)(AVBPrint *dst, const char *src, const char sep, void *log_ctx)
Definition: fftools_ffprobe.c:1093
+
PRINT_DISPOSITION
#define PRINT_DISPOSITION(flagname, name)
+
read_intervals_nb
__thread int read_intervals_nb
Definition: fftools_ffprobe.c:144
+
LogBuffer::parent_name
char * parent_name
Definition: fftools_ffprobe.c:308
+
opt_max_alloc
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:1107
+
CompactContext::escape_mode_str
char * escape_mode_str
Definition: fftools_ffprobe.c:1092
+
do_show_pixel_formats
__thread int do_show_pixel_formats
Definition: fftools_ffprobe.c:108
+
print_str
#define print_str(k, v)
Definition: fftools_ffprobe.c:1813
+
iformat
const __thread AVInputFormat * iformat
Definition: fftools_ffprobe.c:269
+
LogBuffer::log_message
char * log_message
Definition: fftools_ffprobe.c:306
+
SECTION_ID_LIBRARY_VERSION
@ SECTION_ID_LIBRARY_VERSION
Definition: fftools_ffprobe.c:183
+
do_bitexact
__thread int do_bitexact
Definition: fftools_ffprobe.c:92
+
init_dynload
void init_dynload(void)
Definition: fftools_cmdutils.c:144
+
unit_value::d
double d
Definition: fftools_ffprobe.c:376
+
CompactContext::item_sep
char item_sep
Definition: fftools_ffprobe.c:1089
+
WRITER_STRING_VALIDATION_REPLACE
@ WRITER_STRING_VALIDATION_REPLACE
Definition: fftools_ffprobe.c:442
+
print_format
__thread char * print_format
Definition: fftools_ffprobe.c:131
+
pthread_mutex_unlock
#define pthread_mutex_unlock(a)
Definition: fftools_ffprobe.c:76
+
nb_streams_packets
__thread uint64_t * nb_streams_packets
Definition: fftools_ffprobe.c:296
+
SECTION_ID_PROGRAM_STREAM_DISPOSITION
@ SECTION_ID_PROGRAM_STREAM_DISPOSITION
Definition: fftools_ffprobe.c:196
+
OPT_EXPERT
#define OPT_EXPERT
Definition: fftools_cmdutils.h:195
+
do_read_packets
__thread int do_read_packets
Definition: fftools_ffprobe.c:96
+
longjmp_value
__thread volatile int longjmp_value
Definition: fftools_cmdutils.c:107
+
show_packet
static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int packet_idx)
Definition: fftools_ffprobe.c:2159
+
json_init
static av_cold int json_init(WriterContext *wctx)
Definition: fftools_ffprobe.c:1492
+
FlatContext::sep_str
const char * sep_str
Definition: fftools_ffprobe.c:1248
+
json_print_section_footer
static void json_print_section_footer(WriterContext *wctx)
Definition: fftools_ffprobe.c:1562
+
do_show_pixel_format_components
__thread int do_show_pixel_format_components
Definition: fftools_ffprobe.c:110
+
SECTION_ID_STREAM_DISPOSITION
@ SECTION_ID_STREAM_DISPOSITION
Definition: fftools_ffprobe.c:206
+
opt_show_optional_fields
static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffprobe.c:3276
+
default_options
static const AVOption default_options[]
Definition: fftools_ffprobe.c:948
+ + + + diff --git a/docs/linux/html/d8/d99/struct_input_file.html b/docs/linux/html/d8/d99/struct_input_file.html new file mode 100644 index 0000000..aa8dbff --- /dev/null +++ b/docs/linux/html/d8/d99/struct_input_file.html @@ -0,0 +1,470 @@ + + + + + + + +FFmpegKit Linux API: InputFile Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
InputFile Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

AVFormatContext * ctx
 
int eof_reached
 
int eagain
 
int ist_index
 
int loop
 
int64_t duration
 
AVRational time_base
 
int64_t input_ts_offset
 
int64_t ts_offset
 
int64_t last_ts
 
int64_t start_time
 
int seek_timestamp
 
int64_t recording_time
 
int nb_streams
 
int nb_streams_warn
 
int rate_emu
 
float readrate
 
int accurate_seek
 
AVPacket * pkt
 
AVFormatContext * fmt_ctx
 
InputStreamstreams
 
+

Detailed Description

+
+

Definition at line 425 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ accurate_seek

+ +
+
+ + + + +
int InputFile::accurate_seek
+
+ +

Definition at line 446 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ctx

+ +
+
+ + + + +
AVFormatContext* InputFile::ctx
+
+ +

Definition at line 426 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ duration

+ +
+
+ + + + +
int64_t InputFile::duration
+
+ +

Definition at line 431 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ eagain

+ +
+
+ + + + +
int InputFile::eagain
+
+ +

Definition at line 428 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ eof_reached

+ +
+
+ + + + +
int InputFile::eof_reached
+
+ +

Definition at line 427 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ fmt_ctx

+ +
+
+ + + + +
AVFormatContext* InputFile::fmt_ctx
+
+ +

Definition at line 86 of file fftools_ffprobe.c.

+ +
+
+ +

◆ input_ts_offset

+ +
+
+ + + + +
int64_t InputFile::input_ts_offset
+
+ +

Definition at line 434 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ist_index

+ +
+
+ + + + +
int InputFile::ist_index
+
+ +

Definition at line 429 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_ts

+ +
+
+ + + + +
int64_t InputFile::last_ts
+
+ +

Definition at line 437 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ loop

+ +
+
+ + + + +
int InputFile::loop
+
+ +

Definition at line 430 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_streams

+ +
+
+ + + + +
int InputFile::nb_streams
+
+ +

Definition at line 441 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_streams_warn

+ +
+
+ + + + +
int InputFile::nb_streams_warn
+
+ +

Definition at line 443 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pkt

+ +
+
+ + + + +
AVPacket* InputFile::pkt
+
+ +

Definition at line 448 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ rate_emu

+ +
+
+ + + + +
int InputFile::rate_emu
+
+ +

Definition at line 444 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ readrate

+ +
+
+ + + + +
float InputFile::readrate
+
+ +

Definition at line 445 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ recording_time

+ +
+
+ + + + +
int64_t InputFile::recording_time
+
+ +

Definition at line 440 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ seek_timestamp

+ +
+
+ + + + +
int InputFile::seek_timestamp
+
+ +

Definition at line 439 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ start_time

+ +
+
+ + + + +
int64_t InputFile::start_time
+
+ +

Definition at line 438 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ streams

+ +
+
+ + + + +
InputStream* InputFile::streams
+
+ +

Definition at line 88 of file fftools_ffprobe.c.

+ +
+
+ +

◆ time_base

+ +
+
+ + + + +
AVRational InputFile::time_base
+
+ +

Definition at line 433 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ts_offset

+ +
+
+ + + + +
int64_t InputFile::ts_offset
+
+ +

Definition at line 436 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d8/dee/struct_read_interval.html b/docs/linux/html/d8/dee/struct_read_interval.html new file mode 100644 index 0000000..26fbfa9 --- /dev/null +++ b/docs/linux/html/d8/dee/struct_read_interval.html @@ -0,0 +1,241 @@ + + + + + + + +FFmpegKit Linux API: ReadInterval Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
ReadInterval Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

int id
 identifier More...
 
int64_t start
 
int64_t end
 start, end in second/AV_TIME_BASE units More...
 
int has_start
 
int has_end
 
int start_is_offset
 
int end_is_offset
 
int duration_frames
 
+

Detailed Description

+
+

Definition at line 135 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ duration_frames

+ +
+
+ + + + +
int ReadInterval::duration_frames
+
+ +

Definition at line 140 of file fftools_ffprobe.c.

+ +
+
+ +

◆ end

+ +
+
+ + + + +
int64_t ReadInterval::end
+
+ +

start, end in second/AV_TIME_BASE units

+ +

Definition at line 137 of file fftools_ffprobe.c.

+ +
+
+ +

◆ end_is_offset

+ +
+
+ + + + +
int ReadInterval::end_is_offset
+
+ +

Definition at line 139 of file fftools_ffprobe.c.

+ +
+
+ +

◆ has_end

+ +
+
+ + + + +
int ReadInterval::has_end
+
+ +

Definition at line 138 of file fftools_ffprobe.c.

+ +
+
+ +

◆ has_start

+ +
+
+ + + + +
int ReadInterval::has_start
+
+ +

Definition at line 138 of file fftools_ffprobe.c.

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int ReadInterval::id
+
+ +

identifier

+ +

Definition at line 136 of file fftools_ffprobe.c.

+ +
+
+ +

◆ start

+ +
+
+ + + + +
int64_t ReadInterval::start
+
+ +

Definition at line 137 of file fftools_ffprobe.c.

+ +
+
+ +

◆ start_is_offset

+ +
+
+ + + + +
int ReadInterval::start_is_offset
+
+ +

Definition at line 139 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d9/d11/structsection.html b/docs/linux/html/d9/d11/structsection.html new file mode 100644 index 0000000..b7b4a07 --- /dev/null +++ b/docs/linux/html/d9/d11/structsection.html @@ -0,0 +1,250 @@ + + + + + + + +FFmpegKit Linux API: section Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
section Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int id
 unique id identifying a section More...
 
const char * name
 
int flags
 For these sections the element_name field is mandatory. More...
 
int children_ids [SECTION_MAX_NB_CHILDREN+1]
 list of children section IDS, terminated by -1 More...
 
const char * element_name
 name of the contained element, if provided More...
 
const char * unique_name
 unique section name, in case the name is ambiguous More...
 
AVDictionary * entries_to_show
 
int show_all_entries
 
+

Detailed Description

+
+

Definition at line 150 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ children_ids

+ +
+
+ + + + +
int section::children_ids[SECTION_MAX_NB_CHILDREN+1]
+
+ +

list of children section IDS, terminated by -1

+ +

Definition at line 159 of file fftools_ffprobe.c.

+ +
+
+ +

◆ element_name

+ +
+
+ + + + +
const char* section::element_name
+
+ +

name of the contained element, if provided

+ +

Definition at line 160 of file fftools_ffprobe.c.

+ +
+
+ +

◆ entries_to_show

+ +
+
+ + + + +
AVDictionary* section::entries_to_show
+
+ +

Definition at line 162 of file fftools_ffprobe.c.

+ +
+
+ +

◆ flags

+ +
+
+ + + + +
int section::flags
+
+ +

For these sections the element_name field is mandatory.

+ +

Definition at line 158 of file fftools_ffprobe.c.

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int section::id
+
+ +

unique id identifying a section

+ +

Definition at line 151 of file fftools_ffprobe.c.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* section::name
+
+ +

Definition at line 152 of file fftools_ffprobe.c.

+ +
+
+ +

◆ show_all_entries

+ +
+
+ + + + +
int section::show_all_entries
+
+ +

Definition at line 163 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unique_name

+ +
+
+ + + + +
const char* section::unique_name
+
+ +

unique section name, in case the name is ambiguous

+ +

Definition at line 161 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d9/d21/_return_code_8cpp.html b/docs/linux/html/d9/d21/_return_code_8cpp.html new file mode 100644 index 0000000..32f61af --- /dev/null +++ b/docs/linux/html/d9/d21/_return_code_8cpp.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: ReturnCode.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Functions
+
+
ReturnCode.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Functions

std::ostream & ffmpegkit::operator<< (std::ostream &out, const std::shared_ptr< ffmpegkit::ReturnCode > &o)
 
+
+ + + + diff --git a/docs/linux/html/d9/d21/_return_code_8cpp_source.html b/docs/linux/html/d9/d21/_return_code_8cpp_source.html new file mode 100644 index 0000000..27cd2ec --- /dev/null +++ b/docs/linux/html/d9/d21/_return_code_8cpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +FFmpegKit Linux API: ReturnCode.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ReturnCode.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "ReturnCode.h"
+
21 
+
22 bool ffmpegkit::ReturnCode::isSuccess(const std::shared_ptr<ffmpegkit::ReturnCode> value) {
+
23  return (value != nullptr) && (value->getValue() == Success);
+
24 }
+
25 
+
26 bool ffmpegkit::ReturnCode::isCancel(const std::shared_ptr<ffmpegkit::ReturnCode> value) {
+
27  return (value != nullptr) && (value->getValue() == Cancel);
+
28 }
+
29 
+
30 ffmpegkit::ReturnCode::ReturnCode(const int value) : _value {value} {
+
31 }
+
32 
+ +
34  return _value;
+
35 }
+
36 
+ +
38  return (_value == Success);
+
39 }
+
40 
+ +
42  return ((_value != Success) && (_value != Cancel));
+
43 }
+
44 
+ +
46  return (_value == Cancel);
+
47 }
+
48 
+
49 namespace ffmpegkit {
+
50 
+
51  std::ostream& operator<<(std::ostream& out, const std::shared_ptr<ffmpegkit::ReturnCode>& o) {
+
52  if (o == nullptr) {
+
53  return out;
+
54  } else {
+
55  return out << o->_value;
+
56  }
+
57  }
+
58 
+
59 }
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::ReturnCode::isSuccess
static bool isSuccess(const std::shared_ptr< ffmpegkit::ReturnCode > value)
Definition: ReturnCode.cpp:22
+
ffmpegkit::ReturnCode::getValue
int getValue() const
Definition: ReturnCode.cpp:33
+
ffmpegkit::ReturnCode::isValueError
bool isValueError() const
Definition: ReturnCode.cpp:41
+
ffmpegkit::ReturnCode::ReturnCode
ReturnCode(const int value)
Definition: ReturnCode.cpp:30
+
ffmpegkit::operator<<
std::ostream & operator<<(std::ostream &out, const std::shared_ptr< ffmpegkit::ReturnCode > &o)
Definition: ReturnCode.cpp:51
+
ffmpegkit::ReturnCode::isCancel
static bool isCancel(const std::shared_ptr< ffmpegkit::ReturnCode > value)
Definition: ReturnCode.cpp:26
+
ffmpegkit::ReturnCode::isValueCancel
bool isValueCancel() const
Definition: ReturnCode.cpp:45
+
ffmpegkit::ReturnCode::isValueSuccess
bool isValueSuccess() const
Definition: ReturnCode.cpp:37
+
ReturnCode.h
+
ffmpegkit::ReturnCode::Success
static constexpr int Success
Definition: ReturnCode.h:30
+ + + + diff --git a/docs/linux/html/d9/d6d/structunit__value.html b/docs/linux/html/d9/d6d/structunit__value.html new file mode 100644 index 0000000..5d7aec4 --- /dev/null +++ b/docs/linux/html/d9/d6d/structunit__value.html @@ -0,0 +1,162 @@ + + + + + + + +FFmpegKit Linux API: unit_value Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
unit_value Struct Reference
+
+
+ + + + + + + + + + + +

+Data Fields

union {
   double   d
 
   long long int   i
 
val
 
const char * unit
 
+

Detailed Description

+
+

Definition at line 375 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ d

+ +
+
+ + + + +
double unit_value::d
+
+ +

Definition at line 376 of file fftools_ffprobe.c.

+ +
+
+ +

◆ i

+ +
+
+ + + + +
long long int unit_value::i
+
+ +

Definition at line 376 of file fftools_ffprobe.c.

+ +
+
+ +

◆ unit

+ +
+
+ + + + +
const char* unit_value::unit
+
+ +

Definition at line 377 of file fftools_ffprobe.c.

+ +
+
+ +

◆ val

+ +
+
+ + + + +
union { ... } unit_value::val
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/d9/d76/_abstract_session_8h.html b/docs/linux/html/d9/d76/_abstract_session_8h.html new file mode 100644 index 0000000..070e6c8 --- /dev/null +++ b/docs/linux/html/d9/d76/_abstract_session_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: AbstractSession.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
AbstractSession.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::AbstractSession
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/d9/d76/_abstract_session_8h_source.html b/docs/linux/html/d9/d76/_abstract_session_8h_source.html new file mode 100644 index 0000000..a41e3a8 --- /dev/null +++ b/docs/linux/html/d9/d76/_abstract_session_8h_source.html @@ -0,0 +1,236 @@ + + + + + + + +FFmpegKit Linux API: AbstractSession.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
AbstractSession.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_ABSTRACT_SESSION_H
+
21 #define FFMPEG_KIT_ABSTRACT_SESSION_H
+
22 
+
23 #include "Session.h"
+
24 
+
25 namespace ffmpegkit {
+
26 
+
31  class AbstractSession : public Session, std::enable_shared_from_this<AbstractSession> {
+
32  public:
+
33 
+ +
38 
+
46  AbstractSession(const std::shared_ptr<std::list<std::string>> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy);
+
47 
+
53  void waitForAsynchronousMessagesInTransmit(const int timeout) const;
+
54 
+
60  ffmpegkit::LogCallback getLogCallback() const override;
+
61 
+
67  long getSessionId() const override;
+
68 
+
74  std::chrono::time_point<std::chrono::system_clock> getCreateTime() const override;
+
75 
+
81  std::chrono::time_point<std::chrono::system_clock> getStartTime() const override;
+
82 
+
88  std::chrono::time_point<std::chrono::system_clock> getEndTime() const override;
+
89 
+
96  long getDuration() const override;
+
97 
+
103  std::shared_ptr<std::list<std::string>> getArguments() const override;
+
104 
+
110  std::string getCommand() const override;
+
111 
+
119  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getAllLogsWithTimeout(const int waitTimeout) const override;
+
120 
+
127  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getAllLogs() const override;
+
128 
+
136  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> getLogs() const override;
+
137 
+
146  std::string getAllLogsAsStringWithTimeout(const int waitTimeout) const override;
+
147 
+
154  std::string getAllLogsAsString() const override;
+
155 
+
163  std::string getLogsAsString() const override;
+
164 
+
170  std::string getOutput() const override;
+
171 
+
177  ffmpegkit::SessionState getState() const override;
+
178 
+
187  std::shared_ptr<ffmpegkit::ReturnCode> getReturnCode() const override;
+
188 
+
198  std::string getFailStackTrace() const override;
+
199 
+ +
206 
+
214  bool thereAreAsynchronousMessagesInTransmit() const override;
+
215 
+
224  void addLog(const std::shared_ptr<ffmpegkit::Log> log) override;
+
225 
+
229  void startRunning() override;
+
230 
+
236  void complete(const std::shared_ptr<ffmpegkit::ReturnCode> returnCode) override;
+
237 
+
243  void fail(const char* error) override;
+
244 
+
250  virtual bool isFFmpeg() const override;
+
251 
+
257  virtual bool isFFprobe() const override;
+
258 
+
264  virtual bool isMediaInformation() const override;
+
265 
+
269  void cancel() override;
+
270 
+
271  private:
+
272  const long _sessionId;
+ +
274  std::chrono::time_point<std::chrono::system_clock> _createTime;
+
275  std::chrono::time_point<std::chrono::system_clock> _startTime;
+
276  std::chrono::time_point<std::chrono::system_clock> _endTime;
+
277  std::shared_ptr<std::list<std::string>> _arguments;
+
278  std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> _logs;
+ +
280  std::shared_ptr<ffmpegkit::ReturnCode> _returnCode;
+
281  std::string _failStackTrace;
+ +
283  };
+
284 
+
285 }
+
286 
+
287 #endif // FFMPEG_KIT_ABSTRACT_SESSION_H
+
+
ffmpegkit::AbstractSession::getEndTime
std::chrono::time_point< std::chrono::system_clock > getEndTime() const override
Definition: AbstractSession.cpp:74
+
ffmpegkit::AbstractSession::_failStackTrace
std::string _failStackTrace
Definition: AbstractSession.h:281
+
ffmpegkit::AbstractSession::_createTime
std::chrono::time_point< std::chrono::system_clock > _createTime
Definition: AbstractSession.h:274
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit::AbstractSession::getArguments
std::shared_ptr< std::list< std::string > > getArguments() const override
Definition: AbstractSession.cpp:89
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::AbstractSession::startRunning
void startRunning() override
Definition: AbstractSession.cpp:166
+
ffmpegkit::AbstractSession::getAllLogs
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs() const override
Definition: AbstractSession.cpp:106
+
ffmpegkit::AbstractSession::getLogRedirectionStrategy
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy() const override
Definition: AbstractSession.cpp:154
+
ffmpegkit::AbstractSession::_state
SessionState _state
Definition: AbstractSession.h:279
+
ffmpegkit::AbstractSession::getLogCallback
ffmpegkit::LogCallback getLogCallback() const override
Definition: AbstractSession.cpp:58
+
ffmpegkit::AbstractSession::getCreateTime
std::chrono::time_point< std::chrono::system_clock > getCreateTime() const override
Definition: AbstractSession.cpp:66
+
ffmpegkit::AbstractSession::AbstractSession
AbstractSession(const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
Definition: AbstractSession.cpp:36
+
ffmpegkit::AbstractSession::waitForAsynchronousMessagesInTransmit
void waitForAsynchronousMessagesInTransmit(const int timeout) const
Definition: AbstractSession.cpp:47
+
ffmpegkit::AbstractSession::_logRedirectionStrategy
LogRedirectionStrategy _logRedirectionStrategy
Definition: AbstractSession.h:282
+
ffmpegkit::AbstractSession::getStartTime
std::chrono::time_point< std::chrono::system_clock > getStartTime() const override
Definition: AbstractSession.cpp:70
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::AbstractSession::cancel
void cancel() override
Definition: AbstractSession.cpp:198
+
ffmpegkit::Session
Definition: Session.h:37
+
ffmpegkit::AbstractSession::addLog
void addLog(const std::shared_ptr< ffmpegkit::Log > log) override
Definition: AbstractSession.cpp:162
+
ffmpegkit::AbstractSession::getLogsAsString
std::string getLogsAsString() const override
Definition: AbstractSession.cpp:128
+
ffmpegkit::AbstractSession::_logs
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > _logs
Definition: AbstractSession.h:278
+
ffmpegkit::AbstractSession::getReturnCode
std::shared_ptr< ffmpegkit::ReturnCode > getReturnCode() const override
Definition: AbstractSession.cpp:146
+
ffmpegkit::AbstractSession::_sessionId
const long _sessionId
Definition: AbstractSession.h:272
+
ffmpegkit::AbstractSession::getSessionId
long getSessionId() const override
Definition: AbstractSession.cpp:62
+
ffmpegkit::AbstractSession::getOutput
std::string getOutput() const override
Definition: AbstractSession.cpp:138
+
ffmpegkit::AbstractSession::complete
void complete(const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
Definition: AbstractSession.cpp:171
+
ffmpegkit::AbstractSession::fail
void fail(const char *error) override
Definition: AbstractSession.cpp:177
+
ffmpegkit::AbstractSession::getAllLogsWithTimeout
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout(const int waitTimeout) const override
Definition: AbstractSession.cpp:97
+
ffmpegkit::AbstractSession::getAllLogsAsString
std::string getAllLogsAsString() const override
Definition: AbstractSession.cpp:124
+
ffmpegkit::AbstractSession::_returnCode
std::shared_ptr< ffmpegkit::ReturnCode > _returnCode
Definition: AbstractSession.h:280
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
ffmpegkit::AbstractSession::getLogs
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs() const override
Definition: AbstractSession.cpp:110
+
ffmpegkit::AbstractSession::getDuration
long getDuration() const override
Definition: AbstractSession.cpp:78
+
ffmpegkit::AbstractSession::thereAreAsynchronousMessagesInTransmit
bool thereAreAsynchronousMessagesInTransmit() const override
Definition: AbstractSession.cpp:158
+
ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit
Definition: AbstractSession.h:37
+
ffmpegkit::AbstractSession::getCommand
std::string getCommand() const override
Definition: AbstractSession.cpp:93
+
Session.h
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
ffmpegkit::AbstractSession::_endTime
std::chrono::time_point< std::chrono::system_clock > _endTime
Definition: AbstractSession.h:276
+
ffmpegkit::AbstractSession::getState
ffmpegkit::SessionState getState() const override
Definition: AbstractSession.cpp:142
+
ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout
std::string getAllLogsAsStringWithTimeout(const int waitTimeout) const override
Definition: AbstractSession.cpp:114
+
ffmpegkit::AbstractSession::_arguments
std::shared_ptr< std::list< std::string > > _arguments
Definition: AbstractSession.h:277
+
ffmpegkit::AbstractSession::isFFmpeg
virtual bool isFFmpeg() const override
Definition: AbstractSession.cpp:183
+
ffmpegkit::AbstractSession::_logCallback
ffmpegkit::LogCallback _logCallback
Definition: AbstractSession.h:273
+
ffmpegkit::AbstractSession::getFailStackTrace
std::string getFailStackTrace() const override
Definition: AbstractSession.cpp:150
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::AbstractSession::isMediaInformation
virtual bool isMediaInformation() const override
Definition: AbstractSession.cpp:193
+
ffmpegkit::AbstractSession::isFFprobe
virtual bool isFFprobe() const override
Definition: AbstractSession.cpp:188
+
ffmpegkit::AbstractSession::_startTime
std::chrono::time_point< std::chrono::system_clock > _startTime
Definition: AbstractSession.h:275
+ + + + diff --git a/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp.html b/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp.html new file mode 100644 index 0000000..0a667c3 --- /dev/null +++ b/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp.html @@ -0,0 +1,109 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSession.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions
+
+
FFprobeSession.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Session > session)
 
+

Function Documentation

+ +

◆ addSessionToSessionHistory()

+ +
+
+ + + + + + + + +
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Sessionsession)
+
+ +

Definition at line 149 of file FFmpegKitConfig.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp_source.html b/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp_source.html new file mode 100644 index 0000000..b99ea87 --- /dev/null +++ b/docs/linux/html/d9/d8b/_f_fprobe_session_8cpp_source.html @@ -0,0 +1,170 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSession.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFprobeSession.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "FFprobeSession.h"
+
21 #include "FFmpegKitConfig.h"
+
22 #include "LogCallback.h"
+
23 
+
24 extern void addSessionToSessionHistory(const std::shared_ptr<ffmpegkit::Session> session);
+
25 
+
26 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeSession::create(const std::shared_ptr<std::list<std::string>> arguments) {
+
27  auto session = std::static_pointer_cast<ffmpegkit::FFprobeSession>(std::make_shared<ffmpegkit::FFprobeSession::PublicFFprobeSession>(arguments, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
29  return session;
+
30 }
+
31 
+
32 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeSession::create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback) {
+
33  auto session = std::static_pointer_cast<ffmpegkit::FFprobeSession>(std::make_shared<ffmpegkit::FFprobeSession::PublicFFprobeSession>(arguments, completeCallback, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
35  return session;
+
36 }
+
37 
+
38 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeSession::create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback) {
+
39  auto session = std::static_pointer_cast<ffmpegkit::FFprobeSession>(std::make_shared<ffmpegkit::FFprobeSession::PublicFFprobeSession>(arguments, completeCallback, logCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
41  return session;
+
42 }
+
43 
+
44 std::shared_ptr<ffmpegkit::FFprobeSession> ffmpegkit::FFprobeSession::create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) {
+
45  auto session = std::static_pointer_cast<ffmpegkit::FFprobeSession>(std::make_shared<ffmpegkit::FFprobeSession::PublicFFprobeSession>(arguments, completeCallback, logCallback, logRedirectionStrategy));
+ +
47  return session;
+
48 }
+
49 
+
50 struct ffmpegkit::FFprobeSession::PublicFFprobeSession : public ffmpegkit::FFprobeSession {
+
51  PublicFFprobeSession(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) :
+
52  FFprobeSession(arguments, completeCallback, logCallback, logRedirectionStrategy) {
+
53  }
+
54 };
+
55 
+
56 ffmpegkit::FFprobeSession::FFprobeSession(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) :
+
57  ffmpegkit::AbstractSession(arguments, logCallback, logRedirectionStrategy), _completeCallback{completeCallback} {
+
58 }
+
59 
+ +
61  return _completeCallback;
+
62 }
+
63 
+ +
65  return false;
+
66 }
+
67 
+ +
69  return true;
+
70 }
+
71 
+ +
73  return false;
+
74 }
+
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFprobeSession
Definition: FFprobeSession.h:31
+
ffmpegkit::FFprobeSession::FFprobeSession
FFprobeSession(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
Definition: FFprobeSession.cpp:56
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFprobeSession::isMediaInformation
bool isMediaInformation() const override
Definition: FFprobeSession.cpp:72
+
addSessionToSessionHistory
void addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session)
Definition: FFmpegKitConfig.cpp:149
+
ffmpegkit::FFprobeSession::create
static std::shared_ptr< ffmpegkit::FFprobeSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFprobeSession.cpp:26
+
ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy
static LogRedirectionStrategy getLogRedirectionStrategy()
Definition: FFmpegKitConfig.cpp:1327
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
LogCallback.h
+
FFmpegKitConfig.h
+
ffmpegkit::FFprobeSession::getCompleteCallback
ffmpegkit::FFprobeSessionCompleteCallback getCompleteCallback()
Definition: FFprobeSession.cpp:60
+
ffmpegkit::FFprobeSession::isFFmpeg
bool isFFmpeg() const override
Definition: FFprobeSession.cpp:64
+
FFprobeSession.h
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFprobeSession::isFFprobe
bool isFFprobe() const override
Definition: FFprobeSession.cpp:68
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+ + + + diff --git a/docs/linux/html/d9/d9f/classffmpegkit_1_1_chapter.html b/docs/linux/html/d9/d9f/classffmpegkit_1_1_chapter.html new file mode 100644 index 0000000..dbf16bd --- /dev/null +++ b/docs/linux/html/d9/d9f/classffmpegkit_1_1_chapter.html @@ -0,0 +1,579 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::Chapter Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Attributes | +Private Attributes
+
+
ffmpegkit::Chapter Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Chapter (std::shared_ptr< rapidjson::Value > chapterValue)
 
std::shared_ptr< int64_t > getId ()
 
std::shared_ptr< std::string > getTimeBase ()
 
std::shared_ptr< int64_t > getStart ()
 
std::shared_ptr< std::string > getStartTime ()
 
std::shared_ptr< int64_t > getEnd ()
 
std::shared_ptr< std::string > getEndTime ()
 
std::shared_ptr< rapidjson::Value > getTags ()
 
std::shared_ptr< std::string > getStringProperty (const char *key)
 
std::shared_ptr< int64_t > getNumberProperty (const char *key)
 
std::shared_ptr< rapidjson::Value > getProperties (const char *key)
 
std::shared_ptr< rapidjson::Value > getAllProperties ()
 
+ + + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr const char * KeyId = "id"
 
static constexpr const char * KeyTimeBase = "time_base"
 
static constexpr const char * KeyStart = "start"
 
static constexpr const char * KeyStartTime = "start_time"
 
static constexpr const char * KeyEnd = "end"
 
static constexpr const char * KeyEndTime = "end_time"
 
static constexpr const char * KeyTags = "tags"
 
+ + + +

+Private Attributes

std::shared_ptr< rapidjson::Value > _chapterValue
 
+

Detailed Description

+

Chapter class.

+ +

Definition at line 35 of file Chapter.h.

+

Constructor & Destructor Documentation

+ +

◆ Chapter()

+ +
+
+ + + + + + + + +
ffmpegkit::Chapter::Chapter (std::shared_ptr< rapidjson::Value > chapterValue)
+
+ +

Definition at line 22 of file Chapter.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getAllProperties()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::Chapter::getAllProperties ()
+
+

Returns all chapter properties defined.

+
Returns
all chapter properties in a Value or nullptr if no properties are defined
+ +

Definition at line 79 of file Chapter.cpp.

+ +
+
+ +

◆ getEnd()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::Chapter::getEnd ()
+
+ +

Definition at line 41 of file Chapter.cpp.

+ +
+
+ +

◆ getEndTime()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::Chapter::getEndTime ()
+
+ +

Definition at line 45 of file Chapter.cpp.

+ +
+
+ +

◆ getId()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::Chapter::getId ()
+
+ +

Definition at line 25 of file Chapter.cpp.

+ +
+
+ +

◆ getNumberProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::Chapter::getNumberProperty (const char * key)
+
+

Returns the chapter property associated with the key.

+
Returns
chapter property as number or nullptr if the key is not found
+ +

Definition at line 61 of file Chapter.cpp.

+ +
+
+ +

◆ getProperties()

+ +
+
+ + + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::Chapter::getProperties (const char * key)
+
+

Returns the chapter properties associated with the key.

+
Returns
chapter properties in a Value or nullptr if the key is not found
+ +

Definition at line 69 of file Chapter.cpp.

+ +
+
+ +

◆ getStart()

+ +
+
+ + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::Chapter::getStart ()
+
+ +

Definition at line 33 of file Chapter.cpp.

+ +
+
+ +

◆ getStartTime()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::Chapter::getStartTime ()
+
+ +

Definition at line 37 of file Chapter.cpp.

+ +
+
+ +

◆ getStringProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< std::string > ffmpegkit::Chapter::getStringProperty (const char * key)
+
+

Returns the chapter property associated with the key.

+
Returns
chapter property as string or nullptr if the key is not found
+ +

Definition at line 53 of file Chapter.cpp.

+ +
+
+ +

◆ getTags()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::Chapter::getTags ()
+
+ +

Definition at line 49 of file Chapter.cpp.

+ +
+
+ +

◆ getTimeBase()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::Chapter::getTimeBase ()
+
+ +

Definition at line 29 of file Chapter.cpp.

+ +
+
+

Field Documentation

+ +

◆ _chapterValue

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<rapidjson::Value> ffmpegkit::Chapter::_chapterValue
+
+private
+
+ +

Definition at line 90 of file Chapter.h.

+ +
+
+ +

◆ KeyEnd

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyEnd = "end"
+
+staticconstexpr
+
+ +

Definition at line 41 of file Chapter.h.

+ +
+
+ +

◆ KeyEndTime

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyEndTime = "end_time"
+
+staticconstexpr
+
+ +

Definition at line 42 of file Chapter.h.

+ +
+
+ +

◆ KeyId

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyId = "id"
+
+staticconstexpr
+
+ +

Definition at line 37 of file Chapter.h.

+ +
+
+ +

◆ KeyStart

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyStart = "start"
+
+staticconstexpr
+
+ +

Definition at line 39 of file Chapter.h.

+ +
+
+ +

◆ KeyStartTime

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyStartTime = "start_time"
+
+staticconstexpr
+
+ +

Definition at line 40 of file Chapter.h.

+ +
+
+ +

◆ KeyTags

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyTags = "tags"
+
+staticconstexpr
+
+ +

Definition at line 43 of file Chapter.h.

+ +
+
+ +

◆ KeyTimeBase

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::Chapter::KeyTimeBase = "time_base"
+
+staticconstexpr
+
+ +

Definition at line 38 of file Chapter.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/d9/de7/struct_filter_graph.html b/docs/linux/html/d9/de7/struct_filter_graph.html new file mode 100644 index 0000000..87930e7 --- /dev/null +++ b/docs/linux/html/d9/de7/struct_filter_graph.html @@ -0,0 +1,235 @@ + + + + + + + +FFmpegKit Linux API: FilterGraph Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
FilterGraph Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Data Fields

int index
 
const char * graph_desc
 
AVFilterGraph * graph
 
int reconfiguration
 
InputFilter ** inputs
 
int nb_inputs
 
OutputFilter ** outputs
 
int nb_outputs
 
+

Detailed Description

+
+

Definition at line 311 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ graph

+ +
+
+ + + + +
AVFilterGraph* FilterGraph::graph
+
+ +

Definition at line 315 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ graph_desc

+ +
+
+ + + + +
const char* FilterGraph::graph_desc
+
+ +

Definition at line 313 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ index

+ +
+
+ + + + +
int FilterGraph::index
+
+ +

Definition at line 312 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ inputs

+ +
+
+ + + + +
InputFilter** FilterGraph::inputs
+
+ +

Definition at line 318 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_inputs

+ +
+
+ + + + +
int FilterGraph::nb_inputs
+
+ +

Definition at line 319 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_outputs

+ +
+
+ + + + +
int FilterGraph::nb_outputs
+
+ +

Definition at line 321 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ outputs

+ +
+
+ + + + +
OutputFilter** FilterGraph::outputs
+
+ +

Definition at line 320 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ reconfiguration

+ +
+
+ + + + +
int FilterGraph::reconfiguration
+
+ +

Definition at line 316 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/da/d27/structffmpegkit_1_1_media_information_session_1_1_public_media_information_session.html b/docs/linux/html/da/d27/structffmpegkit_1_1_media_information_session_1_1_public_media_information_session.html new file mode 100644 index 0000000..1e1b450 --- /dev/null +++ b/docs/linux/html/da/d27/structffmpegkit_1_1_media_information_session_1_1_public_media_information_session.html @@ -0,0 +1,222 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::MediaInformationSession::PublicMediaInformationSession Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
ffmpegkit::MediaInformationSession::PublicMediaInformationSession Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PublicMediaInformationSession (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
- Public Member Functions inherited from ffmpegkit::MediaInformationSession
std::shared_ptr< ffmpegkit::MediaInformationgetMediaInformation ()
 
void setMediaInformation (const std::shared_ptr< ffmpegkit::MediaInformation > mediaInformation)
 
ffmpegkit::MediaInformationSessionCompleteCallback getCompleteCallback ()
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ffmpegkit::MediaInformationSession
static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+
+

Definition at line 44 of file MediaInformationSession.cpp.

+

Constructor & Destructor Documentation

+ +

◆ PublicMediaInformationSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::MediaInformationSession::PublicMediaInformationSession::PublicMediaInformationSession (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::MediaInformationSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback 
)
+
+inline
+
+ +

Definition at line 45 of file MediaInformationSession.cpp.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/da/d4f/struct_i_n_i_context.html b/docs/linux/html/da/d4f/struct_i_n_i_context.html new file mode 100644 index 0000000..b63555a --- /dev/null +++ b/docs/linux/html/da/d4f/struct_i_n_i_context.html @@ -0,0 +1,127 @@ + + + + + + + +FFmpegKit Linux API: INIContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
INIContext Struct Reference
+
+
+ + + + + + +

+Data Fields

const AVClass * class
 
int hierarchical
 
+

Detailed Description

+
+

Definition at line 1370 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ class

+ +
+
+ + + + +
const AVClass* INIContext::class
+
+ +

Definition at line 1371 of file fftools_ffprobe.c.

+ +
+
+ +

◆ hierarchical

+ +
+
+ + + + +
int INIContext::hierarchical
+
+ +

Definition at line 1372 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/da/d53/classffmpegkit_1_1_media_information_json_parser.html b/docs/linux/html/da/d53/classffmpegkit_1_1_media_information_json_parser.html new file mode 100644 index 0000000..5e5b6e5 --- /dev/null +++ b/docs/linux/html/da/d53/classffmpegkit_1_1_media_information_json_parser.html @@ -0,0 +1,184 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::MediaInformationJsonParser Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions
+
+
ffmpegkit::MediaInformationJsonParser Class Reference
+
+
+ + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::MediaInformationfrom (const std::string &ffprobeJsonOutput)
 
static std::shared_ptr< ffmpegkit::MediaInformationfromWithError (const std::string &ffprobeJsonOutput, std::string &error)
 
+

Detailed Description

+

A parser that constructs MediaInformation from FFprobe's json output.

+ +

Definition at line 31 of file MediaInformationJsonParser.h.

+

Member Function Documentation

+ +

◆ from()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformation > ffmpegkit::MediaInformationJsonParser::from (const std::string & ffprobeJsonOutput)
+
+static
+
+

Extracts MediaInformation from the given FFprobe json output.

+
Parameters
+ + +
ffprobeJsonOutputFFprobe json output
+
+
+
Returns
created MediaInformation instance of nullptr if a parsing error occurs
+ +

Definition at line 31 of file MediaInformationJsonParser.cpp.

+ +
+
+ +

◆ fromWithError()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformation > ffmpegkit::MediaInformationJsonParser::fromWithError (const std::string & ffprobeJsonOutput,
std::string & error 
)
+
+static
+
+

Extracts MediaInformation from the given FFprobe json output.

+
Parameters
+ + + +
ffprobeJsonOutputFFprobe json output
errorerror to save the parsing error if a parsing error occurs
+
+
+
Returns
created MediaInformation instance
+ +

Definition at line 42 of file MediaInformationJsonParser.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/da/d5c/classffmpegkit_1_1_f_fprobe_session.html b/docs/linux/html/da/d5c/classffmpegkit_1_1_f_fprobe_session.html new file mode 100644 index 0000000..3987bda --- /dev/null +++ b/docs/linux/html/da/d5c/classffmpegkit_1_1_f_fprobe_session.html @@ -0,0 +1,590 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFprobeSession Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Data Structures | +Public Member Functions | +Static Public Member Functions | +Private Member Functions | +Private Attributes
+
+
ffmpegkit::FFprobeSession Class Reference
+
+
+ + + + +

+Data Structures

struct  PublicFFprobeSession
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ffmpegkit::FFprobeSessionCompleteCallback getCompleteCallback ()
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
+ + + +

+Private Member Functions

 FFprobeSession (const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
+ + + +

+Private Attributes

FFprobeSessionCompleteCallback _completeCallback
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+

An FFprobe session.

+ +

Definition at line 31 of file FFprobeSession.h.

+

Constructor & Destructor Documentation

+ +

◆ FFprobeSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::FFprobeSession::FFprobeSession (const std::shared_ptr< std::list< std::string >> arguments,
const FFprobeSessionCompleteCallback completeCallback,
const ffmpegkit::LogCallback logCallback,
const LogRedirectionStrategy logRedirectionStrategy 
)
+
+private
+
+

Builds a new FFprobe session.

+
Parameters
+ + + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
logRedirectionStrategysession specific log redirection strategy
+
+
+ +

Definition at line 56 of file FFprobeSession.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ create() [1/4]

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeSession::create (const std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Builds a new FFprobe session.

+
Parameters
+ + +
argumentscommand arguments
+
+
+ +

Definition at line 26 of file FFprobeSession.cpp.

+ +
+
+ +

◆ create() [2/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeSession::create (const std::shared_ptr< std::list< std::string >> arguments,
const FFprobeSessionCompleteCallback completeCallback 
)
+
+static
+
+

Builds a new FFprobe session.

+
Parameters
+ + + +
argumentscommand arguments
completeCallbacksession specific complete callback
+
+
+ +

Definition at line 32 of file FFprobeSession.cpp.

+ +
+
+ +

◆ create() [3/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeSession::create (const std::shared_ptr< std::list< std::string >> arguments,
const FFprobeSessionCompleteCallback completeCallback,
const ffmpegkit::LogCallback logCallback 
)
+
+static
+
+

Builds a new FFprobe session.

+
Parameters
+ + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
+
+
+ +

Definition at line 38 of file FFprobeSession.cpp.

+ +
+
+ +

◆ create() [4/4]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeSession::create (const std::shared_ptr< std::list< std::string >> arguments,
const FFprobeSessionCompleteCallback completeCallback,
const ffmpegkit::LogCallback logCallback,
const LogRedirectionStrategy logRedirectionStrategy 
)
+
+static
+
+

Builds a new FFprobe session.

+
Parameters
+ + + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
logRedirectionStrategysession specific log redirection strategy
+
+
+ +

Definition at line 44 of file FFprobeSession.cpp.

+ +
+
+ +

◆ getCompleteCallback()

+ +
+
+ + + + + + + +
ffmpegkit::FFprobeSessionCompleteCallback ffmpegkit::FFprobeSession::getCompleteCallback ()
+
+

Returns the session specific complete callback.

+
Returns
session specific complete callback
+ +

Definition at line 60 of file FFprobeSession.cpp.

+ +
+
+ +

◆ isFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFprobeSession::isFFmpeg () const
+
+overridevirtual
+
+

Returns whether it is an FFmpeg session or not.

+
Returns
true if it is an FFmpeg session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 64 of file FFprobeSession.cpp.

+ +
+
+ +

◆ isFFprobe()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFprobeSession::isFFprobe () const
+
+overridevirtual
+
+

Returns whether it is an FFprobe session or not.

+
Returns
true if it is an FFprobe session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 68 of file FFprobeSession.cpp.

+ +
+
+ +

◆ isMediaInformation()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFprobeSession::isMediaInformation () const
+
+overridevirtual
+
+

Returns whether it is a MediaInformation session or not.

+
Returns
true if it is a MediaInformation session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 72 of file FFprobeSession.cpp.

+ +
+
+

Field Documentation

+ +

◆ _completeCallback

+ +
+
+ + + + + +
+ + + + +
FFprobeSessionCompleteCallback ffmpegkit::FFprobeSession::_completeCallback
+
+private
+
+ +

Definition at line 110 of file FFprobeSession.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c.html b/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c.html new file mode 100644 index 0000000..dddf1c8 --- /dev/null +++ b/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c.html @@ -0,0 +1,4929 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_opt.c File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Macros | +Functions | +Variables
+
+
fftools_ffmpeg_opt.c File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define DEFAULT_PASS_LOGFILENAME_PREFIX   "ffmpeg2pass"
 
#define SPECIFIER_OPT_FMT_str   "%s"
 
#define SPECIFIER_OPT_FMT_i   "%i"
 
#define SPECIFIER_OPT_FMT_i64   "%"PRId64
 
#define SPECIFIER_OPT_FMT_ui64   "%"PRIu64
 
#define SPECIFIER_OPT_FMT_f   "%f"
 
#define SPECIFIER_OPT_FMT_dbl   "%lf"
 
#define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)
 
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)
 
#define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)
 
#define METADATA_CHECK_INDEX(index, nb_elems, desc)
 
#define SET_DICT(type, meta, context, index)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void uninit_options (OptionsContext *o)
 
void init_options (OptionsContext *o)
 
int show_hwaccels (void *optctx, const char *opt, const char *arg)
 
AVDictionary * strip_specifiers (AVDictionary *dict)
 
int opt_abort_on (void *optctx, const char *opt, const char *arg)
 
int opt_stats_period (void *optctx, const char *opt, const char *arg)
 
int opt_sameq (void *optctx, const char *opt, const char *arg)
 
int opt_video_channel (void *optctx, const char *opt, const char *arg)
 
int opt_video_standard (void *optctx, const char *opt, const char *arg)
 
int opt_audio_codec (void *optctx, const char *opt, const char *arg)
 
int opt_video_codec (void *optctx, const char *opt, const char *arg)
 
int opt_subtitle_codec (void *optctx, const char *opt, const char *arg)
 
int opt_data_codec (void *optctx, const char *opt, const char *arg)
 
int opt_map (void *optctx, const char *opt, const char *arg)
 
int opt_attach (void *optctx, const char *opt, const char *arg)
 
int opt_map_channel (void *optctx, const char *opt, const char *arg)
 
int opt_sdp_file (void *optctx, const char *opt, const char *arg)
 
int opt_init_hw_device (void *optctx, const char *opt, const char *arg)
 
int opt_filter_hw_device (void *optctx, const char *opt, const char *arg)
 
void parse_meta_type (char *arg, char *type, int *index, const char **stream_spec)
 
int fftools_copy_metadata (char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
 
int opt_recording_timestamp (void *optctx, const char *opt, const char *arg)
 
const AVCodec * find_codec_or_die (const char *name, enum AVMediaType type, int encoder)
 
const AVCodec * choose_decoder (OptionsContext *o, AVFormatContext *s, AVStream *st)
 
void add_input_streams (OptionsContext *o, AVFormatContext *ic)
 
void assert_file_overwrite (const char *filename)
 
void dump_attachment (AVStream *st, const char *filename)
 
int open_input_file (OptionsContext *o, const char *filename)
 
uint8_t * get_line (AVIOContext *s)
 
int get_preset_file_2 (const char *preset_name, const char *codec_name, AVIOContext **s)
 
int choose_encoder (OptionsContext *o, AVFormatContext *s, OutputStream *ost)
 
OutputStreamnew_output_stream (OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
 
void parse_matrix_coeffs (uint16_t *dest, const char *str)
 
uint8_t * fftools_read_file (const char *filename)
 
char * get_ost_filters (OptionsContext *o, AVFormatContext *oc, OutputStream *ost)
 
void check_streamcopy_filters (OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type)
 
OutputStreamnew_video_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_audio_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_data_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_unknown_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_attachment_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
OutputStreamnew_subtitle_stream (OptionsContext *o, AVFormatContext *oc, int source_index)
 
int opt_streamid (void *optctx, const char *opt, const char *arg)
 
int copy_chapters (InputFile *ifile, OutputFile *ofile, int copy_metadata)
 
void init_output_filter (OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc)
 
int init_complex_filters (void)
 
int open_output_file (OptionsContext *o, const char *filename)
 
int opt_target (void *optctx, const char *opt, const char *arg)
 
int opt_vstats_file (void *optctx, const char *opt, const char *arg)
 
int opt_vstats (void *optctx, const char *opt, const char *arg)
 
int opt_video_frames (void *optctx, const char *opt, const char *arg)
 
int opt_audio_frames (void *optctx, const char *opt, const char *arg)
 
int opt_data_frames (void *optctx, const char *opt, const char *arg)
 
int opt_default_new (OptionsContext *o, const char *opt, const char *arg)
 
int opt_preset (void *optctx, const char *opt, const char *arg)
 
int opt_old2new (void *optctx, const char *opt, const char *arg)
 
int opt_bitrate (void *optctx, const char *opt, const char *arg)
 
int opt_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_profile (void *optctx, const char *opt, const char *arg)
 
int opt_video_filters (void *optctx, const char *opt, const char *arg)
 
int opt_audio_filters (void *optctx, const char *opt, const char *arg)
 
int opt_vsync (void *optctx, const char *opt, const char *arg)
 
int opt_timecode (void *optctx, const char *opt, const char *arg)
 
int opt_channel_layout (void *optctx, const char *opt, const char *arg)
 
int opt_audio_qscale (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex (void *optctx, const char *opt, const char *arg)
 
int opt_filter_complex_script (void *optctx, const char *opt, const char *arg)
 
void show_help_default_ffmpeg (const char *opt, const char *arg)
 
void show_usage (void)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

static const char *const opt_name_codec_names [] = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL}
 
static const char *const opt_name_audio_channels [] = {"ac", NULL}
 
static const char *const opt_name_audio_sample_rate [] = {"ar", NULL}
 
static const char *const opt_name_frame_rates [] = {"r", NULL}
 
static const char *const opt_name_max_frame_rates [] = {"fpsmax", NULL}
 
static const char *const opt_name_frame_sizes [] = {"s", NULL}
 
static const char *const opt_name_frame_pix_fmts [] = {"pix_fmt", NULL}
 
static const char *const opt_name_ts_scale [] = {"itsscale", NULL}
 
static const char *const opt_name_hwaccels [] = {"hwaccel", NULL}
 
static const char *const opt_name_hwaccel_devices [] = {"hwaccel_device", NULL}
 
static const char *const opt_name_hwaccel_output_formats [] = {"hwaccel_output_format", NULL}
 
static const char *const opt_name_autorotate [] = {"autorotate", NULL}
 
static const char *const opt_name_autoscale [] = {"autoscale", NULL}
 
static const char *const opt_name_max_frames [] = {"frames", "aframes", "vframes", "dframes", NULL}
 
static const char *const opt_name_bitstream_filters [] = {"bsf", "absf", "vbsf", NULL}
 
static const char *const opt_name_codec_tags [] = {"tag", "atag", "vtag", "stag", NULL}
 
static const char *const opt_name_sample_fmts [] = {"sample_fmt", NULL}
 
static const char *const opt_name_qscale [] = {"q", "qscale", NULL}
 
static const char *const opt_name_forced_key_frames [] = {"forced_key_frames", NULL}
 
static const char *const opt_name_force_fps [] = {"force_fps", NULL}
 
static const char *const opt_name_frame_aspect_ratios [] = {"aspect", NULL}
 
static const char *const opt_name_rc_overrides [] = {"rc_override", NULL}
 
static const char *const opt_name_intra_matrices [] = {"intra_matrix", NULL}
 
static const char *const opt_name_inter_matrices [] = {"inter_matrix", NULL}
 
static const char *const opt_name_chroma_intra_matrices [] = {"chroma_intra_matrix", NULL}
 
static const char *const opt_name_top_field_first [] = {"top", NULL}
 
static const char *const opt_name_presets [] = {"pre", "apre", "vpre", "spre", NULL}
 
static const char *const opt_name_copy_initial_nonkeyframes [] = {"copyinkfr", NULL}
 
static const char *const opt_name_copy_prior_start [] = {"copypriorss", NULL}
 
static const char *const opt_name_filters [] = {"filter", "af", "vf", NULL}
 
static const char *const opt_name_filter_scripts [] = {"filter_script", NULL}
 
static const char *const opt_name_reinit_filters [] = {"reinit_filter", NULL}
 
static const char *const opt_name_fix_sub_duration [] = {"fix_sub_duration", NULL}
 
static const char *const opt_name_canvas_sizes [] = {"canvas_size", NULL}
 
static const char *const opt_name_pass [] = {"pass", NULL}
 
static const char *const opt_name_passlogfiles [] = {"passlogfile", NULL}
 
static const char *const opt_name_max_muxing_queue_size [] = {"max_muxing_queue_size", NULL}
 
static const char *const opt_name_muxing_queue_data_threshold [] = {"muxing_queue_data_threshold", NULL}
 
static const char *const opt_name_guess_layout_max [] = {"guess_layout_max", NULL}
 
static const char *const opt_name_apad [] = {"apad", NULL}
 
static const char *const opt_name_discard [] = {"discard", NULL}
 
static const char *const opt_name_disposition [] = {"disposition", NULL}
 
static const char *const opt_name_time_bases [] = {"time_base", NULL}
 
static const char *const opt_name_enc_time_bases [] = {"enc_time_base", NULL}
 
const HWAccel hwaccels []
 
__thread HWDevicefilter_hw_device
 
__thread char * vstats_filename
 
__thread char * sdp_filename
 
__thread float audio_drift_threshold = 0.1
 
__thread float dts_delta_threshold = 10
 
__thread float dts_error_threshold = 3600*30
 
__thread int audio_volume = 256
 
__thread int audio_sync_method = 0
 
__thread int video_sync_method = VSYNC_AUTO
 
__thread float frame_drop_threshold = 0
 
__thread int do_deinterlace = 0
 
__thread int do_benchmark = 0
 
__thread int do_benchmark_all = 0
 
__thread int do_hex_dump = 0
 
__thread int do_pkt_dump = 0
 
__thread int copy_ts = 0
 
__thread int start_at_zero = 0
 
__thread int copy_tb = -1
 
__thread int debug_ts = 0
 
__thread int exit_on_error = 0
 
__thread int abort_on_flags = 0
 
__thread int print_stats = -1
 
__thread int qp_hist = 0
 
__thread int stdin_interaction = 1
 
__thread int frame_bits_per_raw_sample = 0
 
__thread float max_error_rate = 2.0/3
 
__thread int filter_nbthreads = 0
 
__thread int filter_complex_nbthreads = 0
 
__thread int vstats_version = 2
 
__thread int auto_conversion_filters = 1
 
__thread int64_t stats_period = 500000
 
__thread int intra_only = 0
 
__thread int file_overwrite = 0
 
__thread int no_file_overwrite = 0
 
__thread int do_psnr = 0
 
__thread int input_sync
 
__thread int input_stream_potentially_available = 0
 
__thread int ignore_unknown_streams = 0
 
__thread int copy_unknown_streams = 0
 
static __thread int recast_media = 0
 
__thread int find_stream_info = 1
 
__thread OptionDefffmpeg_options
 
+

Macro Definition Documentation

+ +

◆ DEFAULT_PASS_LOGFILENAME_PREFIX

+ +
+
+ + + + +
#define DEFAULT_PASS_LOGFILENAME_PREFIX   "ffmpeg2pass"
+
+ +

Definition at line 61 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ MATCH_PER_STREAM_OPT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define MATCH_PER_STREAM_OPT( name,
 type,
 outvar,
 fmtctx,
 st 
)
+
+Value:
{\
+
int i, ret, matches = 0;\
+
SpecifierOpt *so;\
+
for (i = 0; i < o->nb_ ## name; i++) {\
+
char *spec = o->name[i].specifier;\
+
if ((ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
+
outvar = o->name[i].u.type;\
+
so = &o->name[i];\
+
matches++;\
+
} else if (ret < 0)\
+
exit_program(1);\
+
}\
+
if (matches > 1)\
+
WARN_MULTIPLE_OPT_USAGE(name, type, so, st);\
+
}
+
+

Definition at line 125 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ MATCH_PER_TYPE_OPT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define MATCH_PER_TYPE_OPT( name,
 type,
 outvar,
 fmtctx,
 mediatype 
)
+
+Value:
{\
+
int i;\
+
for (i = 0; i < o->nb_ ## name; i++) {\
+
char *spec = o->name[i].specifier;\
+
if (!strcmp(spec, mediatype))\
+
outvar = o->name[i].u.type;\
+
}\
+
}
+
+

Definition at line 142 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ METADATA_CHECK_INDEX

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define METADATA_CHECK_INDEX( index,
 nb_elems,
 desc 
)
+
+Value:
if ((index) < 0 || (index) >= (nb_elems)) {\
+
av_log(NULL, AV_LOG_FATAL, "Invalid %s index %d while processing metadata maps.\n",\
+
(desc), (index));\
+
exit_program(1);\
+
}
+
+
+
+ +

◆ SET_DICT

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define SET_DICT( type,
 meta,
 context,
 index 
)
+
+Value:
switch (type) {\
+
case 'g':\
+
meta = &context->metadata;\
+
break;\
+
case 'c':\
+
METADATA_CHECK_INDEX(index, context->nb_chapters, "chapter")\
+
meta = &context->chapters[index]->metadata;\
+
break;\
+
case 'p':\
+
METADATA_CHECK_INDEX(index, context->nb_programs, "program")\
+
meta = &context->programs[index]->metadata;\
+
break;\
+
case 's':\
+
break; /* handled separately below */ \
+
default: av_assert0(0);\
+
}\
+
+
+
+ +

◆ SPECIFIER_OPT_FMT_dbl

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_dbl   "%lf"
+
+ +

Definition at line 68 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ SPECIFIER_OPT_FMT_f

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_f   "%f"
+
+ +

Definition at line 67 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ SPECIFIER_OPT_FMT_i

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_i   "%i"
+
+ +

Definition at line 64 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ SPECIFIER_OPT_FMT_i64

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_i64   "%"PRId64
+
+ +

Definition at line 65 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ SPECIFIER_OPT_FMT_str

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_str   "%s"
+
+ +

Definition at line 63 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ SPECIFIER_OPT_FMT_ui64

+ +
+
+ + + + +
#define SPECIFIER_OPT_FMT_ui64   "%"PRIu64
+
+ +

Definition at line 66 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ WARN_MULTIPLE_OPT_USAGE

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define WARN_MULTIPLE_OPT_USAGE( name,
 type,
 so,
 st 
)
+
+Value:
{\
+
char namestr[128] = "";\
+
const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
+
for (i = 0; opt_name_##name[i]; i++)\
+
av_strlcatf(namestr, sizeof(namestr), "-%s%s", opt_name_##name[i], opt_name_##name[i+1] ? (opt_name_##name[i+2] ? ", " : " or ") : "");\
+
av_log(NULL, AV_LOG_WARNING, "Multiple %s options specified for stream %d, only the last option '-%s%s%s "SPECIFIER_OPT_FMT_##type"' will be used.\n",\
+
namestr, st->index, opt_name_##name[0], spec[0] ? ":" : "", spec, so->u.type);\
+
}
+
+

Definition at line 115 of file fftools_ffmpeg_opt.c.

+ +
+
+

Function Documentation

+ +

◆ add_input_streams()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void add_input_streams (OptionsContexto,
AVFormatContext * ic 
)
+
+ +

Definition at line 819 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ assert_file_overwrite()

+ +
+
+ + + + + + + + +
void assert_file_overwrite (const char * filename)
+
+ +

Definition at line 1034 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ check_streamcopy_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void check_streamcopy_filters (OptionsContexto,
AVFormatContext * oc,
const OutputStreamost,
enum AVMediaType type 
)
+
+ +

Definition at line 1731 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ choose_decoder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const AVCodec* choose_decoder (OptionsContexto,
AVFormatContext * s,
AVStream * st 
)
+
+ +

Definition at line 802 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ choose_encoder()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int choose_encoder (OptionsContexto,
AVFormatContext * s,
OutputStreamost 
)
+
+ +

Definition at line 1444 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_chapters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int copy_chapters (InputFileifile,
OutputFileofile,
int copy_metadata 
)
+
+ +

Definition at line 2113 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dump_attachment()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void dump_attachment (AVStream * st,
const char * filename 
)
+
+ +

Definition at line 1077 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ fftools_copy_metadata()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int fftools_copy_metadata (char * outspec,
char * inspec,
AVFormatContext * oc,
AVFormatContext * ic,
OptionsContexto 
)
+
+ +

Definition at line 668 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ fftools_read_file()

+ +
+
+ + + + + + + + +
uint8_t* fftools_read_file (const char * filename)
+
+ +

Definition at line 1683 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ find_codec_or_die()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
const AVCodec* find_codec_or_die (const char * name,
enum AVMediaType type,
int encoder 
)
+
+ +

Definition at line 773 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_line()

+ +
+
+ + + + + + + + +
uint8_t* get_line (AVIOContext * s)
+
+ +

Definition at line 1399 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_ost_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
char* get_ost_filters (OptionsContexto,
AVFormatContext * oc,
OutputStreamost 
)
+
+ +

Definition at line 1711 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ get_preset_file_2()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int get_preset_file_2 (const char * preset_name,
const char * codec_name,
AVIOContext ** s 
)
+
+ +

Definition at line 1418 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_complex_filters()

+ +
+
+ + + + + + + + +
int init_complex_filters (void )
+
+ +

Definition at line 2198 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_options()

+ +
+
+ + + + + + + + +
void init_options (OptionsContexto)
+
+ +

Definition at line 239 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ init_output_filter()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void init_output_filter (OutputFilterofilter,
OptionsContexto,
AVFormatContext * oc 
)
+
+ +

Definition at line 2156 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_attachment_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_attachment_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2055 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_audio_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_audio_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 1956 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_data_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_data_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2029 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_output_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_output_stream (OptionsContexto,
AVFormatContext * oc,
enum AVMediaType type,
int source_index 
)
+
+ +

Definition at line 1479 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_subtitle_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_subtitle_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2063 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_unknown_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_unknown_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 2042 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ new_video_stream()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
OutputStream* new_video_stream (OptionsContexto,
AVFormatContext * oc,
int source_index 
)
+
+ +

Definition at line 1745 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ open_input_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int open_input_file (OptionsContexto,
const char * filename 
)
+
+ +

Definition at line 1109 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ open_output_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
int open_output_file (OptionsContexto,
const char * filename 
)
+
+ +

Definition at line 2210 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_abort_on()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_abort_on (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 284 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_attach()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_attach (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 481 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 339 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3190 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3046 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_audio_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_audio_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3258 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_bitrate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_bitrate (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3138 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_channel_layout()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_channel_layout (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3222 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 357 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_data_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_data_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3052 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_default_new()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_default_new (OptionsContexto,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3058 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3264 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_complex_script()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_complex_script (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3279 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_filter_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_filter_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 620 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_init_hw_device()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_init_hw_device (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 605 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 363 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_map_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_map_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 489 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_old2new()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_old2new (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3126 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_preset()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_preset (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3078 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_profile()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_profile (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3172 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_qscale()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_qscale (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3154 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_recording_timestamp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_recording_timestamp (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 758 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sameq()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sameq (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 318 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_sdp_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_sdp_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 566 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_stats_period()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_stats_period (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 303 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_streamid()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_streamid (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2091 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_subtitle_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_subtitle_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 351 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_target()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_target (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 2873 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_timecode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_timecode (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3208 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_channel()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_channel (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 327 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_codec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_codec (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 345 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_filters()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_filters (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3184 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_frames()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_frames (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3040 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_video_standard()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_video_standard (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 333 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3024 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vstats_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vstats_file (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3017 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_vsync()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int opt_vsync (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 3196 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ parse_matrix_coeffs()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void parse_matrix_coeffs (uint16_t * dest,
const char * str 
)
+
+ +

Definition at line 1665 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ parse_meta_type()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void parse_meta_type (char * arg,
char * type,
intindex,
const char ** stream_spec 
)
+
+

Parse a metadata specifier passed as 'arg' parameter.

Parameters
+ + + + + +
argmetadata string to parse
typemetadata type is written here – g(lobal)/s(tream)/c(hapter)/p(rogram)
indexfor type c/p, chapter/program index is written here
stream_specfor type s, the stream specifier is written here
+
+
+ +

Definition at line 641 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ show_help_default_ffmpeg()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void show_help_default_ffmpeg (const char * opt,
const char * arg 
)
+
+

Per-fftool specific help handler. Implemented in each fftool, called by show_help().

+ +

Definition at line 3296 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ show_hwaccels()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int show_hwaccels (void * optctx,
const char * opt,
const char * arg 
)
+
+ +

Definition at line 254 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ show_usage()

+ +
+
+ + + + + + + + +
void show_usage (void )
+
+ +

Definition at line 3369 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ strip_specifiers()

+ +
+
+ + + + + + + + +
AVDictionary* strip_specifiers (AVDictionary * dict)
+
+ +

Definition at line 267 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ uninit_options()

+ +
+
+ + + + + + + + +
void uninit_options (OptionsContexto)
+
+ +

Definition at line 207 of file fftools_ffmpeg_opt.c.

+ +
+
+

Variable Documentation

+ +

◆ abort_on_flags

+ +
+
+ + + + +
__thread int abort_on_flags = 0
+
+ +

Definition at line 181 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_drift_threshold

+ +
+
+ + + + +
__thread float audio_drift_threshold = 0.1
+
+ +

Definition at line 163 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_sync_method

+ +
+
+ + + + +
__thread int audio_sync_method = 0
+
+ +

Definition at line 168 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ audio_volume

+ +
+
+ + + + +
__thread int audio_volume = 256
+
+ +

Definition at line 167 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ auto_conversion_filters

+ +
+
+ + + + +
__thread int auto_conversion_filters = 1
+
+ +

Definition at line 190 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_tb

+ +
+
+ + + + +
__thread int copy_tb = -1
+
+ +

Definition at line 178 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_ts

+ +
+
+ + + + +
__thread int copy_ts = 0
+
+ +

Definition at line 176 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ copy_unknown_streams

+ +
+
+ + + + +
__thread int copy_unknown_streams = 0
+
+ +

Definition at line 201 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ debug_ts

+ +
+
+ + + + +
__thread int debug_ts = 0
+
+ +

Definition at line 179 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_benchmark

+ +
+
+ + + + +
__thread int do_benchmark = 0
+
+ +

Definition at line 172 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_benchmark_all

+ +
+
+ + + + +
__thread int do_benchmark_all = 0
+
+ +

Definition at line 173 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_deinterlace

+ +
+
+ + + + +
__thread int do_deinterlace = 0
+
+ +

Definition at line 171 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_hex_dump

+ +
+
+ + + + +
__thread int do_hex_dump = 0
+
+ +

Definition at line 174 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_pkt_dump

+ +
+
+ + + + +
__thread int do_pkt_dump = 0
+
+ +

Definition at line 175 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ do_psnr

+ +
+
+ + + + +
__thread int do_psnr = 0
+
+ +

Definition at line 197 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dts_delta_threshold

+ +
+
+ + + + +
__thread float dts_delta_threshold = 10
+
+ +

Definition at line 164 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ dts_error_threshold

+ +
+
+ + + + +
__thread float dts_error_threshold = 3600*30
+
+ +

Definition at line 165 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ exit_on_error

+ +
+
+ + + + +
__thread int exit_on_error = 0
+
+ +

Definition at line 180 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ ffmpeg_options

+ +
+
+ + + + +
__thread OptionDef* ffmpeg_options
+
+ +

Definition at line 5208 of file fftools_ffmpeg.c.

+ +
+
+ +

◆ file_overwrite

+ +
+
+ + + + +
__thread int file_overwrite = 0
+
+ +

Definition at line 195 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_complex_nbthreads

+ +
+
+ + + + +
__thread int filter_complex_nbthreads = 0
+
+ +

Definition at line 188 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_hw_device

+ +
+
+ + + + +
__thread HWDevice* filter_hw_device
+
+ +

Definition at line 158 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ filter_nbthreads

+ +
+
+ + + + +
__thread int filter_nbthreads = 0
+
+ +

Definition at line 187 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ find_stream_info

+ +
+
+ + + + +
__thread int find_stream_info = 1
+
+ +

Definition at line 203 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ frame_bits_per_raw_sample

+ +
+
+ + + + +
__thread int frame_bits_per_raw_sample = 0
+
+ +

Definition at line 185 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ frame_drop_threshold

+ +
+
+ + + + +
__thread float frame_drop_threshold = 0
+
+ +

Definition at line 170 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ hwaccels

+ +
+
+ + + + +
const HWAccel hwaccels[]
+
+Initial value:
= {
+
+
+
+
{ 0 },
+
}
+
+

Definition at line 152 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ ignore_unknown_streams

+ +
+
+ + + + +
__thread int ignore_unknown_streams = 0
+
+ +

Definition at line 200 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ input_stream_potentially_available

+ +
+
+ + + + +
__thread int input_stream_potentially_available = 0
+
+ +

Definition at line 199 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ input_sync

+ +
+
+ + + + +
__thread int input_sync
+
+ +

Definition at line 198 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ intra_only

+ +
+
+ + + + +
__thread int intra_only = 0
+
+ +

Definition at line 194 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ max_error_rate

+ +
+
+ + + + +
__thread float max_error_rate = 2.0/3
+
+ +

Definition at line 186 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ no_file_overwrite

+ +
+
+ + + + +
__thread int no_file_overwrite = 0
+
+ +

Definition at line 196 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_apad

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_apad[] = {"apad", NULL}
+
+static
+
+ +

Definition at line 109 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_audio_channels

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_audio_channels[] = {"ac", NULL}
+
+static
+
+ +

Definition at line 71 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_audio_sample_rate

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_audio_sample_rate[] = {"ar", NULL}
+
+static
+
+ +

Definition at line 72 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_autorotate

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_autorotate[] = {"autorotate", NULL}
+
+static
+
+ +

Definition at line 81 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_autoscale

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_autoscale[] = {"autoscale", NULL}
+
+static
+
+ +

Definition at line 82 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_bitstream_filters

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_bitstream_filters[] = {"bsf", "absf", "vbsf", NULL}
+
+static
+
+ +

Definition at line 84 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_canvas_sizes

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_canvas_sizes[] = {"canvas_size", NULL}
+
+static
+
+ +

Definition at line 103 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_chroma_intra_matrices

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_chroma_intra_matrices[] = {"chroma_intra_matrix", NULL}
+
+static
+
+ +

Definition at line 94 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_codec_names

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_codec_names[] = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL}
+
+static
+
+ +

Definition at line 70 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_codec_tags

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_codec_tags[] = {"tag", "atag", "vtag", "stag", NULL}
+
+static
+
+ +

Definition at line 85 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_copy_initial_nonkeyframes

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_copy_initial_nonkeyframes[] = {"copyinkfr", NULL}
+
+static
+
+ +

Definition at line 97 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_copy_prior_start

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_copy_prior_start[] = {"copypriorss", NULL}
+
+static
+
+ +

Definition at line 98 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_discard

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_discard[] = {"discard", NULL}
+
+static
+
+ +

Definition at line 110 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_disposition

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_disposition[] = {"disposition", NULL}
+
+static
+
+ +

Definition at line 111 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_enc_time_bases

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_enc_time_bases[] = {"enc_time_base", NULL}
+
+static
+
+ +

Definition at line 113 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_filter_scripts

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_filter_scripts[] = {"filter_script", NULL}
+
+static
+
+ +

Definition at line 100 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_filters

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_filters[] = {"filter", "af", "vf", NULL}
+
+static
+
+ +

Definition at line 99 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_fix_sub_duration

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_fix_sub_duration[] = {"fix_sub_duration", NULL}
+
+static
+
+ +

Definition at line 102 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_force_fps

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_force_fps[] = {"force_fps", NULL}
+
+static
+
+ +

Definition at line 89 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_forced_key_frames

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_forced_key_frames[] = {"forced_key_frames", NULL}
+
+static
+
+ +

Definition at line 88 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_frame_aspect_ratios

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_frame_aspect_ratios[] = {"aspect", NULL}
+
+static
+
+ +

Definition at line 90 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_frame_pix_fmts

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_frame_pix_fmts[] = {"pix_fmt", NULL}
+
+static
+
+ +

Definition at line 76 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_frame_rates

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_frame_rates[] = {"r", NULL}
+
+static
+
+ +

Definition at line 73 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_frame_sizes

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_frame_sizes[] = {"s", NULL}
+
+static
+
+ +

Definition at line 75 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_guess_layout_max

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_guess_layout_max[] = {"guess_layout_max", NULL}
+
+static
+
+ +

Definition at line 108 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_hwaccel_devices

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_hwaccel_devices[] = {"hwaccel_device", NULL}
+
+static
+
+ +

Definition at line 79 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_hwaccel_output_formats

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_hwaccel_output_formats[] = {"hwaccel_output_format", NULL}
+
+static
+
+ +

Definition at line 80 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_hwaccels

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_hwaccels[] = {"hwaccel", NULL}
+
+static
+
+ +

Definition at line 78 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_inter_matrices

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_inter_matrices[] = {"inter_matrix", NULL}
+
+static
+
+ +

Definition at line 93 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_intra_matrices

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_intra_matrices[] = {"intra_matrix", NULL}
+
+static
+
+ +

Definition at line 92 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_max_frame_rates

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_max_frame_rates[] = {"fpsmax", NULL}
+
+static
+
+ +

Definition at line 74 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_max_frames

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_max_frames[] = {"frames", "aframes", "vframes", "dframes", NULL}
+
+static
+
+ +

Definition at line 83 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_max_muxing_queue_size

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_max_muxing_queue_size[] = {"max_muxing_queue_size", NULL}
+
+static
+
+ +

Definition at line 106 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_muxing_queue_data_threshold

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_muxing_queue_data_threshold[] = {"muxing_queue_data_threshold", NULL}
+
+static
+
+ +

Definition at line 107 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_pass

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_pass[] = {"pass", NULL}
+
+static
+
+ +

Definition at line 104 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_passlogfiles

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_passlogfiles[] = {"passlogfile", NULL}
+
+static
+
+ +

Definition at line 105 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_presets

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_presets[] = {"pre", "apre", "vpre", "spre", NULL}
+
+static
+
+ +

Definition at line 96 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_qscale

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_qscale[] = {"q", "qscale", NULL}
+
+static
+
+ +

Definition at line 87 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_rc_overrides

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_rc_overrides[] = {"rc_override", NULL}
+
+static
+
+ +

Definition at line 91 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_reinit_filters

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_reinit_filters[] = {"reinit_filter", NULL}
+
+static
+
+ +

Definition at line 101 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_sample_fmts

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_sample_fmts[] = {"sample_fmt", NULL}
+
+static
+
+ +

Definition at line 86 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_time_bases

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_time_bases[] = {"time_base", NULL}
+
+static
+
+ +

Definition at line 112 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_top_field_first

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_top_field_first[] = {"top", NULL}
+
+static
+
+ +

Definition at line 95 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ opt_name_ts_scale

+ +
+
+ + + + + +
+ + + + +
const char* const opt_name_ts_scale[] = {"itsscale", NULL}
+
+static
+
+ +

Definition at line 77 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ print_stats

+ +
+
+ + + + +
__thread int print_stats = -1
+
+ +

Definition at line 182 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ qp_hist

+ +
+
+ + + + +
__thread int qp_hist = 0
+
+ +

Definition at line 183 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ recast_media

+ +
+
+ + + + + +
+ + + + +
__thread int recast_media = 0
+
+static
+
+ +

Definition at line 202 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ sdp_filename

+ +
+
+ + + + +
__thread char* sdp_filename
+
+ +

Definition at line 161 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ start_at_zero

+ +
+
+ + + + +
__thread int start_at_zero = 0
+
+ +

Definition at line 177 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ stats_period

+ +
+
+ + + + +
__thread int64_t stats_period = 500000
+
+ +

Definition at line 191 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ stdin_interaction

+ +
+
+ + + + +
__thread int stdin_interaction = 1
+
+ +

Definition at line 184 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ video_sync_method

+ +
+
+ + + + +
__thread int video_sync_method = VSYNC_AUTO
+
+ +

Definition at line 169 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ vstats_filename

+ +
+
+ + + + +
__thread char* vstats_filename
+
+ +

Definition at line 160 of file fftools_ffmpeg_opt.c.

+ +
+
+ +

◆ vstats_version

+ +
+
+ + + + +
__thread int vstats_version = 2
+
+ +

Definition at line 189 of file fftools_ffmpeg_opt.c.

+ +
+
+
+
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Definition: fftools_cmdutils.c:2148
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+ + + + diff --git a/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c_source.html b/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c_source.html new file mode 100644 index 0000000..5047607 --- /dev/null +++ b/docs/linux/html/da/d66/fftools__ffmpeg__opt_8c_source.html @@ -0,0 +1,3998 @@ + + + + + + + +FFmpegKit Linux API: fftools_ffmpeg_opt.c Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
fftools_ffmpeg_opt.c
+
+
+Go to the documentation of this file.
1 /*
+
2  * ffmpeg option parsing
+
3  *
+
4  * This file is part of FFmpeg.
+
5  *
+
6  * FFmpeg is free software; you can redistribute it and/or
+
7  * modify it under the terms of the GNU Lesser General Public
+
8  * License as published by the Free Software Foundation; either
+
9  * version 2.1 of the License, or (at your option) any later version.
+
10  *
+
11  * FFmpeg is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+
14  * Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public
+
17  * License along with FFmpeg; if not, write to the Free Software
+
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
19  */
+
20 
+
21 /*
+
22  * CHANGES 01.2020
+
23  * - ffprobe support changes
+
24  *
+
25  * CHANGES 12.2019
+
26  * - Concurrent execution support
+
27  *
+
28  * CHANGES 08.2018
+
29  * --------------------------------------------------------
+
30  * - fftools_ prefix added to file name and parent headers
+
31  *
+
32  * CHANGES 07.2018
+
33  * --------------------------------------------------------
+
34  * - Parentheses placed around assignments in condition to prevent -Wparentheses warning
+
35  */
+
36 
+
37 #include <stdint.h>
+
38 
+
39 #include "fftools_ffmpeg.h"
+
40 #include "fftools_cmdutils.h"
+
41 
+
42 #include "libavformat/avformat.h"
+
43 
+
44 #include "libavcodec/avcodec.h"
+
45 #include "libavcodec/bsf.h"
+
46 
+
47 #include "libavfilter/avfilter.h"
+
48 
+
49 #include "libavutil/avassert.h"
+
50 #include "libavutil/avstring.h"
+
51 #include "libavutil/avutil.h"
+
52 #include "libavutil/channel_layout.h"
+
53 #include "libavutil/intreadwrite.h"
+
54 #include "libavutil/fifo.h"
+
55 #include "libavutil/mathematics.h"
+
56 #include "libavutil/opt.h"
+
57 #include "libavutil/parseutils.h"
+
58 #include "libavutil/pixdesc.h"
+
59 #include "libavutil/pixfmt.h"
+
60 
+
61 #define DEFAULT_PASS_LOGFILENAME_PREFIX "ffmpeg2pass"
+
62 
+
63 #define SPECIFIER_OPT_FMT_str "%s"
+
64 #define SPECIFIER_OPT_FMT_i "%i"
+
65 #define SPECIFIER_OPT_FMT_i64 "%"PRId64
+
66 #define SPECIFIER_OPT_FMT_ui64 "%"PRIu64
+
67 #define SPECIFIER_OPT_FMT_f "%f"
+
68 #define SPECIFIER_OPT_FMT_dbl "%lf"
+
69 
+
70 static const char *const opt_name_codec_names[] = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL};
+
71 static const char *const opt_name_audio_channels[] = {"ac", NULL};
+
72 static const char *const opt_name_audio_sample_rate[] = {"ar", NULL};
+
73 static const char *const opt_name_frame_rates[] = {"r", NULL};
+
74 static const char *const opt_name_max_frame_rates[] = {"fpsmax", NULL};
+
75 static const char *const opt_name_frame_sizes[] = {"s", NULL};
+
76 static const char *const opt_name_frame_pix_fmts[] = {"pix_fmt", NULL};
+
77 static const char *const opt_name_ts_scale[] = {"itsscale", NULL};
+
78 static const char *const opt_name_hwaccels[] = {"hwaccel", NULL};
+
79 static const char *const opt_name_hwaccel_devices[] = {"hwaccel_device", NULL};
+
80 static const char *const opt_name_hwaccel_output_formats[] = {"hwaccel_output_format", NULL};
+
81 static const char *const opt_name_autorotate[] = {"autorotate", NULL};
+
82 static const char *const opt_name_autoscale[] = {"autoscale", NULL};
+
83 static const char *const opt_name_max_frames[] = {"frames", "aframes", "vframes", "dframes", NULL};
+
84 static const char *const opt_name_bitstream_filters[] = {"bsf", "absf", "vbsf", NULL};
+
85 static const char *const opt_name_codec_tags[] = {"tag", "atag", "vtag", "stag", NULL};
+
86 static const char *const opt_name_sample_fmts[] = {"sample_fmt", NULL};
+
87 static const char *const opt_name_qscale[] = {"q", "qscale", NULL};
+
88 static const char *const opt_name_forced_key_frames[] = {"forced_key_frames", NULL};
+
89 static const char *const opt_name_force_fps[] = {"force_fps", NULL};
+
90 static const char *const opt_name_frame_aspect_ratios[] = {"aspect", NULL};
+
91 static const char *const opt_name_rc_overrides[] = {"rc_override", NULL};
+
92 static const char *const opt_name_intra_matrices[] = {"intra_matrix", NULL};
+
93 static const char *const opt_name_inter_matrices[] = {"inter_matrix", NULL};
+
94 static const char *const opt_name_chroma_intra_matrices[] = {"chroma_intra_matrix", NULL};
+
95 static const char *const opt_name_top_field_first[] = {"top", NULL};
+
96 static const char *const opt_name_presets[] = {"pre", "apre", "vpre", "spre", NULL};
+
97 static const char *const opt_name_copy_initial_nonkeyframes[] = {"copyinkfr", NULL};
+
98 static const char *const opt_name_copy_prior_start[] = {"copypriorss", NULL};
+
99 static const char *const opt_name_filters[] = {"filter", "af", "vf", NULL};
+
100 static const char *const opt_name_filter_scripts[] = {"filter_script", NULL};
+
101 static const char *const opt_name_reinit_filters[] = {"reinit_filter", NULL};
+
102 static const char *const opt_name_fix_sub_duration[] = {"fix_sub_duration", NULL};
+
103 static const char *const opt_name_canvas_sizes[] = {"canvas_size", NULL};
+
104 static const char *const opt_name_pass[] = {"pass", NULL};
+
105 static const char *const opt_name_passlogfiles[] = {"passlogfile", NULL};
+
106 static const char *const opt_name_max_muxing_queue_size[] = {"max_muxing_queue_size", NULL};
+
107 static const char *const opt_name_muxing_queue_data_threshold[] = {"muxing_queue_data_threshold", NULL};
+
108 static const char *const opt_name_guess_layout_max[] = {"guess_layout_max", NULL};
+
109 static const char *const opt_name_apad[] = {"apad", NULL};
+
110 static const char *const opt_name_discard[] = {"discard", NULL};
+
111 static const char *const opt_name_disposition[] = {"disposition", NULL};
+
112 static const char *const opt_name_time_bases[] = {"time_base", NULL};
+
113 static const char *const opt_name_enc_time_bases[] = {"enc_time_base", NULL};
+
114 
+
115 #define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)\
+
116 {\
+
117  char namestr[128] = "";\
+
118  const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
+
119  for (i = 0; opt_name_##name[i]; i++)\
+
120  av_strlcatf(namestr, sizeof(namestr), "-%s%s", opt_name_##name[i], opt_name_##name[i+1] ? (opt_name_##name[i+2] ? ", " : " or ") : "");\
+
121  av_log(NULL, AV_LOG_WARNING, "Multiple %s options specified for stream %d, only the last option '-%s%s%s "SPECIFIER_OPT_FMT_##type"' will be used.\n",\
+
122  namestr, st->index, opt_name_##name[0], spec[0] ? ":" : "", spec, so->u.type);\
+
123 }
+
124 
+
125 #define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
+
126 {\
+
127  int i, ret, matches = 0;\
+
128  SpecifierOpt *so;\
+
129  for (i = 0; i < o->nb_ ## name; i++) {\
+
130  char *spec = o->name[i].specifier;\
+
131  if ((ret = check_stream_specifier(fmtctx, st, spec)) > 0) {\
+
132  outvar = o->name[i].u.type;\
+
133  so = &o->name[i];\
+
134  matches++;\
+
135  } else if (ret < 0)\
+
136  exit_program(1);\
+
137  }\
+
138  if (matches > 1)\
+
139  WARN_MULTIPLE_OPT_USAGE(name, type, so, st);\
+
140 }
+
141 
+
142 #define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
+
143 {\
+
144  int i;\
+
145  for (i = 0; i < o->nb_ ## name; i++) {\
+
146  char *spec = o->name[i].specifier;\
+
147  if (!strcmp(spec, mediatype))\
+
148  outvar = o->name[i].u.type;\
+
149  }\
+
150 }
+
151 
+
152 const HWAccel hwaccels[] = {
+
153 #if CONFIG_VIDEOTOOLBOX
+
154  { "videotoolbox", videotoolbox_init, HWACCEL_VIDEOTOOLBOX, AV_PIX_FMT_VIDEOTOOLBOX },
+
155 #endif
+
156  { 0 },
+
157 };
+ +
159 
+
160 __thread char *vstats_filename;
+
161 __thread char *sdp_filename;
+
162 
+
163 __thread float audio_drift_threshold = 0.1;
+
164 __thread float dts_delta_threshold = 10;
+
165 __thread float dts_error_threshold = 3600*30;
+
166 
+
167 __thread int audio_volume = 256;
+
168 __thread int audio_sync_method = 0;
+ +
170 __thread float frame_drop_threshold = 0;
+
171 __thread int do_deinterlace = 0;
+
172 __thread int do_benchmark = 0;
+
173 __thread int do_benchmark_all = 0;
+
174 __thread int do_hex_dump = 0;
+
175 __thread int do_pkt_dump = 0;
+
176 __thread int copy_ts = 0;
+
177 __thread int start_at_zero = 0;
+
178 __thread int copy_tb = -1;
+
179 __thread int debug_ts = 0;
+
180 __thread int exit_on_error = 0;
+
181 __thread int abort_on_flags = 0;
+
182 __thread int print_stats = -1;
+
183 __thread int qp_hist = 0;
+
184 __thread int stdin_interaction = 1;
+
185 __thread int frame_bits_per_raw_sample = 0;
+
186 __thread float max_error_rate = 2.0/3;
+
187 __thread int filter_nbthreads = 0;
+
188 __thread int filter_complex_nbthreads = 0;
+
189 __thread int vstats_version = 2;
+
190 __thread int auto_conversion_filters = 1;
+
191 __thread int64_t stats_period = 500000;
+
192 
+
193 
+
194 __thread int intra_only = 0;
+
195 __thread int file_overwrite = 0;
+
196 __thread int no_file_overwrite = 0;
+
197 __thread int do_psnr = 0;
+
198 __thread int input_sync;
+ +
200 __thread int ignore_unknown_streams = 0;
+
201 __thread int copy_unknown_streams = 0;
+
202 __thread static int recast_media = 0;
+
203 __thread int find_stream_info = 1;
+
204 
+
205 extern __thread OptionDef *ffmpeg_options;
+
206 
+ +
208 {
+
209  const OptionDef *po = ffmpeg_options;
+
210  int i;
+
211 
+
212  /* all OPT_SPEC and OPT_STRING can be freed in generic way */
+
213  while (po->name) {
+
214  void *dst = (uint8_t*)o + po->u.off;
+
215 
+
216  if (po->flags & OPT_SPEC) {
+
217  SpecifierOpt **so = dst;
+
218  int i, *count = (int*)(so + 1);
+
219  for (i = 0; i < *count; i++) {
+
220  av_freep(&(*so)[i].specifier);
+
221  if (po->flags & OPT_STRING)
+
222  av_freep(&(*so)[i].u.str);
+
223  }
+
224  av_freep(so);
+
225  *count = 0;
+
226  } else if (po->flags & OPT_OFFSET && po->flags & OPT_STRING)
+
227  av_freep(dst);
+
228  po++;
+
229  }
+
230 
+
231  for (i = 0; i < o->nb_stream_maps; i++)
+
232  av_freep(&o->stream_maps[i].linklabel);
+
233  av_freep(&o->stream_maps);
+
234  av_freep(&o->audio_channel_maps);
+
235  av_freep(&o->streamid_map);
+
236  av_freep(&o->attachments);
+
237 }
+
238 
+ +
240 {
+
241  memset(o, 0, sizeof(*o));
+
242 
+
243  o->stop_time = INT64_MAX;
+
244  o->mux_max_delay = 0.7;
+
245  o->start_time = AV_NOPTS_VALUE;
+
246  o->start_time_eof = AV_NOPTS_VALUE;
+
247  o->recording_time = INT64_MAX;
+
248  o->limit_filesize = UINT64_MAX;
+
249  o->chapters_input_file = INT_MAX;
+
250  o->accurate_seek = 1;
+
251  o->thread_queue_size = -1;
+
252 }
+
253 
+
254 int show_hwaccels(void *optctx, const char *opt, const char *arg)
+
255 {
+
256  enum AVHWDeviceType type = AV_HWDEVICE_TYPE_NONE;
+
257 
+
258  av_log(NULL, AV_LOG_STDERR, "Hardware acceleration methods:\n");
+
259  while ((type = av_hwdevice_iterate_types(type)) !=
+
260  AV_HWDEVICE_TYPE_NONE)
+
261  av_log(NULL, AV_LOG_STDERR, "%s\n", av_hwdevice_get_type_name(type));
+
262  av_log(NULL, AV_LOG_STDERR, "\n");
+
263  return 0;
+
264 }
+
265 
+
266 /* return a copy of the input with the stream specifiers removed from the keys */
+
267 AVDictionary *strip_specifiers(AVDictionary *dict)
+
268 {
+
269  AVDictionaryEntry *e = NULL;
+
270  AVDictionary *ret = NULL;
+
271 
+
272  while ((e = av_dict_get(dict, "", e, AV_DICT_IGNORE_SUFFIX))) {
+
273  char *p = strchr(e->key, ':');
+
274 
+
275  if (p)
+
276  *p = 0;
+
277  av_dict_set(&ret, e->key, e->value, 0);
+
278  if (p)
+
279  *p = ':';
+
280  }
+
281  return ret;
+
282 }
+
283 
+
284 int opt_abort_on(void *optctx, const char *opt, const char *arg)
+
285 {
+
286  const AVOption opts[] = {
+
287  { "abort_on" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, (double)INT64_MAX, .unit = "flags" },
+
288  { "empty_output" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = ABORT_ON_FLAG_EMPTY_OUTPUT }, .unit = "flags" },
+
289  { "empty_output_stream", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM }, .unit = "flags" },
+
290  { NULL },
+
291  };
+
292  const AVClass class = {
+
293  .class_name = "",
+
294  .item_name = av_default_item_name,
+
295  .option = opts,
+
296  .version = LIBAVUTIL_VERSION_INT,
+
297  };
+
298  const AVClass *pclass = &class;
+
299 
+
300  return av_opt_eval_flags(&pclass, &opts[0], arg, &abort_on_flags);
+
301 }
+
302 
+
303 int opt_stats_period(void *optctx, const char *opt, const char *arg)
+
304 {
+
305  int64_t user_stats_period = parse_time_or_die(opt, arg, 1);
+
306 
+
307  if (user_stats_period <= 0) {
+
308  av_log(NULL, AV_LOG_ERROR, "stats_period %s must be positive.\n", arg);
+
309  return AVERROR(EINVAL);
+
310  }
+
311 
+
312  stats_period = user_stats_period;
+
313  av_log(NULL, AV_LOG_INFO, "ffmpeg stats and -progress period set to %s.\n", arg);
+
314 
+
315  return 0;
+
316 }
+
317 
+
318 int opt_sameq(void *optctx, const char *opt, const char *arg)
+
319 {
+
320  av_log(NULL, AV_LOG_ERROR, "Option '%s' was removed. "
+
321  "If you are looking for an option to preserve the quality (which is not "
+
322  "what -%s was for), use -qscale 0 or an equivalent quality factor option.\n",
+
323  opt, opt);
+
324  return AVERROR(EINVAL);
+
325 }
+
326 
+
327 int opt_video_channel(void *optctx, const char *opt, const char *arg)
+
328 {
+
329  av_log(NULL, AV_LOG_WARNING, "This option is deprecated, use -channel.\n");
+
330  return opt_default(optctx, "channel", arg);
+
331 }
+
332 
+
333 int opt_video_standard(void *optctx, const char *opt, const char *arg)
+
334 {
+
335  av_log(NULL, AV_LOG_WARNING, "This option is deprecated, use -standard.\n");
+
336  return opt_default(optctx, "standard", arg);
+
337 }
+
338 
+
339 int opt_audio_codec(void *optctx, const char *opt, const char *arg)
+
340 {
+
341  OptionsContext *o = optctx;
+
342  return parse_option(o, "codec:a", arg, ffmpeg_options);
+
343 }
+
344 
+
345 int opt_video_codec(void *optctx, const char *opt, const char *arg)
+
346 {
+
347  OptionsContext *o = optctx;
+
348  return parse_option(o, "codec:v", arg, ffmpeg_options);
+
349 }
+
350 
+
351 int opt_subtitle_codec(void *optctx, const char *opt, const char *arg)
+
352 {
+
353  OptionsContext *o = optctx;
+
354  return parse_option(o, "codec:s", arg, ffmpeg_options);
+
355 }
+
356 
+
357 int opt_data_codec(void *optctx, const char *opt, const char *arg)
+
358 {
+
359  OptionsContext *o = optctx;
+
360  return parse_option(o, "codec:d", arg, ffmpeg_options);
+
361 }
+
362 
+
363 int opt_map(void *optctx, const char *opt, const char *arg)
+
364 {
+
365  OptionsContext *o = optctx;
+
366  StreamMap *m = NULL;
+
367  int i, negative = 0, file_idx, disabled = 0;
+
368  int sync_file_idx = -1, sync_stream_idx = 0;
+
369  char *p, *sync;
+
370  char *map;
+
371  char *allow_unused;
+
372 
+
373  if (*arg == '-') {
+
374  negative = 1;
+
375  arg++;
+
376  }
+
377  map = av_strdup(arg);
+
378  if (!map)
+
379  return AVERROR(ENOMEM);
+
380 
+
381  /* parse sync stream first, just pick first matching stream */
+
382  if ((sync = strchr(map, ','))) {
+
383  *sync = 0;
+
384  sync_file_idx = strtol(sync + 1, &sync, 0);
+
385  if (sync_file_idx >= nb_input_files || sync_file_idx < 0) {
+
386  av_log(NULL, AV_LOG_FATAL, "Invalid sync file index: %d.\n", sync_file_idx);
+
387  exit_program(1);
+
388  }
+
389  if (*sync)
+
390  sync++;
+
391  for (i = 0; i < input_files[sync_file_idx]->nb_streams; i++)
+
392  if (check_stream_specifier(input_files[sync_file_idx]->ctx,
+
393  input_files[sync_file_idx]->ctx->streams[i], sync) == 1) {
+
394  sync_stream_idx = i;
+
395  break;
+
396  }
+
397  if (i == input_files[sync_file_idx]->nb_streams) {
+
398  av_log(NULL, AV_LOG_FATAL, "Sync stream specification in map %s does not "
+
399  "match any streams.\n", arg);
+
400  exit_program(1);
+
401  }
+
402  if (input_streams[input_files[sync_file_idx]->ist_index + sync_stream_idx]->user_set_discard == AVDISCARD_ALL) {
+
403  av_log(NULL, AV_LOG_FATAL, "Sync stream specification in map %s matches a disabled input "
+
404  "stream.\n", arg);
+
405  exit_program(1);
+
406  }
+
407  }
+
408 
+
409 
+
410  if (map[0] == '[') {
+
411  /* this mapping refers to lavfi output */
+
412  const char *c = map + 1;
+ +
414  m = &o->stream_maps[o->nb_stream_maps - 1];
+
415  m->linklabel = av_get_token(&c, "]");
+
416  if (!m->linklabel) {
+
417  av_log(NULL, AV_LOG_ERROR, "Invalid output link label: %s.\n", map);
+
418  exit_program(1);
+
419  }
+
420  } else {
+
421  if ((allow_unused = strchr(map, '?')))
+
422  *allow_unused = 0;
+
423  file_idx = strtol(map, &p, 0);
+
424  if (file_idx >= nb_input_files || file_idx < 0) {
+
425  av_log(NULL, AV_LOG_FATAL, "Invalid input file index: %d.\n", file_idx);
+
426  exit_program(1);
+
427  }
+
428  if (negative)
+
429  /* disable some already defined maps */
+
430  for (i = 0; i < o->nb_stream_maps; i++) {
+
431  m = &o->stream_maps[i];
+
432  if (file_idx == m->file_index &&
+ +
434  input_files[m->file_index]->ctx->streams[m->stream_index],
+
435  *p == ':' ? p + 1 : p) > 0)
+
436  m->disabled = 1;
+
437  }
+
438  else
+
439  for (i = 0; i < input_files[file_idx]->nb_streams; i++) {
+
440  if (check_stream_specifier(input_files[file_idx]->ctx, input_files[file_idx]->ctx->streams[i],
+
441  *p == ':' ? p + 1 : p) <= 0)
+
442  continue;
+
443  if (input_streams[input_files[file_idx]->ist_index + i]->user_set_discard == AVDISCARD_ALL) {
+
444  disabled = 1;
+
445  continue;
+
446  }
+ +
448  m = &o->stream_maps[o->nb_stream_maps - 1];
+
449 
+
450  m->file_index = file_idx;
+
451  m->stream_index = i;
+
452 
+
453  if (sync_file_idx >= 0) {
+
454  m->sync_file_index = sync_file_idx;
+
455  m->sync_stream_index = sync_stream_idx;
+
456  } else {
+
457  m->sync_file_index = file_idx;
+
458  m->sync_stream_index = i;
+
459  }
+
460  }
+
461  }
+
462 
+
463  if (!m) {
+
464  if (allow_unused) {
+
465  av_log(NULL, AV_LOG_VERBOSE, "Stream map '%s' matches no streams; ignoring.\n", arg);
+
466  } else if (disabled) {
+
467  av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches disabled streams.\n"
+
468  "To ignore this, add a trailing '?' to the map.\n", arg);
+
469  exit_program(1);
+
470  } else {
+
471  av_log(NULL, AV_LOG_FATAL, "Stream map '%s' matches no streams.\n"
+
472  "To ignore this, add a trailing '?' to the map.\n", arg);
+
473  exit_program(1);
+
474  }
+
475  }
+
476 
+
477  av_freep(&map);
+
478  return 0;
+
479 }
+
480 
+
481 int opt_attach(void *optctx, const char *opt, const char *arg)
+
482 {
+
483  OptionsContext *o = optctx;
+ +
485  o->attachments[o->nb_attachments - 1] = arg;
+
486  return 0;
+
487 }
+
488 
+
489 int opt_map_channel(void *optctx, const char *opt, const char *arg)
+
490 {
+
491  OptionsContext *o = optctx;
+
492  int n;
+
493  AVStream *st;
+
494  AudioChannelMap *m;
+
495  char *allow_unused;
+
496  char *mapchan;
+
497  mapchan = av_strdup(arg);
+
498  if (!mapchan)
+
499  return AVERROR(ENOMEM);
+
500 
+ + +
503 
+
504  /* muted channel syntax */
+
505  n = sscanf(arg, "%d:%d.%d", &m->channel_idx, &m->ofile_idx, &m->ostream_idx);
+
506  if ((n == 1 || n == 3) && m->channel_idx == -1) {
+
507  m->file_idx = m->stream_idx = -1;
+
508  if (n == 1)
+
509  m->ofile_idx = m->ostream_idx = -1;
+
510  av_free(mapchan);
+
511  return 0;
+
512  }
+
513 
+
514  /* normal syntax */
+
515  n = sscanf(arg, "%d.%d.%d:%d.%d",
+
516  &m->file_idx, &m->stream_idx, &m->channel_idx,
+
517  &m->ofile_idx, &m->ostream_idx);
+
518 
+
519  if (n != 3 && n != 5) {
+
520  av_log(NULL, AV_LOG_FATAL, "Syntax error, mapchan usage: "
+
521  "[file.stream.channel|-1][:syncfile:syncstream]\n");
+
522  exit_program(1);
+
523  }
+
524 
+
525  if (n != 5) // only file.stream.channel specified
+
526  m->ofile_idx = m->ostream_idx = -1;
+
527 
+
528  /* check input */
+
529  if (m->file_idx < 0 || m->file_idx >= nb_input_files) {
+
530  av_log(NULL, AV_LOG_FATAL, "mapchan: invalid input file index: %d\n",
+
531  m->file_idx);
+
532  exit_program(1);
+
533  }
+
534  if (m->stream_idx < 0 ||
+ +
536  av_log(NULL, AV_LOG_FATAL, "mapchan: invalid input file stream index #%d.%d\n",
+
537  m->file_idx, m->stream_idx);
+
538  exit_program(1);
+
539  }
+
540  st = input_files[m->file_idx]->ctx->streams[m->stream_idx];
+
541  if (st->codecpar->codec_type != AVMEDIA_TYPE_AUDIO) {
+
542  av_log(NULL, AV_LOG_FATAL, "mapchan: stream #%d.%d is not an audio stream.\n",
+
543  m->file_idx, m->stream_idx);
+
544  exit_program(1);
+
545  }
+
546  /* allow trailing ? to map_channel */
+
547  if ((allow_unused = strchr(mapchan, '?')))
+
548  *allow_unused = 0;
+
549  if (m->channel_idx < 0 || m->channel_idx >= st->codecpar->channels ||
+ +
551  if (allow_unused) {
+
552  av_log(NULL, AV_LOG_VERBOSE, "mapchan: invalid audio channel #%d.%d.%d\n",
+
553  m->file_idx, m->stream_idx, m->channel_idx);
+
554  } else {
+
555  av_log(NULL, AV_LOG_FATAL, "mapchan: invalid audio channel #%d.%d.%d\n"
+
556  "To ignore this, add a trailing '?' to the map_channel.\n",
+
557  m->file_idx, m->stream_idx, m->channel_idx);
+
558  exit_program(1);
+
559  }
+
560 
+
561  }
+
562  av_free(mapchan);
+
563  return 0;
+
564 }
+
565 
+
566 int opt_sdp_file(void *optctx, const char *opt, const char *arg)
+
567 {
+
568  av_free(sdp_filename);
+
569  sdp_filename = av_strdup(arg);
+
570  return 0;
+
571 }
+
572 
+
573 #if CONFIG_VAAPI
+
574 int opt_vaapi_device(void *optctx, const char *opt, const char *arg)
+
575 {
+
576  const char *prefix = "vaapi:";
+
577  char *tmp;
+
578  int err;
+
579  tmp = av_asprintf("%s%s", prefix, arg);
+
580  if (!tmp)
+
581  return AVERROR(ENOMEM);
+
582  err = hw_device_init_from_string(tmp, NULL);
+
583  av_free(tmp);
+
584  return err;
+
585 }
+
586 #endif
+
587 
+
588 #if CONFIG_QSV
+
589 static int opt_qsv_device(void *optctx, const char *opt, const char *arg)
+
590 {
+
591  const char *prefix = "qsv=__qsv_device:hw_any,child_device=";
+
592  int err;
+
593  char *tmp = av_asprintf("%s%s", prefix, arg);
+
594 
+
595  if (!tmp)
+
596  return AVERROR(ENOMEM);
+
597 
+
598  err = hw_device_init_from_string(tmp, NULL);
+
599  av_free(tmp);
+
600 
+
601  return err;
+
602 }
+
603 #endif
+
604 
+
605 int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
+
606 {
+
607  if (!strcmp(arg, "list")) {
+
608  enum AVHWDeviceType type = AV_HWDEVICE_TYPE_NONE;
+
609  av_log(NULL, AV_LOG_STDERR, "Supported hardware device types:\n");
+
610  while ((type = av_hwdevice_iterate_types(type)) !=
+
611  AV_HWDEVICE_TYPE_NONE)
+
612  av_log(NULL, AV_LOG_STDERR, "%s\n", av_hwdevice_get_type_name(type));
+
613  av_log(NULL, AV_LOG_STDERR, "\n");
+
614  exit_program(0);
+
615  } else {
+
616  return hw_device_init_from_string(arg, NULL);
+
617  }
+
618 }
+
619 
+
620 int opt_filter_hw_device(void *optctx, const char *opt, const char *arg)
+
621 {
+
622  if (filter_hw_device) {
+
623  av_log(NULL, AV_LOG_ERROR, "Only one filter device can be used.\n");
+
624  return AVERROR(EINVAL);
+
625  }
+ +
627  if (!filter_hw_device) {
+
628  av_log(NULL, AV_LOG_ERROR, "Invalid filter device %s.\n", arg);
+
629  return AVERROR(EINVAL);
+
630  }
+
631  return 0;
+
632 }
+
633 
+
641 void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec)
+
642 {
+
643  if (*arg) {
+
644  *type = *arg;
+
645  switch (*arg) {
+
646  case 'g':
+
647  break;
+
648  case 's':
+
649  if (*(++arg) && *arg != ':') {
+
650  av_log(NULL, AV_LOG_FATAL, "Invalid metadata specifier %s.\n", arg);
+
651  exit_program(1);
+
652  }
+
653  *stream_spec = *arg == ':' ? arg + 1 : "";
+
654  break;
+
655  case 'c':
+
656  case 'p':
+
657  if (*(++arg) == ':')
+
658  *index = strtol(++arg, NULL, 0);
+
659  break;
+
660  default:
+
661  av_log(NULL, AV_LOG_FATAL, "Invalid metadata type %c.\n", *arg);
+
662  exit_program(1);
+
663  }
+
664  } else
+
665  *type = 'g';
+
666 }
+
667 
+
668 int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
+
669 {
+
670  AVDictionary **meta_in = NULL;
+
671  AVDictionary **meta_out = NULL;
+
672  int i, ret = 0;
+
673  char type_in, type_out;
+
674  const char *istream_spec = NULL, *ostream_spec = NULL;
+
675  int idx_in = 0, idx_out = 0;
+
676 
+
677  parse_meta_type(inspec, &type_in, &idx_in, &istream_spec);
+
678  parse_meta_type(outspec, &type_out, &idx_out, &ostream_spec);
+
679 
+
680  if (!ic) {
+
681  if (type_out == 'g' || !*outspec)
+
682  o->metadata_global_manual = 1;
+
683  if (type_out == 's' || !*outspec)
+ +
685  if (type_out == 'c' || !*outspec)
+ +
687  return 0;
+
688  }
+
689 
+
690  if (type_in == 'g' || type_out == 'g')
+
691  o->metadata_global_manual = 1;
+
692  if (type_in == 's' || type_out == 's')
+ +
694  if (type_in == 'c' || type_out == 'c')
+ +
696 
+
697  /* ic is NULL when just disabling automatic mappings */
+
698  if (!ic)
+
699  return 0;
+
700 
+
701 #define METADATA_CHECK_INDEX(index, nb_elems, desc)\
+
702  if ((index) < 0 || (index) >= (nb_elems)) {\
+
703  av_log(NULL, AV_LOG_FATAL, "Invalid %s index %d while processing metadata maps.\n",\
+
704  (desc), (index));\
+
705  exit_program(1);\
+
706  }
+
707 
+
708 #define SET_DICT(type, meta, context, index)\
+
709  switch (type) {\
+
710  case 'g':\
+
711  meta = &context->metadata;\
+
712  break;\
+
713  case 'c':\
+
714  METADATA_CHECK_INDEX(index, context->nb_chapters, "chapter")\
+
715  meta = &context->chapters[index]->metadata;\
+
716  break;\
+
717  case 'p':\
+
718  METADATA_CHECK_INDEX(index, context->nb_programs, "program")\
+
719  meta = &context->programs[index]->metadata;\
+
720  break;\
+
721  case 's':\
+
722  break; /* handled separately below */ \
+
723  default: av_assert0(0);\
+
724  }\
+
725 
+
726  SET_DICT(type_in, meta_in, ic, idx_in);
+
727  SET_DICT(type_out, meta_out, oc, idx_out);
+
728 
+
729  /* for input streams choose first matching stream */
+
730  if (type_in == 's') {
+
731  for (i = 0; i < ic->nb_streams; i++) {
+
732  if ((ret = check_stream_specifier(ic, ic->streams[i], istream_spec)) > 0) {
+
733  meta_in = &ic->streams[i]->metadata;
+
734  break;
+
735  } else if (ret < 0)
+
736  exit_program(1);
+
737  }
+
738  if (!meta_in) {
+
739  av_log(NULL, AV_LOG_FATAL, "Stream specifier %s does not match any streams.\n", istream_spec);
+
740  exit_program(1);
+
741  }
+
742  }
+
743 
+
744  if (type_out == 's') {
+
745  for (i = 0; i < oc->nb_streams; i++) {
+
746  if ((ret = check_stream_specifier(oc, oc->streams[i], ostream_spec)) > 0) {
+
747  meta_out = &oc->streams[i]->metadata;
+
748  av_dict_copy(meta_out, *meta_in, AV_DICT_DONT_OVERWRITE);
+
749  } else if (ret < 0)
+
750  exit_program(1);
+
751  }
+
752  } else
+
753  av_dict_copy(meta_out, *meta_in, AV_DICT_DONT_OVERWRITE);
+
754 
+
755  return 0;
+
756 }
+
757 
+
758 int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
+
759 {
+
760  OptionsContext *o = optctx;
+
761  char buf[128];
+
762  int64_t recording_timestamp = parse_time_or_die(opt, arg, 0) / 1E6;
+
763  struct tm time = *gmtime((time_t*)&recording_timestamp);
+
764  if (!strftime(buf, sizeof(buf), "creation_time=%Y-%m-%dT%H:%M:%S%z", &time))
+
765  return -1;
+
766  parse_option(o, "metadata", buf, ffmpeg_options);
+
767 
+
768  av_log(NULL, AV_LOG_WARNING, "%s is deprecated, set the 'creation_time' metadata "
+
769  "tag instead.\n", opt);
+
770  return 0;
+
771 }
+
772 
+
773 const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
+
774 {
+
775  const AVCodecDescriptor *desc;
+
776  const char *codec_string = encoder ? "encoder" : "decoder";
+
777  const AVCodec *codec;
+
778 
+
779  codec = encoder ?
+
780  avcodec_find_encoder_by_name(name) :
+
781  avcodec_find_decoder_by_name(name);
+
782 
+
783  if (!codec && (desc = avcodec_descriptor_get_by_name(name))) {
+
784  codec = encoder ? avcodec_find_encoder(desc->id) :
+
785  avcodec_find_decoder(desc->id);
+
786  if (codec)
+
787  av_log(NULL, AV_LOG_VERBOSE, "Matched %s '%s' for codec '%s'.\n",
+
788  codec_string, codec->name, desc->name);
+
789  }
+
790 
+
791  if (!codec) {
+
792  av_log(NULL, AV_LOG_FATAL, "Unknown %s '%s'\n", codec_string, name);
+
793  exit_program(1);
+
794  }
+
795  if (codec->type != type && !recast_media) {
+
796  av_log(NULL, AV_LOG_FATAL, "Invalid %s type '%s'\n", codec_string, name);
+
797  exit_program(1);
+
798  }
+
799  return codec;
+
800 }
+
801 
+
802 const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
+
803 {
+
804  char *codec_name = NULL;
+
805 
+
806  MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st);
+
807  if (codec_name) {
+
808  const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
+
809  st->codecpar->codec_id = codec->id;
+
810  if (recast_media && st->codecpar->codec_type != codec->type)
+
811  st->codecpar->codec_type = codec->type;
+
812  return codec;
+
813  } else
+
814  return avcodec_find_decoder(st->codecpar->codec_id);
+
815 }
+
816 
+
817 /* Add all the streams from the given input file to the global
+
818  * list of input streams. */
+
819 void add_input_streams(OptionsContext *o, AVFormatContext *ic)
+
820 {
+
821  int i, ret;
+
822 
+
823  for (i = 0; i < ic->nb_streams; i++) {
+
824  AVStream *st = ic->streams[i];
+
825  AVCodecParameters *par = st->codecpar;
+
826  InputStream *ist = av_mallocz(sizeof(*ist));
+
827  char *framerate = NULL, *hwaccel_device = NULL;
+
828  const char *hwaccel = NULL;
+
829  char *hwaccel_output_format = NULL;
+
830  char *codec_tag = NULL;
+
831  char *next;
+
832  char *discard_str = NULL;
+
833  const AVClass *cc = avcodec_get_class();
+
834  const AVOption *discard_opt = av_opt_find(&cc, "skip_frame", NULL, 0, 0);
+
835 
+
836  if (!ist)
+
837  exit_program(1);
+
838 
+ + +
841 
+
842  ist->st = st;
+
843  ist->file_index = nb_input_files;
+
844  ist->discard = 1;
+
845  st->discard = AVDISCARD_ALL;
+
846  ist->nb_samples = 0;
+
847  ist->first_dts = AV_NOPTS_VALUE;
+
848  ist->min_pts = INT64_MAX;
+
849  ist->max_pts = INT64_MIN;
+
850 
+
851  ist->ts_scale = 1.0;
+
852  MATCH_PER_STREAM_OPT(ts_scale, dbl, ist->ts_scale, ic, st);
+
853 
+
854  ist->autorotate = 1;
+
855  MATCH_PER_STREAM_OPT(autorotate, i, ist->autorotate, ic, st);
+
856 
+
857  MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, ic, st);
+
858  if (codec_tag) {
+
859  uint32_t tag = strtol(codec_tag, &next, 0);
+
860  if (*next)
+
861  tag = AV_RL32(codec_tag);
+
862  st->codecpar->codec_tag = tag;
+
863  }
+
864 
+
865  ist->dec = choose_decoder(o, ic, st);
+
866  ist->decoder_opts = filter_codec_opts(o->g->codec_opts, ist->st->codecpar->codec_id, ic, st, ist->dec);
+
867 
+
868  ist->reinit_filters = -1;
+
869  MATCH_PER_STREAM_OPT(reinit_filters, i, ist->reinit_filters, ic, st);
+
870 
+
871  MATCH_PER_STREAM_OPT(discard, str, discard_str, ic, st);
+
872  ist->user_set_discard = AVDISCARD_NONE;
+
873 
+
874  if ((o->video_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) ||
+
875  (o->audio_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) ||
+
876  (o->subtitle_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) ||
+
877  (o->data_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_DATA))
+
878  ist->user_set_discard = AVDISCARD_ALL;
+
879 
+
880  if (discard_str && av_opt_eval_int(&cc, discard_opt, discard_str, &ist->user_set_discard) < 0) {
+
881  av_log(NULL, AV_LOG_ERROR, "Error parsing discard %s.\n",
+
882  discard_str);
+
883  exit_program(1);
+
884  }
+
885 
+
886  ist->filter_in_rescale_delta_last = AV_NOPTS_VALUE;
+
887 
+
888  ist->dec_ctx = avcodec_alloc_context3(ist->dec);
+
889  if (!ist->dec_ctx) {
+
890  av_log(NULL, AV_LOG_ERROR, "Error allocating the decoder context.\n");
+
891  exit_program(1);
+
892  }
+
893 
+
894  ret = avcodec_parameters_to_context(ist->dec_ctx, par);
+
895  if (ret < 0) {
+
896  av_log(NULL, AV_LOG_ERROR, "Error initializing the decoder context.\n");
+
897  exit_program(1);
+
898  }
+
899 
+
900  if (o->bitexact)
+
901  ist->dec_ctx->flags |= AV_CODEC_FLAG_BITEXACT;
+
902 
+
903  switch (par->codec_type) {
+
904  case AVMEDIA_TYPE_VIDEO:
+
905  if(!ist->dec)
+
906  ist->dec = avcodec_find_decoder(par->codec_id);
+
907 
+
908  // avformat_find_stream_info() doesn't set this for us anymore.
+
909  ist->dec_ctx->framerate = st->avg_frame_rate;
+
910 
+
911  MATCH_PER_STREAM_OPT(frame_rates, str, framerate, ic, st);
+
912  if (framerate && av_parse_video_rate(&ist->framerate,
+
913  framerate) < 0) {
+
914  av_log(NULL, AV_LOG_ERROR, "Error parsing framerate %s.\n",
+
915  framerate);
+
916  exit_program(1);
+
917  }
+
918 
+
919  ist->top_field_first = -1;
+
920  MATCH_PER_STREAM_OPT(top_field_first, i, ist->top_field_first, ic, st);
+
921 
+
922  MATCH_PER_STREAM_OPT(hwaccels, str, hwaccel, ic, st);
+
923  MATCH_PER_STREAM_OPT(hwaccel_output_formats, str,
+
924  hwaccel_output_format, ic, st);
+
925 
+
926  if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel, "cuvid")) {
+
927  av_log(NULL, AV_LOG_WARNING,
+
928  "WARNING: defaulting hwaccel_output_format to cuda for compatibility "
+
929  "with old commandlines. This behaviour is DEPRECATED and will be removed "
+
930  "in the future. Please explicitly set \"-hwaccel_output_format cuda\".\n");
+
931  ist->hwaccel_output_format = AV_PIX_FMT_CUDA;
+
932  } else if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel, "qsv")) {
+
933  av_log(NULL, AV_LOG_WARNING,
+
934  "WARNING: defaulting hwaccel_output_format to qsv for compatibility "
+
935  "with old commandlines. This behaviour is DEPRECATED and will be removed "
+
936  "in the future. Please explicitly set \"-hwaccel_output_format qsv\".\n");
+
937  ist->hwaccel_output_format = AV_PIX_FMT_QSV;
+
938  } else if (hwaccel_output_format) {
+
939  ist->hwaccel_output_format = av_get_pix_fmt(hwaccel_output_format);
+
940  if (ist->hwaccel_output_format == AV_PIX_FMT_NONE) {
+
941  av_log(NULL, AV_LOG_FATAL, "Unrecognised hwaccel output "
+
942  "format: %s", hwaccel_output_format);
+
943  }
+
944  } else {
+
945  ist->hwaccel_output_format = AV_PIX_FMT_NONE;
+
946  }
+
947 
+
948  if (hwaccel) {
+
949  // The NVDEC hwaccels use a CUDA device, so remap the name here.
+
950  if (!strcmp(hwaccel, "nvdec") || !strcmp(hwaccel, "cuvid"))
+
951  hwaccel = "cuda";
+
952 
+
953  if (!strcmp(hwaccel, "none"))
+
954  ist->hwaccel_id = HWACCEL_NONE;
+
955  else if (!strcmp(hwaccel, "auto"))
+
956  ist->hwaccel_id = HWACCEL_AUTO;
+
957  else {
+
958  enum AVHWDeviceType type;
+
959  int i;
+
960  for (i = 0; hwaccels[i].name; i++) {
+
961  if (!strcmp(hwaccels[i].name, hwaccel)) {
+
962  ist->hwaccel_id = hwaccels[i].id;
+
963  break;
+
964  }
+
965  }
+
966 
+
967  if (!ist->hwaccel_id) {
+
968  type = av_hwdevice_find_type_by_name(hwaccel);
+
969  if (type != AV_HWDEVICE_TYPE_NONE) {
+
970  ist->hwaccel_id = HWACCEL_GENERIC;
+
971  ist->hwaccel_device_type = type;
+
972  }
+
973  }
+
974 
+
975  if (!ist->hwaccel_id) {
+
976  av_log(NULL, AV_LOG_FATAL, "Unrecognized hwaccel: %s.\n",
+
977  hwaccel);
+
978  av_log(NULL, AV_LOG_FATAL, "Supported hwaccels: ");
+
979  type = AV_HWDEVICE_TYPE_NONE;
+
980  while ((type = av_hwdevice_iterate_types(type)) !=
+
981  AV_HWDEVICE_TYPE_NONE)
+
982  av_log(NULL, AV_LOG_FATAL, "%s ",
+
983  av_hwdevice_get_type_name(type));
+
984  av_log(NULL, AV_LOG_FATAL, "\n");
+
985  exit_program(1);
+
986  }
+
987  }
+
988  }
+
989 
+
990  MATCH_PER_STREAM_OPT(hwaccel_devices, str, hwaccel_device, ic, st);
+
991  if (hwaccel_device) {
+
992  ist->hwaccel_device = av_strdup(hwaccel_device);
+
993  if (!ist->hwaccel_device)
+
994  exit_program(1);
+
995  }
+
996 
+
997  ist->hwaccel_pix_fmt = AV_PIX_FMT_NONE;
+
998 
+
999  break;
+
1000  case AVMEDIA_TYPE_AUDIO:
+
1001  ist->guess_layout_max = INT_MAX;
+
1002  MATCH_PER_STREAM_OPT(guess_layout_max, i, ist->guess_layout_max, ic, st);
+ +
1004  break;
+
1005  case AVMEDIA_TYPE_DATA:
+
1006  case AVMEDIA_TYPE_SUBTITLE: {
+
1007  char *canvas_size = NULL;
+
1008  if(!ist->dec)
+
1009  ist->dec = avcodec_find_decoder(par->codec_id);
+
1010  MATCH_PER_STREAM_OPT(fix_sub_duration, i, ist->fix_sub_duration, ic, st);
+
1011  MATCH_PER_STREAM_OPT(canvas_sizes, str, canvas_size, ic, st);
+
1012  if (canvas_size &&
+
1013  av_parse_video_size(&ist->dec_ctx->width, &ist->dec_ctx->height, canvas_size) < 0) {
+
1014  av_log(NULL, AV_LOG_FATAL, "Invalid canvas size: %s.\n", canvas_size);
+
1015  exit_program(1);
+
1016  }
+
1017  break;
+
1018  }
+
1019  case AVMEDIA_TYPE_ATTACHMENT:
+
1020  case AVMEDIA_TYPE_UNKNOWN:
+
1021  break;
+
1022  default:
+
1023  abort();
+
1024  }
+
1025 
+
1026  ret = avcodec_parameters_from_context(par, ist->dec_ctx);
+
1027  if (ret < 0) {
+
1028  av_log(NULL, AV_LOG_ERROR, "Error initializing the decoder context.\n");
+
1029  exit_program(1);
+
1030  }
+
1031  }
+
1032 }
+
1033 
+
1034 void assert_file_overwrite(const char *filename)
+
1035 {
+
1036  const char *proto_name = avio_find_protocol_name(filename);
+
1037 
+ +
1039  fprintf(stderr, "Error, both -y and -n supplied. Exiting.\n");
+
1040  exit_program(1);
+
1041  }
+
1042 
+
1043  if (!file_overwrite) {
+
1044  if (proto_name && !strcmp(proto_name, "file") && avio_check(filename, 0) == 0) {
+ +
1046  fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
+
1047  fflush(stderr);
+
1048  term_exit();
+
1049  signal(SIGINT, SIG_DFL);
+
1050  if (!read_yesno()) {
+
1051  av_log(NULL, AV_LOG_FATAL, "Not overwriting - exiting\n");
+
1052  exit_program(1);
+
1053  }
+
1054  term_init();
+
1055  }
+
1056  else {
+
1057  av_log(NULL, AV_LOG_FATAL, "File '%s' already exists. Exiting.\n", filename);
+
1058  exit_program(1);
+
1059  }
+
1060  }
+
1061  }
+
1062 
+
1063  if (proto_name && !strcmp(proto_name, "file")) {
+
1064  for (int i = 0; i < nb_input_files; i++) {
+
1065  InputFile *file = input_files[i];
+
1066  if (file->ctx->iformat->flags & AVFMT_NOFILE)
+
1067  continue;
+
1068  if (!strcmp(filename, file->ctx->url)) {
+
1069  av_log(NULL, AV_LOG_FATAL, "Output %s same as Input #%d - exiting\n", filename, i);
+
1070  av_log(NULL, AV_LOG_WARNING, "FFmpeg cannot edit existing files in-place.\n");
+
1071  exit_program(1);
+
1072  }
+
1073  }
+
1074  }
+
1075 }
+
1076 
+
1077 void dump_attachment(AVStream *st, const char *filename)
+
1078 {
+
1079  int ret;
+
1080  AVIOContext *out = NULL;
+
1081  AVDictionaryEntry *e;
+
1082 
+
1083  if (!st->codecpar->extradata_size) {
+
1084  av_log(NULL, AV_LOG_WARNING, "No extradata to dump in stream #%d:%d.\n",
+
1085  nb_input_files - 1, st->index);
+
1086  return;
+
1087  }
+
1088  if (!*filename && (e = av_dict_get(st->metadata, "filename", NULL, 0)))
+
1089  filename = e->value;
+
1090  if (!*filename) {
+
1091  av_log(NULL, AV_LOG_FATAL, "No filename specified and no 'filename' tag"
+
1092  "in stream #%d:%d.\n", nb_input_files - 1, st->index);
+
1093  exit_program(1);
+
1094  }
+
1095 
+
1096  assert_file_overwrite(filename);
+
1097 
+
1098  if ((ret = avio_open2(&out, filename, AVIO_FLAG_WRITE, &int_cb, NULL)) < 0) {
+
1099  av_log(NULL, AV_LOG_FATAL, "Could not open file %s for writing.\n",
+
1100  filename);
+
1101  exit_program(1);
+
1102  }
+
1103 
+
1104  avio_write(out, st->codecpar->extradata, st->codecpar->extradata_size);
+
1105  avio_flush(out);
+
1106  avio_close(out);
+
1107 }
+
1108 
+
1109 int open_input_file(OptionsContext *o, const char *filename)
+
1110 {
+
1111  InputFile *f;
+
1112  AVFormatContext *ic;
+
1113  const AVInputFormat *file_iformat = NULL;
+
1114  int err, i, ret;
+
1115  int64_t timestamp;
+
1116  AVDictionary *unused_opts = NULL;
+
1117  AVDictionaryEntry *e = NULL;
+
1118  char * video_codec_name = NULL;
+
1119  char * audio_codec_name = NULL;
+
1120  char *subtitle_codec_name = NULL;
+
1121  char * data_codec_name = NULL;
+
1122  int scan_all_pmts_set = 0;
+
1123 
+
1124  if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) {
+
1125  o->stop_time = INT64_MAX;
+
1126  av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n");
+
1127  }
+
1128 
+
1129  if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) {
+
1130  int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time;
+
1131  if (o->stop_time <= start_time) {
+
1132  av_log(NULL, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n");
+
1133  exit_program(1);
+
1134  } else {
+
1135  o->recording_time = o->stop_time - start_time;
+
1136  }
+
1137  }
+
1138 
+
1139  if (o->format) {
+
1140  if (!(file_iformat = av_find_input_format(o->format))) {
+
1141  av_log(NULL, AV_LOG_FATAL, "Unknown input format: '%s'\n", o->format);
+
1142  exit_program(1);
+
1143  }
+
1144  }
+
1145 
+
1146  if (!strcmp(filename, "-"))
+
1147  filename = "pipe:";
+
1148 
+
1149  stdin_interaction &= strncmp(filename, "pipe:", 5) &&
+
1150  strcmp(filename, "/dev/stdin");
+
1151 
+
1152  /* get default parameters from command line */
+
1153  ic = avformat_alloc_context();
+
1154  if (!ic) {
+
1155  print_error(filename, AVERROR(ENOMEM));
+
1156  exit_program(1);
+
1157  }
+
1158  if (o->nb_audio_sample_rate) {
+
1159  av_dict_set_int(&o->g->format_opts, "sample_rate", o->audio_sample_rate[o->nb_audio_sample_rate - 1].u.i, 0);
+
1160  }
+
1161  if (o->nb_audio_channels) {
+
1162  const AVClass *priv_class;
+
1163  /* because we set audio_channels based on both the "ac" and
+
1164  * "channel_layout" options, we need to check that the specified
+
1165  * demuxer actually has the "channels" option before setting it */
+
1166  if (file_iformat && (priv_class = file_iformat->priv_class) &&
+
1167  av_opt_find(&priv_class, "channels", NULL, 0,
+
1168  AV_OPT_SEARCH_FAKE_OBJ)) {
+
1169  av_dict_set_int(&o->g->format_opts, "channels", o->audio_channels[o->nb_audio_channels - 1].u.i, 0);
+
1170  }
+
1171  }
+
1172  if (o->nb_frame_rates) {
+
1173  const AVClass *priv_class;
+
1174  /* set the format-level framerate option;
+
1175  * this is important for video grabbers, e.g. x11 */
+
1176  if (file_iformat && (priv_class = file_iformat->priv_class) &&
+
1177  av_opt_find(&priv_class, "framerate", NULL, 0,
+
1178  AV_OPT_SEARCH_FAKE_OBJ)) {
+
1179  av_dict_set(&o->g->format_opts, "framerate",
+
1180  o->frame_rates[o->nb_frame_rates - 1].u.str, 0);
+
1181  }
+
1182  }
+
1183  if (o->nb_frame_sizes) {
+
1184  av_dict_set(&o->g->format_opts, "video_size", o->frame_sizes[o->nb_frame_sizes - 1].u.str, 0);
+
1185  }
+
1186  if (o->nb_frame_pix_fmts)
+
1187  av_dict_set(&o->g->format_opts, "pixel_format", o->frame_pix_fmts[o->nb_frame_pix_fmts - 1].u.str, 0);
+
1188 
+
1189  MATCH_PER_TYPE_OPT(codec_names, str, video_codec_name, ic, "v");
+
1190  MATCH_PER_TYPE_OPT(codec_names, str, audio_codec_name, ic, "a");
+
1191  MATCH_PER_TYPE_OPT(codec_names, str, subtitle_codec_name, ic, "s");
+
1192  MATCH_PER_TYPE_OPT(codec_names, str, data_codec_name, ic, "d");
+
1193 
+
1194  if (video_codec_name)
+
1195  ic->video_codec = find_codec_or_die(video_codec_name , AVMEDIA_TYPE_VIDEO , 0);
+
1196  if (audio_codec_name)
+
1197  ic->audio_codec = find_codec_or_die(audio_codec_name , AVMEDIA_TYPE_AUDIO , 0);
+
1198  if (subtitle_codec_name)
+
1199  ic->subtitle_codec = find_codec_or_die(subtitle_codec_name, AVMEDIA_TYPE_SUBTITLE, 0);
+
1200  if (data_codec_name)
+
1201  ic->data_codec = find_codec_or_die(data_codec_name , AVMEDIA_TYPE_DATA , 0);
+
1202 
+
1203  ic->video_codec_id = video_codec_name ? ic->video_codec->id : AV_CODEC_ID_NONE;
+
1204  ic->audio_codec_id = audio_codec_name ? ic->audio_codec->id : AV_CODEC_ID_NONE;
+
1205  ic->subtitle_codec_id = subtitle_codec_name ? ic->subtitle_codec->id : AV_CODEC_ID_NONE;
+
1206  ic->data_codec_id = data_codec_name ? ic->data_codec->id : AV_CODEC_ID_NONE;
+
1207 
+
1208  ic->flags |= AVFMT_FLAG_NONBLOCK;
+
1209  if (o->bitexact)
+
1210  ic->flags |= AVFMT_FLAG_BITEXACT;
+
1211  ic->interrupt_callback = int_cb;
+
1212 
+
1213  if (!av_dict_get(o->g->format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) {
+
1214  av_dict_set(&o->g->format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE);
+
1215  scan_all_pmts_set = 1;
+
1216  }
+
1217  /* open the input file with generic avformat function */
+
1218  err = avformat_open_input(&ic, filename, file_iformat, &o->g->format_opts);
+
1219  if (err < 0) {
+
1220  print_error(filename, err);
+
1221  if (err == AVERROR_PROTOCOL_NOT_FOUND)
+
1222  av_log(NULL, AV_LOG_ERROR, "Did you mean file:%s?\n", filename);
+
1223  exit_program(1);
+
1224  }
+
1225  if (scan_all_pmts_set)
+
1226  av_dict_set(&o->g->format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
+ + +
1229 
+
1230  /* apply forced codec ids */
+
1231  for (i = 0; i < ic->nb_streams; i++)
+
1232  choose_decoder(o, ic, ic->streams[i]);
+
1233 
+
1234  if (find_stream_info) {
+
1235  AVDictionary **opts = setup_find_stream_info_opts(ic, o->g->codec_opts);
+
1236  int orig_nb_streams = ic->nb_streams;
+
1237 
+
1238  /* If not enough info to get the stream parameters, we decode the
+
1239  first frames to get it. (used in mpeg case for example) */
+
1240  ret = avformat_find_stream_info(ic, opts);
+
1241 
+
1242  for (i = 0; i < orig_nb_streams; i++)
+
1243  av_dict_free(&opts[i]);
+
1244  av_freep(&opts);
+
1245 
+
1246  if (ret < 0) {
+
1247  av_log(NULL, AV_LOG_FATAL, "%s: could not find codec parameters\n", filename);
+
1248  if (ic->nb_streams == 0) {
+
1249  avformat_close_input(&ic);
+
1250  exit_program(1);
+
1251  }
+
1252  }
+
1253  }
+
1254 
+
1255  if (o->start_time != AV_NOPTS_VALUE && o->start_time_eof != AV_NOPTS_VALUE) {
+
1256  av_log(NULL, AV_LOG_WARNING, "Cannot use -ss and -sseof both, using -ss for %s\n", filename);
+
1257  o->start_time_eof = AV_NOPTS_VALUE;
+
1258  }
+
1259 
+
1260  if (o->start_time_eof != AV_NOPTS_VALUE) {
+
1261  if (o->start_time_eof >= 0) {
+
1262  av_log(NULL, AV_LOG_ERROR, "-sseof value must be negative; aborting\n");
+
1263  exit_program(1);
+
1264  }
+
1265  if (ic->duration > 0) {
+
1266  o->start_time = o->start_time_eof + ic->duration;
+
1267  if (o->start_time < 0) {
+
1268  av_log(NULL, AV_LOG_WARNING, "-sseof value seeks to before start of file %s; ignored\n", filename);
+
1269  o->start_time = AV_NOPTS_VALUE;
+
1270  }
+
1271  } else
+
1272  av_log(NULL, AV_LOG_WARNING, "Cannot use -sseof, duration of %s not known\n", filename);
+
1273  }
+
1274  timestamp = (o->start_time == AV_NOPTS_VALUE) ? 0 : o->start_time;
+
1275  /* add the stream start time */
+
1276  if (!o->seek_timestamp && ic->start_time != AV_NOPTS_VALUE)
+
1277  timestamp += ic->start_time;
+
1278 
+
1279  /* if seeking requested, we execute it */
+
1280  if (o->start_time != AV_NOPTS_VALUE) {
+
1281  int64_t seek_timestamp = timestamp;
+
1282 
+
1283  if (!(ic->iformat->flags & AVFMT_SEEK_TO_PTS)) {
+
1284  int dts_heuristic = 0;
+
1285  for (i=0; i<ic->nb_streams; i++) {
+
1286  const AVCodecParameters *par = ic->streams[i]->codecpar;
+
1287  if (par->video_delay) {
+
1288  dts_heuristic = 1;
+
1289  break;
+
1290  }
+
1291  }
+
1292  if (dts_heuristic) {
+
1293  seek_timestamp -= 3*AV_TIME_BASE / 23;
+
1294  }
+
1295  }
+
1296  ret = avformat_seek_file(ic, -1, INT64_MIN, seek_timestamp, seek_timestamp, 0);
+
1297  if (ret < 0) {
+
1298  av_log(NULL, AV_LOG_WARNING, "%s: could not seek to position %0.3f\n",
+
1299  filename, (double)timestamp / AV_TIME_BASE);
+
1300  }
+
1301  }
+
1302 
+
1303  /* update the current parameters so that they match the one of the input stream */
+
1304  add_input_streams(o, ic);
+
1305 
+
1306  /* dump the file content */
+
1307  av_dump_format(ic, nb_input_files, filename, 0);
+
1308 
+ +
1310  f = av_mallocz(sizeof(*f));
+
1311  if (!f)
+
1312  exit_program(1);
+
1313  input_files[nb_input_files - 1] = f;
+
1314 
+
1315  f->ctx = ic;
+
1316  f->ist_index = nb_input_streams - ic->nb_streams;
+
1317  f->start_time = o->start_time;
+ + +
1320  f->ts_offset = o->input_ts_offset - (copy_ts ? (start_at_zero && ic->start_time != AV_NOPTS_VALUE ? ic->start_time : 0) : timestamp);
+
1321  f->nb_streams = ic->nb_streams;
+
1322  f->rate_emu = o->rate_emu;
+
1323  f->accurate_seek = o->accurate_seek;
+
1324  f->loop = o->loop;
+
1325  f->duration = 0;
+
1326  f->time_base = (AVRational){ 1, 1 };
+
1327 
+
1328  f->readrate = o->readrate ? o->readrate : 0.0;
+
1329  if (f->readrate < 0.0f) {
+
1330  av_log(NULL, AV_LOG_ERROR, "Option -readrate for Input #%d is %0.3f; it must be non-negative.\n", nb_input_files, f->readrate);
+
1331  exit_program(1);
+
1332  }
+
1333  if (f->readrate && f->rate_emu) {
+
1334  av_log(NULL, AV_LOG_WARNING, "Both -readrate and -re set for Input #%d. Using -readrate %0.3f.\n", nb_input_files, f->readrate);
+
1335  f->rate_emu = 0;
+
1336  }
+
1337 
+
1338  f->pkt = av_packet_alloc();
+
1339  if (!f->pkt)
+
1340  exit_program(1);
+
1341 #if HAVE_THREADS
+
1342  f->thread_queue_size = o->thread_queue_size;
+
1343 #endif
+
1344 
+
1345  /* check if all codec options have been used */
+
1346  unused_opts = strip_specifiers(o->g->codec_opts);
+
1347  for (i = f->ist_index; i < nb_input_streams; i++) {
+
1348  e = NULL;
+
1349  while ((e = av_dict_get(input_streams[i]->decoder_opts, "", e,
+
1350  AV_DICT_IGNORE_SUFFIX)))
+
1351  av_dict_set(&unused_opts, e->key, NULL, 0);
+
1352  }
+
1353 
+
1354  e = NULL;
+
1355  while ((e = av_dict_get(unused_opts, "", e, AV_DICT_IGNORE_SUFFIX))) {
+
1356  const AVClass *class = avcodec_get_class();
+
1357  const AVOption *option = av_opt_find(&class, e->key, NULL, 0,
+
1358  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ);
+
1359  const AVClass *fclass = avformat_get_class();
+
1360  const AVOption *foption = av_opt_find(&fclass, e->key, NULL, 0,
+
1361  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ);
+
1362  if (!option || foption)
+
1363  continue;
+
1364 
+
1365 
+
1366  if (!(option->flags & AV_OPT_FLAG_DECODING_PARAM)) {
+
1367  av_log(NULL, AV_LOG_ERROR, "Codec AVOption %s (%s) specified for "
+
1368  "input file #%d (%s) is not a decoding option.\n", e->key,
+
1369  option->help ? option->help : "", nb_input_files - 1,
+
1370  filename);
+
1371  exit_program(1);
+
1372  }
+
1373 
+
1374  av_log(NULL, AV_LOG_WARNING, "Codec AVOption %s (%s) specified for "
+
1375  "input file #%d (%s) has not been used for any stream. The most "
+
1376  "likely reason is either wrong type (e.g. a video option with "
+
1377  "no video streams) or that it is a private option of some decoder "
+
1378  "which was not actually used for any stream.\n", e->key,
+
1379  option->help ? option->help : "", nb_input_files - 1, filename);
+
1380  }
+
1381  av_dict_free(&unused_opts);
+
1382 
+
1383  for (i = 0; i < o->nb_dump_attachment; i++) {
+
1384  int j;
+
1385 
+
1386  for (j = 0; j < ic->nb_streams; j++) {
+
1387  AVStream *st = ic->streams[j];
+
1388 
+
1389  if (check_stream_specifier(ic, st, o->dump_attachment[i].specifier) == 1)
+
1390  dump_attachment(st, o->dump_attachment[i].u.str);
+
1391  }
+
1392  }
+
1393 
+ +
1395 
+
1396  return 0;
+
1397 }
+
1398 
+
1399 uint8_t *get_line(AVIOContext *s)
+
1400 {
+
1401  AVIOContext *line;
+
1402  uint8_t *buf;
+
1403  char c;
+
1404 
+
1405  if (avio_open_dyn_buf(&line) < 0) {
+
1406  av_log(NULL, AV_LOG_FATAL, "Could not alloc buffer for reading preset.\n");
+
1407  exit_program(1);
+
1408  }
+
1409 
+
1410  while ((c = avio_r8(s)) && c != '\n')
+
1411  avio_w8(line, c);
+
1412  avio_w8(line, 0);
+
1413  avio_close_dyn_buf(line, &buf);
+
1414 
+
1415  return buf;
+
1416 }
+
1417 
+
1418 int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s)
+
1419 {
+
1420  int i, ret = -1;
+
1421  char filename[1000];
+
1422  const char *base[3] = { getenv("AVCONV_DATADIR"),
+
1423  getenv("HOME"),
+
1424  AVCONV_DATADIR,
+
1425  };
+
1426 
+
1427  for (i = 0; i < FF_ARRAY_ELEMS(base) && ret < 0; i++) {
+
1428  if (!base[i])
+
1429  continue;
+
1430  if (codec_name) {
+
1431  snprintf(filename, sizeof(filename), "%s%s/%s-%s.avpreset", base[i],
+
1432  i != 1 ? "" : "/.avconv", codec_name, preset_name);
+
1433  ret = avio_open2(s, filename, AVIO_FLAG_READ, &int_cb, NULL);
+
1434  }
+
1435  if (ret < 0) {
+
1436  snprintf(filename, sizeof(filename), "%s%s/%s.avpreset", base[i],
+
1437  i != 1 ? "" : "/.avconv", preset_name);
+
1438  ret = avio_open2(s, filename, AVIO_FLAG_READ, &int_cb, NULL);
+
1439  }
+
1440  }
+
1441  return ret;
+
1442 }
+
1443 
+
1444 int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost)
+
1445 {
+
1446  enum AVMediaType type = ost->st->codecpar->codec_type;
+
1447  char *codec_name = NULL;
+
1448 
+
1449  if (type == AVMEDIA_TYPE_VIDEO || type == AVMEDIA_TYPE_AUDIO || type == AVMEDIA_TYPE_SUBTITLE) {
+
1450  MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, ost->st);
+
1451  if (!codec_name) {
+
1452  ost->st->codecpar->codec_id = av_guess_codec(s->oformat, NULL, s->url,
+
1453  NULL, ost->st->codecpar->codec_type);
+
1454  ost->enc = avcodec_find_encoder(ost->st->codecpar->codec_id);
+
1455  if (!ost->enc) {
+
1456  av_log(NULL, AV_LOG_FATAL, "Automatic encoder selection failed for "
+
1457  "output stream #%d:%d. Default encoder for format %s (codec %s) is "
+
1458  "probably disabled. Please choose an encoder manually.\n",
+
1459  ost->file_index, ost->index, s->oformat->name,
+
1460  avcodec_get_name(ost->st->codecpar->codec_id));
+
1461  return AVERROR_ENCODER_NOT_FOUND;
+
1462  }
+
1463  } else if (!strcmp(codec_name, "copy"))
+
1464  ost->stream_copy = 1;
+
1465  else {
+
1466  ost->enc = find_codec_or_die(codec_name, ost->st->codecpar->codec_type, 1);
+
1467  ost->st->codecpar->codec_id = ost->enc->id;
+
1468  }
+ +
1470  } else {
+
1471  /* no encoding supported for other media types */
+
1472  ost->stream_copy = 1;
+
1473  ost->encoding_needed = 0;
+
1474  }
+
1475 
+
1476  return 0;
+
1477 }
+
1478 
+
1479 OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
+
1480 {
+
1481  OutputStream *ost;
+
1482  AVStream *st = avformat_new_stream(oc, NULL);
+
1483  int idx = oc->nb_streams - 1, ret = 0;
+
1484  const char *bsfs = NULL, *time_base = NULL;
+
1485  char *next, *codec_tag = NULL;
+
1486  double qscale = -1;
+
1487  int i;
+
1488 
+
1489  if (!st) {
+
1490  av_log(NULL, AV_LOG_FATAL, "Could not alloc stream.\n");
+
1491  exit_program(1);
+
1492  }
+
1493 
+
1494  if (oc->nb_streams - 1 < o->nb_streamid_map)
+
1495  st->id = o->streamid_map[oc->nb_streams - 1];
+
1496 
+ +
1498  if (!(ost = av_mallocz(sizeof(*ost))))
+
1499  exit_program(1);
+ +
1501 
+ +
1503  ost->index = idx;
+
1504  ost->st = st;
+
1505  ost->forced_kf_ref_pts = AV_NOPTS_VALUE;
+
1506  st->codecpar->codec_type = type;
+
1507 
+
1508  ret = choose_encoder(o, oc, ost);
+
1509  if (ret < 0) {
+
1510  av_log(NULL, AV_LOG_FATAL, "Error selecting an encoder for stream "
+
1511  "%d:%d\n", ost->file_index, ost->index);
+
1512  exit_program(1);
+
1513  }
+
1514 
+
1515  ost->enc_ctx = avcodec_alloc_context3(ost->enc);
+
1516  if (!ost->enc_ctx) {
+
1517  av_log(NULL, AV_LOG_ERROR, "Error allocating the encoding context.\n");
+
1518  exit_program(1);
+
1519  }
+
1520  ost->enc_ctx->codec_type = type;
+
1521 
+
1522  ost->ref_par = avcodec_parameters_alloc();
+
1523  if (!ost->ref_par) {
+
1524  av_log(NULL, AV_LOG_ERROR, "Error allocating the encoding parameters.\n");
+
1525  exit_program(1);
+
1526  }
+
1527 
+
1528  if (ost->enc) {
+
1529  AVIOContext *s = NULL;
+
1530  char *buf = NULL, *arg = NULL, *preset = NULL;
+
1531 
+
1532  ost->encoder_opts = filter_codec_opts(o->g->codec_opts, ost->enc->id, oc, st, ost->enc);
+
1533 
+
1534  MATCH_PER_STREAM_OPT(presets, str, preset, oc, st);
+
1535  ost->autoscale = 1;
+
1536  MATCH_PER_STREAM_OPT(autoscale, i, ost->autoscale, oc, st);
+
1537  if (preset && (!(ret = get_preset_file_2(preset, ost->enc->name, &s)))) {
+
1538  do {
+
1539  buf = get_line(s);
+
1540  if (!buf[0] || buf[0] == '#') {
+
1541  av_free(buf);
+
1542  continue;
+
1543  }
+
1544  if (!(arg = strchr(buf, '='))) {
+
1545  av_log(NULL, AV_LOG_FATAL, "Invalid line found in the preset file.\n");
+
1546  exit_program(1);
+
1547  }
+
1548  *arg++ = 0;
+
1549  av_dict_set(&ost->encoder_opts, buf, arg, AV_DICT_DONT_OVERWRITE);
+
1550  av_free(buf);
+
1551  } while (!s->eof_reached);
+
1552  avio_closep(&s);
+
1553  }
+
1554  if (ret) {
+
1555  av_log(NULL, AV_LOG_FATAL,
+
1556  "Preset %s specified for stream %d:%d, but could not be opened.\n",
+
1557  preset, ost->file_index, ost->index);
+
1558  exit_program(1);
+
1559  }
+
1560  } else {
+
1561  ost->encoder_opts = filter_codec_opts(o->g->codec_opts, AV_CODEC_ID_NONE, oc, st, NULL);
+
1562  }
+
1563 
+
1564 
+
1565  if (o->bitexact)
+
1566  ost->enc_ctx->flags |= AV_CODEC_FLAG_BITEXACT;
+
1567 
+
1568  MATCH_PER_STREAM_OPT(time_bases, str, time_base, oc, st);
+
1569  if (time_base) {
+
1570  AVRational q;
+
1571  if (av_parse_ratio(&q, time_base, INT_MAX, 0, NULL) < 0 ||
+
1572  q.num <= 0 || q.den <= 0) {
+
1573  av_log(NULL, AV_LOG_FATAL, "Invalid time base: %s\n", time_base);
+
1574  exit_program(1);
+
1575  }
+
1576  st->time_base = q;
+
1577  }
+
1578 
+
1579  MATCH_PER_STREAM_OPT(enc_time_bases, str, time_base, oc, st);
+
1580  if (time_base) {
+
1581  AVRational q;
+
1582  if (av_parse_ratio(&q, time_base, INT_MAX, 0, NULL) < 0 ||
+
1583  q.den <= 0) {
+
1584  av_log(NULL, AV_LOG_FATAL, "Invalid time base: %s\n", time_base);
+
1585  exit_program(1);
+
1586  }
+
1587  ost->enc_timebase = q;
+
1588  }
+
1589 
+
1590  ost->max_frames = INT64_MAX;
+
1591  MATCH_PER_STREAM_OPT(max_frames, i64, ost->max_frames, oc, st);
+
1592  for (i = 0; i<o->nb_max_frames; i++) {
+
1593  char *p = o->max_frames[i].specifier;
+
1594  if (!*p && type != AVMEDIA_TYPE_VIDEO) {
+
1595  av_log(NULL, AV_LOG_WARNING, "Applying unspecific -frames to non video streams, maybe you meant -vframes ?\n");
+
1596  break;
+
1597  }
+
1598  }
+
1599 
+
1600  ost->copy_prior_start = -1;
+
1601  MATCH_PER_STREAM_OPT(copy_prior_start, i, ost->copy_prior_start, oc ,st);
+
1602 
+
1603  MATCH_PER_STREAM_OPT(bitstream_filters, str, bsfs, oc, st);
+
1604  if (bsfs && *bsfs) {
+
1605  ret = av_bsf_list_parse_str(bsfs, &ost->bsf_ctx);
+
1606  if (ret < 0) {
+
1607  av_log(NULL, AV_LOG_ERROR, "Error parsing bitstream filter sequence '%s': %s\n", bsfs, av_err2str(ret));
+
1608  exit_program(1);
+
1609  }
+
1610  }
+
1611 
+
1612  MATCH_PER_STREAM_OPT(codec_tags, str, codec_tag, oc, st);
+
1613  if (codec_tag) {
+
1614  uint32_t tag = strtol(codec_tag, &next, 0);
+
1615  if (*next)
+
1616  tag = AV_RL32(codec_tag);
+
1617  ost->st->codecpar->codec_tag =
+
1618  ost->enc_ctx->codec_tag = tag;
+
1619  }
+
1620 
+
1621  MATCH_PER_STREAM_OPT(qscale, dbl, qscale, oc, st);
+
1622  if (qscale >= 0) {
+
1623  ost->enc_ctx->flags |= AV_CODEC_FLAG_QSCALE;
+
1624  ost->enc_ctx->global_quality = FF_QP2LAMBDA * qscale;
+
1625  }
+
1626 
+
1627  MATCH_PER_STREAM_OPT(disposition, str, ost->disposition, oc, st);
+
1628  ost->disposition = av_strdup(ost->disposition);
+
1629 
+
1630  ost->max_muxing_queue_size = 128;
+
1631  MATCH_PER_STREAM_OPT(max_muxing_queue_size, i, ost->max_muxing_queue_size, oc, st);
+
1632  ost->max_muxing_queue_size *= sizeof(ost->pkt);
+
1633 
+ +
1635 
+
1636  ost->muxing_queue_data_threshold = 50*1024*1024;
+
1637  MATCH_PER_STREAM_OPT(muxing_queue_data_threshold, i, ost->muxing_queue_data_threshold, oc, st);
+
1638 
+
1639  if (oc->oformat->flags & AVFMT_GLOBALHEADER)
+
1640  ost->enc_ctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+
1641 
+
1642  av_dict_copy(&ost->sws_dict, o->g->sws_dict, 0);
+
1643 
+
1644  av_dict_copy(&ost->swr_opts, o->g->swr_opts, 0);
+
1645  if (ost->enc && av_get_exact_bits_per_sample(ost->enc->id) == 24)
+
1646  av_dict_set(&ost->swr_opts, "output_sample_bits", "24", 0);
+
1647 
+
1648  av_dict_copy(&ost->resample_opts, o->g->resample_opts, 0);
+
1649 
+
1650  ost->source_index = source_index;
+
1651  if (source_index >= 0) {
+
1652  ost->sync_ist = input_streams[source_index];
+
1653  input_streams[source_index]->discard = 0;
+
1654  input_streams[source_index]->st->discard = input_streams[source_index]->user_set_discard;
+
1655  }
+
1656  ost->last_mux_dts = AV_NOPTS_VALUE;
+
1657 
+
1658  ost->muxing_queue = av_fifo_alloc(8 * sizeof(AVPacket));
+
1659  if (!ost->muxing_queue)
+
1660  exit_program(1);
+
1661 
+
1662  return ost;
+
1663 }
+
1664 
+
1665 void parse_matrix_coeffs(uint16_t *dest, const char *str)
+
1666 {
+
1667  int i;
+
1668  const char *p = str;
+
1669  for (i = 0;; i++) {
+
1670  dest[i] = atoi(p);
+
1671  if (i == 63)
+
1672  break;
+
1673  p = strchr(p, ',');
+
1674  if (!p) {
+
1675  av_log(NULL, AV_LOG_FATAL, "Syntax error in matrix \"%s\" at coeff %d\n", str, i);
+
1676  exit_program(1);
+
1677  }
+
1678  p++;
+
1679  }
+
1680 }
+
1681 
+
1682 /* read file contents into a string */
+
1683 uint8_t *fftools_read_file(const char *filename)
+
1684 {
+
1685  AVIOContext *pb = NULL;
+
1686  AVIOContext *dyn_buf = NULL;
+
1687  int ret = avio_open(&pb, filename, AVIO_FLAG_READ);
+
1688  uint8_t buf[1024], *str;
+
1689 
+
1690  if (ret < 0) {
+
1691  av_log(NULL, AV_LOG_ERROR, "Error opening file %s.\n", filename);
+
1692  return NULL;
+
1693  }
+
1694 
+
1695  ret = avio_open_dyn_buf(&dyn_buf);
+
1696  if (ret < 0) {
+
1697  avio_closep(&pb);
+
1698  return NULL;
+
1699  }
+
1700  while ((ret = avio_read(pb, buf, sizeof(buf))) > 0)
+
1701  avio_write(dyn_buf, buf, ret);
+
1702  avio_w8(dyn_buf, 0);
+
1703  avio_closep(&pb);
+
1704 
+
1705  ret = avio_close_dyn_buf(dyn_buf, &str);
+
1706  if (ret < 0)
+
1707  return NULL;
+
1708  return str;
+
1709 }
+
1710 
+
1711 char *get_ost_filters(OptionsContext *o, AVFormatContext *oc,
+
1712  OutputStream *ost)
+
1713 {
+
1714  AVStream *st = ost->st;
+
1715 
+
1716  if (ost->filters_script && ost->filters) {
+
1717  av_log(NULL, AV_LOG_ERROR, "Both -filter and -filter_script set for "
+
1718  "output stream #%d:%d.\n", nb_output_files, st->index);
+
1719  exit_program(1);
+
1720  }
+
1721 
+
1722  if (ost->filters_script)
+ +
1724  else if (ost->filters)
+
1725  return av_strdup(ost->filters);
+
1726 
+
1727  return av_strdup(st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ?
+
1728  "null" : "anull");
+
1729 }
+
1730 
+
1731 void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc,
+
1732  const OutputStream *ost, enum AVMediaType type)
+
1733 {
+
1734  if (ost->filters_script || ost->filters) {
+
1735  av_log(NULL, AV_LOG_ERROR,
+
1736  "%s '%s' was defined for %s output stream %d:%d but codec copy was selected.\n"
+
1737  "Filtering and streamcopy cannot be used together.\n",
+
1738  ost->filters ? "Filtergraph" : "Filtergraph script",
+ +
1740  av_get_media_type_string(type), ost->file_index, ost->index);
+
1741  exit_program(1);
+
1742  }
+
1743 }
+
1744 
+
1745 OutputStream *new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
1746 {
+
1747  AVStream *st;
+
1748  OutputStream *ost;
+
1749  AVCodecContext *video_enc;
+
1750  char *frame_rate = NULL, *max_frame_rate = NULL, *frame_aspect_ratio = NULL;
+
1751 
+
1752  ost = new_output_stream(o, oc, AVMEDIA_TYPE_VIDEO, source_index);
+
1753  st = ost->st;
+
1754  video_enc = ost->enc_ctx;
+
1755 
+
1756  MATCH_PER_STREAM_OPT(frame_rates, str, frame_rate, oc, st);
+
1757  if (frame_rate && av_parse_video_rate(&ost->frame_rate, frame_rate) < 0) {
+
1758  av_log(NULL, AV_LOG_FATAL, "Invalid framerate value: %s\n", frame_rate);
+
1759  exit_program(1);
+
1760  }
+
1761 
+
1762  MATCH_PER_STREAM_OPT(max_frame_rates, str, max_frame_rate, oc, st);
+
1763  if (max_frame_rate && av_parse_video_rate(&ost->max_frame_rate, max_frame_rate) < 0) {
+
1764  av_log(NULL, AV_LOG_FATAL, "Invalid maximum framerate value: %s\n", max_frame_rate);
+
1765  exit_program(1);
+
1766  }
+
1767 
+
1768  if (frame_rate && max_frame_rate) {
+
1769  av_log(NULL, AV_LOG_ERROR, "Only one of -fpsmax and -r can be set for a stream.\n");
+
1770  exit_program(1);
+
1771  }
+
1772 
+
1773  if ((frame_rate || max_frame_rate) &&
+ +
1775  av_log(NULL, AV_LOG_ERROR, "Using -vsync 0 and -r/-fpsmax can produce invalid output files\n");
+
1776 
+
1777  MATCH_PER_STREAM_OPT(frame_aspect_ratios, str, frame_aspect_ratio, oc, st);
+
1778  if (frame_aspect_ratio) {
+
1779  AVRational q;
+
1780  if (av_parse_ratio(&q, frame_aspect_ratio, 255, 0, NULL) < 0 ||
+
1781  q.num <= 0 || q.den <= 0) {
+
1782  av_log(NULL, AV_LOG_FATAL, "Invalid aspect ratio: %s\n", frame_aspect_ratio);
+
1783  exit_program(1);
+
1784  }
+
1785  ost->frame_aspect_ratio = q;
+
1786  }
+
1787 
+
1788  MATCH_PER_STREAM_OPT(filter_scripts, str, ost->filters_script, oc, st);
+
1789  MATCH_PER_STREAM_OPT(filters, str, ost->filters, oc, st);
+
1790 
+
1791  if (!ost->stream_copy) {
+
1792  const char *p = NULL;
+
1793  char *frame_size = NULL;
+
1794  char *frame_pix_fmt = NULL;
+
1795  char *intra_matrix = NULL, *inter_matrix = NULL;
+
1796  char *chroma_intra_matrix = NULL;
+
1797  int do_pass = 0;
+
1798  int i;
+
1799 
+
1800  MATCH_PER_STREAM_OPT(frame_sizes, str, frame_size, oc, st);
+
1801  if (frame_size && av_parse_video_size(&video_enc->width, &video_enc->height, frame_size) < 0) {
+
1802  av_log(NULL, AV_LOG_FATAL, "Invalid frame size: %s.\n", frame_size);
+
1803  exit_program(1);
+
1804  }
+
1805 
+
1806  video_enc->bits_per_raw_sample = frame_bits_per_raw_sample;
+
1807  MATCH_PER_STREAM_OPT(frame_pix_fmts, str, frame_pix_fmt, oc, st);
+
1808  if (frame_pix_fmt && *frame_pix_fmt == '+') {
+
1809  ost->keep_pix_fmt = 1;
+
1810  if (!*++frame_pix_fmt)
+
1811  frame_pix_fmt = NULL;
+
1812  }
+
1813  if (frame_pix_fmt && (video_enc->pix_fmt = av_get_pix_fmt(frame_pix_fmt)) == AV_PIX_FMT_NONE) {
+
1814  av_log(NULL, AV_LOG_FATAL, "Unknown pixel format requested: %s.\n", frame_pix_fmt);
+
1815  exit_program(1);
+
1816  }
+
1817  st->sample_aspect_ratio = video_enc->sample_aspect_ratio;
+
1818 
+
1819  if (intra_only)
+
1820  video_enc->gop_size = 0;
+
1821  MATCH_PER_STREAM_OPT(intra_matrices, str, intra_matrix, oc, st);
+
1822  if (intra_matrix) {
+
1823  if (!(video_enc->intra_matrix = av_mallocz(sizeof(*video_enc->intra_matrix) * 64))) {
+
1824  av_log(NULL, AV_LOG_FATAL, "Could not allocate memory for intra matrix.\n");
+
1825  exit_program(1);
+
1826  }
+
1827  parse_matrix_coeffs(video_enc->intra_matrix, intra_matrix);
+
1828  }
+
1829  MATCH_PER_STREAM_OPT(chroma_intra_matrices, str, chroma_intra_matrix, oc, st);
+
1830  if (chroma_intra_matrix) {
+
1831  uint16_t *p = av_mallocz(sizeof(*video_enc->chroma_intra_matrix) * 64);
+
1832  if (!p) {
+
1833  av_log(NULL, AV_LOG_FATAL, "Could not allocate memory for intra matrix.\n");
+
1834  exit_program(1);
+
1835  }
+
1836  video_enc->chroma_intra_matrix = p;
+
1837  parse_matrix_coeffs(p, chroma_intra_matrix);
+
1838  }
+
1839  MATCH_PER_STREAM_OPT(inter_matrices, str, inter_matrix, oc, st);
+
1840  if (inter_matrix) {
+
1841  if (!(video_enc->inter_matrix = av_mallocz(sizeof(*video_enc->inter_matrix) * 64))) {
+
1842  av_log(NULL, AV_LOG_FATAL, "Could not allocate memory for inter matrix.\n");
+
1843  exit_program(1);
+
1844  }
+
1845  parse_matrix_coeffs(video_enc->inter_matrix, inter_matrix);
+
1846  }
+
1847 
+
1848  MATCH_PER_STREAM_OPT(rc_overrides, str, p, oc, st);
+
1849  for (i = 0; p; i++) {
+
1850  int start, end, q;
+
1851  int e = sscanf(p, "%d,%d,%d", &start, &end, &q);
+
1852  if (e != 3) {
+
1853  av_log(NULL, AV_LOG_FATAL, "error parsing rc_override\n");
+
1854  exit_program(1);
+
1855  }
+
1856  video_enc->rc_override =
+
1857  av_realloc_array(video_enc->rc_override,
+
1858  i + 1, sizeof(RcOverride));
+
1859  if (!video_enc->rc_override) {
+
1860  av_log(NULL, AV_LOG_FATAL, "Could not (re)allocate memory for rc_override.\n");
+
1861  exit_program(1);
+
1862  }
+
1863  video_enc->rc_override[i].start_frame = start;
+
1864  video_enc->rc_override[i].end_frame = end;
+
1865  if (q > 0) {
+
1866  video_enc->rc_override[i].qscale = q;
+
1867  video_enc->rc_override[i].quality_factor = 1.0;
+
1868  }
+
1869  else {
+
1870  video_enc->rc_override[i].qscale = 0;
+
1871  video_enc->rc_override[i].quality_factor = -q/100.0;
+
1872  }
+
1873  p = strchr(p, '/');
+
1874  if (p) p++;
+
1875  }
+
1876  video_enc->rc_override_count = i;
+
1877 
+
1878  if (do_psnr)
+
1879  video_enc->flags|= AV_CODEC_FLAG_PSNR;
+
1880 
+
1881  /* two pass mode */
+
1882  MATCH_PER_STREAM_OPT(pass, i, do_pass, oc, st);
+
1883  if (do_pass) {
+
1884  if (do_pass & 1) {
+
1885  video_enc->flags |= AV_CODEC_FLAG_PASS1;
+
1886  av_dict_set(&ost->encoder_opts, "flags", "+pass1", AV_DICT_APPEND);
+
1887  }
+
1888  if (do_pass & 2) {
+
1889  video_enc->flags |= AV_CODEC_FLAG_PASS2;
+
1890  av_dict_set(&ost->encoder_opts, "flags", "+pass2", AV_DICT_APPEND);
+
1891  }
+
1892  }
+
1893 
+
1894  MATCH_PER_STREAM_OPT(passlogfiles, str, ost->logfile_prefix, oc, st);
+
1895  if (ost->logfile_prefix &&
+
1896  !(ost->logfile_prefix = av_strdup(ost->logfile_prefix)))
+
1897  exit_program(1);
+
1898 
+
1899  if (do_pass) {
+
1900  char logfilename[1024];
+
1901  FILE *f;
+
1902 
+
1903  snprintf(logfilename, sizeof(logfilename), "%s-%d.log",
+ + +
1906  i);
+
1907  if (!strcmp(ost->enc->name, "libx264")) {
+
1908  av_dict_set(&ost->encoder_opts, "stats", logfilename, AV_DICT_DONT_OVERWRITE);
+
1909  } else {
+
1910  if (video_enc->flags & AV_CODEC_FLAG_PASS2) {
+
1911  char *logbuffer = fftools_read_file(logfilename);
+
1912 
+
1913  if (!logbuffer) {
+
1914  av_log(NULL, AV_LOG_FATAL, "Error reading log file '%s' for pass-2 encoding\n",
+
1915  logfilename);
+
1916  exit_program(1);
+
1917  }
+
1918  video_enc->stats_in = logbuffer;
+
1919  }
+
1920  if (video_enc->flags & AV_CODEC_FLAG_PASS1) {
+
1921  f = av_fopen_utf8(logfilename, "wb");
+
1922  if (!f) {
+
1923  av_log(NULL, AV_LOG_FATAL,
+
1924  "Cannot write log file '%s' for pass-1 encoding: %s\n",
+
1925  logfilename, strerror(errno));
+
1926  exit_program(1);
+
1927  }
+
1928  ost->logfile = f;
+
1929  }
+
1930  }
+
1931  }
+
1932 
+
1933  MATCH_PER_STREAM_OPT(forced_key_frames, str, ost->forced_keyframes, oc, st);
+
1934  if (ost->forced_keyframes)
+
1935  ost->forced_keyframes = av_strdup(ost->forced_keyframes);
+
1936 
+
1937  MATCH_PER_STREAM_OPT(force_fps, i, ost->force_fps, oc, st);
+
1938 
+
1939  ost->top_field_first = -1;
+
1940  MATCH_PER_STREAM_OPT(top_field_first, i, ost->top_field_first, oc, st);
+
1941 
+
1942 
+
1943  ost->avfilter = get_ost_filters(o, oc, ost);
+
1944  if (!ost->avfilter)
+
1945  exit_program(1);
+
1946  } else {
+
1947  MATCH_PER_STREAM_OPT(copy_initial_nonkeyframes, i, ost->copy_initial_nonkeyframes, oc ,st);
+
1948  }
+
1949 
+
1950  if (ost->stream_copy)
+
1951  check_streamcopy_filters(o, oc, ost, AVMEDIA_TYPE_VIDEO);
+
1952 
+
1953  return ost;
+
1954 }
+
1955 
+
1956 OutputStream *new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
1957 {
+
1958  int n;
+
1959  AVStream *st;
+
1960  OutputStream *ost;
+
1961  AVCodecContext *audio_enc;
+
1962 
+
1963  ost = new_output_stream(o, oc, AVMEDIA_TYPE_AUDIO, source_index);
+
1964  st = ost->st;
+
1965 
+
1966  audio_enc = ost->enc_ctx;
+
1967  audio_enc->codec_type = AVMEDIA_TYPE_AUDIO;
+
1968 
+
1969  MATCH_PER_STREAM_OPT(filter_scripts, str, ost->filters_script, oc, st);
+
1970  MATCH_PER_STREAM_OPT(filters, str, ost->filters, oc, st);
+
1971 
+
1972  if (!ost->stream_copy) {
+
1973  char *sample_fmt = NULL;
+
1974 
+
1975  MATCH_PER_STREAM_OPT(audio_channels, i, audio_enc->channels, oc, st);
+
1976 
+
1977  MATCH_PER_STREAM_OPT(sample_fmts, str, sample_fmt, oc, st);
+
1978  if (sample_fmt &&
+
1979  (audio_enc->sample_fmt = av_get_sample_fmt(sample_fmt)) == AV_SAMPLE_FMT_NONE) {
+
1980  av_log(NULL, AV_LOG_FATAL, "Invalid sample format '%s'\n", sample_fmt);
+
1981  exit_program(1);
+
1982  }
+
1983 
+
1984  MATCH_PER_STREAM_OPT(audio_sample_rate, i, audio_enc->sample_rate, oc, st);
+
1985 
+
1986  MATCH_PER_STREAM_OPT(apad, str, ost->apad, oc, st);
+
1987  ost->apad = av_strdup(ost->apad);
+
1988 
+
1989  ost->avfilter = get_ost_filters(o, oc, ost);
+
1990  if (!ost->avfilter)
+
1991  exit_program(1);
+
1992 
+
1993  /* check for channel mapping for this audio stream */
+
1994  for (n = 0; n < o->nb_audio_channel_maps; n++) {
+
1995  AudioChannelMap *map = &o->audio_channel_maps[n];
+
1996  if ((map->ofile_idx == -1 || ost->file_index == map->ofile_idx) &&
+
1997  (map->ostream_idx == -1 || ost->st->index == map->ostream_idx)) {
+
1998  InputStream *ist;
+
1999 
+
2000  if (map->channel_idx == -1) {
+
2001  ist = NULL;
+
2002  } else if (ost->source_index < 0) {
+
2003  av_log(NULL, AV_LOG_FATAL, "Cannot determine input stream for channel mapping %d.%d\n",
+
2004  ost->file_index, ost->st->index);
+
2005  continue;
+
2006  } else {
+ +
2008  }
+
2009 
+
2010  if (!ist || (ist->file_index == map->file_idx && ist->st->index == map->stream_idx)) {
+
2011  if (av_reallocp_array(&ost->audio_channels_map,
+ +
2013  sizeof(*ost->audio_channels_map)
+
2014  ) < 0 )
+
2015  exit_program(1);
+
2016 
+ +
2018  }
+
2019  }
+
2020  }
+
2021  }
+
2022 
+
2023  if (ost->stream_copy)
+
2024  check_streamcopy_filters(o, oc, ost, AVMEDIA_TYPE_AUDIO);
+
2025 
+
2026  return ost;
+
2027 }
+
2028 
+
2029 OutputStream *new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
2030 {
+
2031  OutputStream *ost;
+
2032 
+
2033  ost = new_output_stream(o, oc, AVMEDIA_TYPE_DATA, source_index);
+
2034  if (!ost->stream_copy) {
+
2035  av_log(NULL, AV_LOG_FATAL, "Data stream encoding not supported yet (only streamcopy)\n");
+
2036  exit_program(1);
+
2037  }
+
2038 
+
2039  return ost;
+
2040 }
+
2041 
+
2042 OutputStream *new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
2043 {
+
2044  OutputStream *ost;
+
2045 
+
2046  ost = new_output_stream(o, oc, AVMEDIA_TYPE_UNKNOWN, source_index);
+
2047  if (!ost->stream_copy) {
+
2048  av_log(NULL, AV_LOG_FATAL, "Unknown stream encoding not supported yet (only streamcopy)\n");
+
2049  exit_program(1);
+
2050  }
+
2051 
+
2052  return ost;
+
2053 }
+
2054 
+
2055 OutputStream *new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
2056 {
+
2057  OutputStream *ost = new_output_stream(o, oc, AVMEDIA_TYPE_ATTACHMENT, source_index);
+
2058  ost->stream_copy = 1;
+
2059  ost->finished = 1;
+
2060  return ost;
+
2061 }
+
2062 
+
2063 OutputStream *new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
+
2064 {
+
2065  AVStream *st;
+
2066  OutputStream *ost;
+
2067  AVCodecContext *subtitle_enc;
+
2068 
+
2069  ost = new_output_stream(o, oc, AVMEDIA_TYPE_SUBTITLE, source_index);
+
2070  st = ost->st;
+
2071  subtitle_enc = ost->enc_ctx;
+
2072 
+
2073  subtitle_enc->codec_type = AVMEDIA_TYPE_SUBTITLE;
+
2074 
+
2075  MATCH_PER_STREAM_OPT(copy_initial_nonkeyframes, i, ost->copy_initial_nonkeyframes, oc, st);
+
2076 
+
2077  if (!ost->stream_copy) {
+
2078  char *frame_size = NULL;
+
2079 
+
2080  MATCH_PER_STREAM_OPT(frame_sizes, str, frame_size, oc, st);
+
2081  if (frame_size && av_parse_video_size(&subtitle_enc->width, &subtitle_enc->height, frame_size) < 0) {
+
2082  av_log(NULL, AV_LOG_FATAL, "Invalid frame size: %s.\n", frame_size);
+
2083  exit_program(1);
+
2084  }
+
2085  }
+
2086 
+
2087  return ost;
+
2088 }
+
2089 
+
2090 /* arg format is "output-stream-index:streamid-value". */
+
2091 int opt_streamid(void *optctx, const char *opt, const char *arg)
+
2092 {
+
2093  OptionsContext *o = optctx;
+
2094  int idx;
+
2095  char *p;
+
2096  char idx_str[16];
+
2097 
+
2098  av_strlcpy(idx_str, arg, sizeof(idx_str));
+
2099  p = strchr(idx_str, ':');
+
2100  if (!p) {
+
2101  av_log(NULL, AV_LOG_FATAL,
+
2102  "Invalid value '%s' for option '%s', required syntax is 'index:value'\n",
+
2103  arg, opt);
+
2104  exit_program(1);
+
2105  }
+
2106  *p++ = '\0';
+
2107  idx = parse_number_or_die(opt, idx_str, OPT_INT, 0, MAX_STREAMS-1);
+
2108  o->streamid_map = grow_array(o->streamid_map, sizeof(*o->streamid_map), &o->nb_streamid_map, idx+1);
+
2109  o->streamid_map[idx] = parse_number_or_die(opt, p, OPT_INT, 0, INT_MAX);
+
2110  return 0;
+
2111 }
+
2112 
+
2113 int copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata)
+
2114 {
+
2115  AVFormatContext *is = ifile->ctx;
+
2116  AVFormatContext *os = ofile->ctx;
+
2117  AVChapter **tmp;
+
2118  int i;
+
2119 
+
2120  tmp = av_realloc_f(os->chapters, is->nb_chapters + os->nb_chapters, sizeof(*os->chapters));
+
2121  if (!tmp)
+
2122  return AVERROR(ENOMEM);
+
2123  os->chapters = tmp;
+
2124 
+
2125  for (i = 0; i < is->nb_chapters; i++) {
+
2126  AVChapter *in_ch = is->chapters[i], *out_ch;
+
2127  int64_t start_time = (ofile->start_time == AV_NOPTS_VALUE) ? 0 : ofile->start_time;
+
2128  int64_t ts_off = av_rescale_q(start_time - ifile->ts_offset,
+
2129  AV_TIME_BASE_Q, in_ch->time_base);
+
2130  int64_t rt = (ofile->recording_time == INT64_MAX) ? INT64_MAX :
+
2131  av_rescale_q(ofile->recording_time, AV_TIME_BASE_Q, in_ch->time_base);
+
2132 
+
2133 
+
2134  if (in_ch->end < ts_off)
+
2135  continue;
+
2136  if (rt != INT64_MAX && in_ch->start > rt + ts_off)
+
2137  break;
+
2138 
+
2139  out_ch = av_mallocz(sizeof(AVChapter));
+
2140  if (!out_ch)
+
2141  return AVERROR(ENOMEM);
+
2142 
+
2143  out_ch->id = in_ch->id;
+
2144  out_ch->time_base = in_ch->time_base;
+
2145  out_ch->start = FFMAX(0, in_ch->start - ts_off);
+
2146  out_ch->end = FFMIN(rt, in_ch->end - ts_off);
+
2147 
+
2148  if (copy_metadata)
+
2149  av_dict_copy(&out_ch->metadata, in_ch->metadata, 0);
+
2150 
+
2151  os->chapters[os->nb_chapters++] = out_ch;
+
2152  }
+
2153  return 0;
+
2154 }
+
2155 
+ +
2157  AVFormatContext *oc)
+
2158 {
+
2159  OutputStream *ost;
+
2160 
+
2161  switch (ofilter->type) {
+
2162  case AVMEDIA_TYPE_VIDEO: ost = new_video_stream(o, oc, -1); break;
+
2163  case AVMEDIA_TYPE_AUDIO: ost = new_audio_stream(o, oc, -1); break;
+
2164  default:
+
2165  av_log(NULL, AV_LOG_FATAL, "Only video and audio filters are supported "
+
2166  "currently.\n");
+
2167  exit_program(1);
+
2168  }
+
2169 
+
2170  ost->source_index = -1;
+
2171  ost->filter = ofilter;
+
2172 
+
2173  ofilter->ost = ost;
+
2174  ofilter->format = -1;
+
2175 
+
2176  if (ost->stream_copy) {
+
2177  av_log(NULL, AV_LOG_ERROR, "Streamcopy requested for output stream %d:%d, "
+
2178  "which is fed from a complex filtergraph. Filtering and streamcopy "
+
2179  "cannot be used together.\n", ost->file_index, ost->index);
+
2180  exit_program(1);
+
2181  }
+
2182 
+
2183  if (ost->avfilter && (ost->filters || ost->filters_script)) {
+
2184  const char *opt = ost->filters ? "-vf/-af/-filter" : "-filter_script";
+
2185  av_log(NULL, AV_LOG_ERROR,
+
2186  "%s '%s' was specified through the %s option "
+
2187  "for output stream %d:%d, which is fed from a complex filtergraph.\n"
+
2188  "%s and -filter_complex cannot be used together for the same stream.\n",
+
2189  ost->filters ? "Filtergraph" : "Filtergraph script",
+ +
2191  opt, ost->file_index, ost->index, opt);
+
2192  exit_program(1);
+
2193  }
+
2194 
+
2195  avfilter_inout_free(&ofilter->out_tmp);
+
2196 }
+
2197 
+ +
2199 {
+
2200  int i, ret = 0;
+
2201 
+
2202  for (i = 0; i < nb_filtergraphs; i++) {
+ +
2204  if (ret < 0)
+
2205  return ret;
+
2206  }
+
2207  return 0;
+
2208 }
+
2209 
+
2210 int open_output_file(OptionsContext *o, const char *filename)
+
2211 {
+
2212  AVFormatContext *oc;
+
2213  int i, j, err;
+
2214  OutputFile *of;
+
2215  OutputStream *ost;
+
2216  InputStream *ist;
+
2217  AVDictionary *unused_opts = NULL;
+
2218  AVDictionaryEntry *e = NULL;
+
2219  int format_flags = 0;
+
2220 
+
2221  if (o->stop_time != INT64_MAX && o->recording_time != INT64_MAX) {
+
2222  o->stop_time = INT64_MAX;
+
2223  av_log(NULL, AV_LOG_WARNING, "-t and -to cannot be used together; using -t.\n");
+
2224  }
+
2225 
+
2226  if (o->stop_time != INT64_MAX && o->recording_time == INT64_MAX) {
+
2227  int64_t start_time = o->start_time == AV_NOPTS_VALUE ? 0 : o->start_time;
+
2228  if (o->stop_time <= start_time) {
+
2229  av_log(NULL, AV_LOG_ERROR, "-to value smaller than -ss; aborting.\n");
+
2230  exit_program(1);
+
2231  } else {
+
2232  o->recording_time = o->stop_time - start_time;
+
2233  }
+
2234  }
+
2235 
+ +
2237  of = av_mallocz(sizeof(*of));
+
2238  if (!of)
+
2239  exit_program(1);
+
2240  output_files[nb_output_files - 1] = of;
+
2241 
+ +
2243  of->recording_time = o->recording_time;
+
2244  of->start_time = o->start_time;
+
2245  of->limit_filesize = o->limit_filesize;
+
2246  of->shortest = o->shortest;
+
2247  av_dict_copy(&of->opts, o->g->format_opts, 0);
+
2248 
+
2249  if (!strcmp(filename, "-"))
+
2250  filename = "pipe:";
+
2251 
+
2252  err = avformat_alloc_output_context2(&oc, NULL, o->format, filename);
+
2253  if (!oc) {
+
2254  print_error(filename, err);
+
2255  exit_program(1);
+
2256  }
+
2257 
+
2258  of->ctx = oc;
+
2259  if (o->recording_time != INT64_MAX)
+
2260  oc->duration = o->recording_time;
+
2261 
+
2262  oc->interrupt_callback = int_cb;
+
2263 
+
2264  e = av_dict_get(o->g->format_opts, "fflags", NULL, 0);
+
2265  if (e) {
+
2266  const AVOption *o = av_opt_find(oc, "fflags", NULL, 0, 0);
+
2267  av_opt_eval_flags(oc, o, e->value, &format_flags);
+
2268  }
+
2269  if (o->bitexact) {
+
2270  format_flags |= AVFMT_FLAG_BITEXACT;
+
2271  oc->flags |= AVFMT_FLAG_BITEXACT;
+
2272  }
+
2273 
+
2274  /* create streams for all unlabeled output pads */
+
2275  for (i = 0; i < nb_filtergraphs; i++) {
+
2276  FilterGraph *fg = filtergraphs[i];
+
2277  for (j = 0; j < fg->nb_outputs; j++) {
+
2278  OutputFilter *ofilter = fg->outputs[j];
+
2279 
+
2280  if (!ofilter->out_tmp || ofilter->out_tmp->name)
+
2281  continue;
+
2282 
+
2283  switch (ofilter->type) {
+
2284  case AVMEDIA_TYPE_VIDEO: o->video_disable = 1; break;
+
2285  case AVMEDIA_TYPE_AUDIO: o->audio_disable = 1; break;
+
2286  case AVMEDIA_TYPE_SUBTITLE: o->subtitle_disable = 1; break;
+
2287  }
+
2288  init_output_filter(ofilter, o, oc);
+
2289  }
+
2290  }
+
2291 
+
2292  if (!o->nb_stream_maps) {
+
2293  char *subtitle_codec_name = NULL;
+
2294  /* pick the "best" stream of each type */
+
2295 
+
2296  /* video: highest resolution */
+
2297  if (!o->video_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_VIDEO) != AV_CODEC_ID_NONE) {
+
2298  int best_score = 0, idx = -1;
+
2299  int qcr = avformat_query_codec(oc->oformat, oc->oformat->video_codec, 0);
+
2300  for (j = 0; j < nb_input_files; j++) {
+
2301  InputFile *ifile = input_files[j];
+
2302  int file_best_score = 0, file_best_idx = -1;
+
2303  for (i = 0; i < ifile->nb_streams; i++) {
+
2304  int score;
+
2305  ist = input_streams[ifile->ist_index + i];
+
2306  score = ist->st->codecpar->width * ist->st->codecpar->height
+
2307  + 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+
2308  + 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
+
2309  if (ist->user_set_discard == AVDISCARD_ALL)
+
2310  continue;
+
2311  if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
+
2312  score = 1;
+
2313  if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
+
2314  score > file_best_score) {
+
2315  if((qcr==MKTAG('A', 'P', 'I', 'C')) && !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
+
2316  continue;
+
2317  file_best_score = score;
+
2318  file_best_idx = ifile->ist_index + i;
+
2319  }
+
2320  }
+
2321  if (file_best_idx >= 0) {
+
2322  if((qcr == MKTAG('A', 'P', 'I', 'C')) || !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
+
2323  file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
+
2324  if (file_best_score > best_score) {
+
2325  best_score = file_best_score;
+
2326  idx = file_best_idx;
+
2327  }
+
2328  }
+
2329  }
+
2330  if (idx >= 0)
+
2331  new_video_stream(o, oc, idx);
+
2332  }
+
2333 
+
2334  /* audio: most channels */
+
2335  if (!o->audio_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_AUDIO) != AV_CODEC_ID_NONE) {
+
2336  int best_score = 0, idx = -1;
+
2337  for (j = 0; j < nb_input_files; j++) {
+
2338  InputFile *ifile = input_files[j];
+
2339  int file_best_score = 0, file_best_idx = -1;
+
2340  for (i = 0; i < ifile->nb_streams; i++) {
+
2341  int score;
+
2342  ist = input_streams[ifile->ist_index + i];
+
2343  score = ist->st->codecpar->channels
+
2344  + 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+
2345  + 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
+
2346  if (ist->user_set_discard == AVDISCARD_ALL)
+
2347  continue;
+
2348  if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
+
2349  score > file_best_score) {
+
2350  file_best_score = score;
+
2351  file_best_idx = ifile->ist_index + i;
+
2352  }
+
2353  }
+
2354  if (file_best_idx >= 0) {
+
2355  file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
+
2356  if (file_best_score > best_score) {
+
2357  best_score = file_best_score;
+
2358  idx = file_best_idx;
+
2359  }
+
2360  }
+
2361  }
+
2362  if (idx >= 0)
+
2363  new_audio_stream(o, oc, idx);
+
2364  }
+
2365 
+
2366  /* subtitles: pick first */
+
2367  MATCH_PER_TYPE_OPT(codec_names, str, subtitle_codec_name, oc, "s");
+
2368  if (!o->subtitle_disable && (avcodec_find_encoder(oc->oformat->subtitle_codec) || subtitle_codec_name)) {
+
2369  for (i = 0; i < nb_input_streams; i++)
+
2370  if (input_streams[i]->st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) {
+
2371  AVCodecDescriptor const *input_descriptor =
+
2372  avcodec_descriptor_get(input_streams[i]->st->codecpar->codec_id);
+
2373  AVCodecDescriptor const *output_descriptor = NULL;
+
2374  AVCodec const *output_codec =
+
2375  avcodec_find_encoder(oc->oformat->subtitle_codec);
+
2376  int input_props = 0, output_props = 0;
+
2377  if (input_streams[i]->user_set_discard == AVDISCARD_ALL)
+
2378  continue;
+
2379  if (output_codec)
+
2380  output_descriptor = avcodec_descriptor_get(output_codec->id);
+
2381  if (input_descriptor)
+
2382  input_props = input_descriptor->props & (AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB);
+
2383  if (output_descriptor)
+
2384  output_props = output_descriptor->props & (AV_CODEC_PROP_TEXT_SUB | AV_CODEC_PROP_BITMAP_SUB);
+
2385  if (subtitle_codec_name ||
+
2386  input_props & output_props ||
+
2387  // Map dvb teletext which has neither property to any output subtitle encoder
+
2388  (input_descriptor && output_descriptor &&
+
2389  (!input_descriptor->props ||
+
2390  !output_descriptor->props))) {
+
2391  new_subtitle_stream(o, oc, i);
+
2392  break;
+
2393  }
+
2394  }
+
2395  }
+
2396  /* Data only if codec id match */
+
2397  if (!o->data_disable ) {
+
2398  enum AVCodecID codec_id = av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_DATA);
+
2399  for (i = 0; codec_id != AV_CODEC_ID_NONE && i < nb_input_streams; i++) {
+
2400  if (input_streams[i]->user_set_discard == AVDISCARD_ALL)
+
2401  continue;
+
2402  if (input_streams[i]->st->codecpar->codec_type == AVMEDIA_TYPE_DATA
+
2403  && input_streams[i]->st->codecpar->codec_id == codec_id )
+
2404  new_data_stream(o, oc, i);
+
2405  }
+
2406  }
+
2407  } else {
+
2408  for (i = 0; i < o->nb_stream_maps; i++) {
+
2409  StreamMap *map = &o->stream_maps[i];
+
2410 
+
2411  if (map->disabled)
+
2412  continue;
+
2413 
+
2414  if (map->linklabel) {
+
2415  FilterGraph *fg;
+
2416  OutputFilter *ofilter = NULL;
+
2417  int j, k;
+
2418 
+
2419  for (j = 0; j < nb_filtergraphs; j++) {
+
2420  fg = filtergraphs[j];
+
2421  for (k = 0; k < fg->nb_outputs; k++) {
+
2422  AVFilterInOut *out = fg->outputs[k]->out_tmp;
+
2423  if (out && !strcmp(out->name, map->linklabel)) {
+
2424  ofilter = fg->outputs[k];
+
2425  goto loop_end;
+
2426  }
+
2427  }
+
2428  }
+
2429 loop_end:
+
2430  if (!ofilter) {
+
2431  av_log(NULL, AV_LOG_FATAL, "Output with label '%s' does not exist "
+
2432  "in any defined filter graph, or was already used elsewhere.\n", map->linklabel);
+
2433  exit_program(1);
+
2434  }
+
2435  init_output_filter(ofilter, o, oc);
+
2436  } else {
+
2437  int src_idx = input_files[map->file_index]->ist_index + map->stream_index;
+
2438 
+ +
2440  if (ist->user_set_discard == AVDISCARD_ALL) {
+
2441  av_log(NULL, AV_LOG_FATAL, "Stream #%d:%d is disabled and cannot be mapped.\n",
+
2442  map->file_index, map->stream_index);
+
2443  exit_program(1);
+
2444  }
+
2445  if(o->subtitle_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE)
+
2446  continue;
+
2447  if(o-> audio_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)
+
2448  continue;
+
2449  if(o-> video_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
+
2450  continue;
+
2451  if(o-> data_disable && ist->st->codecpar->codec_type == AVMEDIA_TYPE_DATA)
+
2452  continue;
+
2453 
+
2454  ost = NULL;
+
2455  switch (ist->st->codecpar->codec_type) {
+
2456  case AVMEDIA_TYPE_VIDEO: ost = new_video_stream (o, oc, src_idx); break;
+
2457  case AVMEDIA_TYPE_AUDIO: ost = new_audio_stream (o, oc, src_idx); break;
+
2458  case AVMEDIA_TYPE_SUBTITLE: ost = new_subtitle_stream (o, oc, src_idx); break;
+
2459  case AVMEDIA_TYPE_DATA: ost = new_data_stream (o, oc, src_idx); break;
+
2460  case AVMEDIA_TYPE_ATTACHMENT: ost = new_attachment_stream(o, oc, src_idx); break;
+
2461  case AVMEDIA_TYPE_UNKNOWN:
+
2462  if (copy_unknown_streams) {
+
2463  ost = new_unknown_stream (o, oc, src_idx);
+
2464  break;
+
2465  }
+
2466  default:
+
2467  av_log(NULL, ignore_unknown_streams ? AV_LOG_WARNING : AV_LOG_FATAL,
+
2468  "Cannot map stream #%d:%d - unsupported type.\n",
+
2469  map->file_index, map->stream_index);
+
2470  if (!ignore_unknown_streams) {
+
2471  av_log(NULL, AV_LOG_FATAL,
+
2472  "If you want unsupported types ignored instead "
+
2473  "of failing, please use the -ignore_unknown option\n"
+
2474  "If you want them copied, please use -copy_unknown\n");
+
2475  exit_program(1);
+
2476  }
+
2477  }
+
2478  if (ost)
+ +
2480  + map->sync_stream_index];
+
2481  }
+
2482  }
+
2483  }
+
2484 
+
2485  /* handle attached files */
+
2486  for (i = 0; i < o->nb_attachments; i++) {
+
2487  AVIOContext *pb;
+
2488  uint8_t *attachment;
+
2489  const char *p;
+
2490  int64_t len;
+
2491 
+
2492  if ((err = avio_open2(&pb, o->attachments[i], AVIO_FLAG_READ, &int_cb, NULL)) < 0) {
+
2493  av_log(NULL, AV_LOG_FATAL, "Could not open attachment file %s.\n",
+
2494  o->attachments[i]);
+
2495  exit_program(1);
+
2496  }
+
2497  if ((len = avio_size(pb)) <= 0) {
+
2498  av_log(NULL, AV_LOG_FATAL, "Could not get size of the attachment %s.\n",
+
2499  o->attachments[i]);
+
2500  exit_program(1);
+
2501  }
+
2502  if (len > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE ||
+
2503  !(attachment = av_malloc(len + AV_INPUT_BUFFER_PADDING_SIZE))) {
+
2504  av_log(NULL, AV_LOG_FATAL, "Attachment %s too large.\n",
+
2505  o->attachments[i]);
+
2506  exit_program(1);
+
2507  }
+
2508  avio_read(pb, attachment, len);
+
2509  memset(attachment + len, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+
2510 
+
2511  ost = new_attachment_stream(o, oc, -1);
+
2512  ost->stream_copy = 0;
+ +
2514  ost->st->codecpar->extradata = attachment;
+
2515  ost->st->codecpar->extradata_size = len;
+
2516 
+
2517  p = strrchr(o->attachments[i], '/');
+
2518  av_dict_set(&ost->st->metadata, "filename", (p && *p) ? p + 1 : o->attachments[i], AV_DICT_DONT_OVERWRITE);
+
2519  avio_closep(&pb);
+
2520  }
+
2521 
+
2522  if (!oc->nb_streams && !(oc->oformat->flags & AVFMT_NOSTREAMS)) {
+
2523  av_dump_format(oc, nb_output_files - 1, oc->url, 1);
+
2524  av_log(NULL, AV_LOG_ERROR, "Output file #%d does not contain any stream\n", nb_output_files - 1);
+
2525  exit_program(1);
+
2526  }
+
2527 
+
2528  /* check if all codec options have been used */
+
2529  unused_opts = strip_specifiers(o->g->codec_opts);
+
2530  for (i = of->ost_index; i < nb_output_streams; i++) {
+
2531  e = NULL;
+
2532  while ((e = av_dict_get(output_streams[i]->encoder_opts, "", e,
+
2533  AV_DICT_IGNORE_SUFFIX)))
+
2534  av_dict_set(&unused_opts, e->key, NULL, 0);
+
2535  }
+
2536 
+
2537  e = NULL;
+
2538  while ((e = av_dict_get(unused_opts, "", e, AV_DICT_IGNORE_SUFFIX))) {
+
2539  const AVClass *class = avcodec_get_class();
+
2540  const AVOption *option = av_opt_find(&class, e->key, NULL, 0,
+
2541  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ);
+
2542  const AVClass *fclass = avformat_get_class();
+
2543  const AVOption *foption = av_opt_find(&fclass, e->key, NULL, 0,
+
2544  AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ);
+
2545  if (!option || foption)
+
2546  continue;
+
2547 
+
2548 
+
2549  if (!(option->flags & AV_OPT_FLAG_ENCODING_PARAM)) {
+
2550  av_log(NULL, AV_LOG_ERROR, "Codec AVOption %s (%s) specified for "
+
2551  "output file #%d (%s) is not an encoding option.\n", e->key,
+
2552  option->help ? option->help : "", nb_output_files - 1,
+
2553  filename);
+
2554  exit_program(1);
+
2555  }
+
2556 
+
2557  // gop_timecode is injected by generic code but not always used
+
2558  if (!strcmp(e->key, "gop_timecode"))
+
2559  continue;
+
2560 
+
2561  av_log(NULL, AV_LOG_WARNING, "Codec AVOption %s (%s) specified for "
+
2562  "output file #%d (%s) has not been used for any stream. The most "
+
2563  "likely reason is either wrong type (e.g. a video option with "
+
2564  "no video streams) or that it is a private option of some encoder "
+
2565  "which was not actually used for any stream.\n", e->key,
+
2566  option->help ? option->help : "", nb_output_files - 1, filename);
+
2567  }
+
2568  av_dict_free(&unused_opts);
+
2569 
+
2570  /* set the decoding_needed flags and create simple filtergraphs */
+
2571  for (i = of->ost_index; i < nb_output_streams; i++) {
+ +
2573 
+
2574  if (ost->encoding_needed && ost->source_index >= 0) {
+ +
2576  ist->decoding_needed |= DECODING_FOR_OST;
+
2577 
+
2578  if (ost->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ||
+
2579  ost->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
+ +
2581  if (err < 0) {
+
2582  av_log(NULL, AV_LOG_ERROR,
+
2583  "Error initializing a simple filtergraph between streams "
+
2584  "%d:%d->%d:%d\n", ist->file_index, ost->source_index,
+
2585  nb_output_files - 1, ost->st->index);
+
2586  exit_program(1);
+
2587  }
+
2588  }
+
2589  }
+
2590 
+
2591  /* set the filter output constraints */
+
2592  if (ost->filter) {
+
2593  OutputFilter *f = ost->filter;
+
2594  int count;
+
2595  switch (ost->enc_ctx->codec_type) {
+
2596  case AVMEDIA_TYPE_VIDEO:
+
2597  f->frame_rate = ost->frame_rate;
+
2598  f->width = ost->enc_ctx->width;
+
2599  f->height = ost->enc_ctx->height;
+
2600  if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
+
2601  f->format = ost->enc_ctx->pix_fmt;
+
2602  } else if (ost->enc->pix_fmts) {
+
2603  count = 0;
+
2604  while (ost->enc->pix_fmts[count] != AV_PIX_FMT_NONE)
+
2605  count++;
+
2606  f->formats = av_mallocz_array(count + 1, sizeof(*f->formats));
+
2607  if (!f->formats)
+
2608  exit_program(1);
+
2609  memcpy(f->formats, ost->enc->pix_fmts, (count + 1) * sizeof(*f->formats));
+
2610  }
+
2611  break;
+
2612  case AVMEDIA_TYPE_AUDIO:
+
2613  if (ost->enc_ctx->sample_fmt != AV_SAMPLE_FMT_NONE) {
+
2614  f->format = ost->enc_ctx->sample_fmt;
+
2615  } else if (ost->enc->sample_fmts) {
+
2616  count = 0;
+
2617  while (ost->enc->sample_fmts[count] != AV_SAMPLE_FMT_NONE)
+
2618  count++;
+
2619  f->formats = av_mallocz_array(count + 1, sizeof(*f->formats));
+
2620  if (!f->formats)
+
2621  exit_program(1);
+
2622  memcpy(f->formats, ost->enc->sample_fmts, (count + 1) * sizeof(*f->formats));
+
2623  }
+
2624  if (ost->enc_ctx->sample_rate) {
+
2625  f->sample_rate = ost->enc_ctx->sample_rate;
+
2626  } else if (ost->enc->supported_samplerates) {
+
2627  count = 0;
+
2628  while (ost->enc->supported_samplerates[count])
+
2629  count++;
+
2630  f->sample_rates = av_mallocz_array(count + 1, sizeof(*f->sample_rates));
+
2631  if (!f->sample_rates)
+
2632  exit_program(1);
+
2633  memcpy(f->sample_rates, ost->enc->supported_samplerates,
+
2634  (count + 1) * sizeof(*f->sample_rates));
+
2635  }
+
2636  if (ost->enc_ctx->channels) {
+
2637  f->channel_layout = av_get_default_channel_layout(ost->enc_ctx->channels);
+
2638  } else if (ost->enc->channel_layouts) {
+
2639  count = 0;
+
2640  while (ost->enc->channel_layouts[count])
+
2641  count++;
+
2642  f->channel_layouts = av_mallocz_array(count + 1, sizeof(*f->channel_layouts));
+
2643  if (!f->channel_layouts)
+
2644  exit_program(1);
+
2645  memcpy(f->channel_layouts, ost->enc->channel_layouts,
+
2646  (count + 1) * sizeof(*f->channel_layouts));
+
2647  }
+
2648  break;
+
2649  }
+
2650  }
+
2651  }
+
2652 
+
2653  /* check filename in case of an image number is expected */
+
2654  if (oc->oformat->flags & AVFMT_NEEDNUMBER) {
+
2655  if (!av_filename_number_test(oc->url)) {
+
2656  print_error(oc->url, AVERROR(EINVAL));
+
2657  exit_program(1);
+
2658  }
+
2659  }
+
2660 
+
2661  if (!(oc->oformat->flags & AVFMT_NOSTREAMS) && !input_stream_potentially_available) {
+
2662  av_log(NULL, AV_LOG_ERROR,
+
2663  "No input streams but output needs an input stream\n");
+
2664  exit_program(1);
+
2665  }
+
2666 
+
2667  if (!(oc->oformat->flags & AVFMT_NOFILE)) {
+
2668  /* test if it already exists to avoid losing precious files */
+
2669  assert_file_overwrite(filename);
+
2670 
+
2671  /* open the file */
+
2672  if ((err = avio_open2(&oc->pb, filename, AVIO_FLAG_WRITE,
+
2673  &oc->interrupt_callback,
+
2674  &of->opts)) < 0) {
+
2675  print_error(filename, err);
+
2676  exit_program(1);
+
2677  }
+
2678  } else if (strcmp(oc->oformat->name, "image2")==0 && !av_filename_number_test(filename))
+
2679  assert_file_overwrite(filename);
+
2680 
+
2681  if (o->mux_preload) {
+
2682  av_dict_set_int(&of->opts, "preload", o->mux_preload*AV_TIME_BASE, 0);
+
2683  }
+
2684  oc->max_delay = (int)(o->mux_max_delay * AV_TIME_BASE);
+
2685 
+
2686  /* copy metadata */
+
2687  for (i = 0; i < o->nb_metadata_map; i++) {
+
2688  char *p;
+
2689  int in_file_index = strtol(o->metadata_map[i].u.str, &p, 0);
+
2690 
+
2691  if (in_file_index >= nb_input_files) {
+
2692  av_log(NULL, AV_LOG_FATAL, "Invalid input file index %d while processing metadata maps\n", in_file_index);
+
2693  exit_program(1);
+
2694  }
+
2695  fftools_copy_metadata(o->metadata_map[i].specifier, *p ? p + 1 : p, oc,
+
2696  in_file_index >= 0 ?
+
2697  input_files[in_file_index]->ctx : NULL, o);
+
2698  }
+
2699 
+
2700  /* copy chapters */
+
2701  if (o->chapters_input_file >= nb_input_files) {
+
2702  if (o->chapters_input_file == INT_MAX) {
+
2703  /* copy chapters from the first input file that has them*/
+
2704  o->chapters_input_file = -1;
+
2705  for (i = 0; i < nb_input_files; i++)
+
2706  if (input_files[i]->ctx->nb_chapters) {
+
2707  o->chapters_input_file = i;
+
2708  break;
+
2709  }
+
2710  } else {
+
2711  av_log(NULL, AV_LOG_FATAL, "Invalid input file index %d in chapter mapping.\n",
+
2712  o->chapters_input_file);
+
2713  exit_program(1);
+
2714  }
+
2715  }
+
2716  if (o->chapters_input_file >= 0)
+ + +
2719 
+
2720  /* copy global metadata by default */
+ +
2722  av_dict_copy(&oc->metadata, input_files[0]->ctx->metadata,
+
2723  AV_DICT_DONT_OVERWRITE);
+
2724  if(o->recording_time != INT64_MAX)
+
2725  av_dict_set(&oc->metadata, "duration", NULL, 0);
+
2726  av_dict_set(&oc->metadata, "creation_time", NULL, 0);
+
2727  av_dict_set(&oc->metadata, "company_name", NULL, 0);
+
2728  av_dict_set(&oc->metadata, "product_name", NULL, 0);
+
2729  av_dict_set(&oc->metadata, "product_version", NULL, 0);
+
2730  }
+
2731  if (!o->metadata_streams_manual)
+
2732  for (i = of->ost_index; i < nb_output_streams; i++) {
+
2733  InputStream *ist;
+
2734  if (output_streams[i]->source_index < 0) /* this is true e.g. for attached files */
+
2735  continue;
+ +
2737  av_dict_copy(&output_streams[i]->st->metadata, ist->st->metadata, AV_DICT_DONT_OVERWRITE);
+
2738  if (!output_streams[i]->stream_copy) {
+
2739  av_dict_set(&output_streams[i]->st->metadata, "encoder", NULL, 0);
+
2740  }
+
2741  }
+
2742 
+
2743  /* process manually set programs */
+
2744  for (i = 0; i < o->nb_program; i++) {
+
2745  const char *p = o->program[i].u.str;
+
2746  int progid = i+1;
+
2747  AVProgram *program;
+
2748 
+
2749  while(*p) {
+
2750  const char *p2 = av_get_token(&p, ":");
+
2751  const char *to_dealloc = p2;
+
2752  char *key;
+
2753  if (!p2)
+
2754  break;
+
2755 
+
2756  if(*p) p++;
+
2757 
+
2758  key = av_get_token(&p2, "=");
+
2759  if (!key || !*p2) {
+
2760  av_freep(&to_dealloc);
+
2761  av_freep(&key);
+
2762  break;
+
2763  }
+
2764  p2++;
+
2765 
+
2766  if (!strcmp(key, "program_num"))
+
2767  progid = strtol(p2, NULL, 0);
+
2768  av_freep(&to_dealloc);
+
2769  av_freep(&key);
+
2770  }
+
2771 
+
2772  program = av_new_program(oc, progid);
+
2773 
+
2774  p = o->program[i].u.str;
+
2775  while(*p) {
+
2776  const char *p2 = av_get_token(&p, ":");
+
2777  const char *to_dealloc = p2;
+
2778  char *key;
+
2779  if (!p2)
+
2780  break;
+
2781  if(*p) p++;
+
2782 
+
2783  key = av_get_token(&p2, "=");
+
2784  if (!key) {
+
2785  av_log(NULL, AV_LOG_FATAL,
+
2786  "No '=' character in program string %s.\n",
+
2787  p2);
+
2788  exit_program(1);
+
2789  }
+
2790  if (!*p2)
+
2791  exit_program(1);
+
2792  p2++;
+
2793 
+
2794  if (!strcmp(key, "title")) {
+
2795  av_dict_set(&program->metadata, "title", p2, 0);
+
2796  } else if (!strcmp(key, "program_num")) {
+
2797  } else if (!strcmp(key, "st")) {
+
2798  int st_num = strtol(p2, NULL, 0);
+
2799  av_program_add_stream_index(oc, progid, st_num);
+
2800  } else {
+
2801  av_log(NULL, AV_LOG_FATAL, "Unknown program key %s.\n", key);
+
2802  exit_program(1);
+
2803  }
+
2804  av_freep(&to_dealloc);
+
2805  av_freep(&key);
+
2806  }
+
2807  }
+
2808 
+
2809  /* process manually set metadata */
+
2810  for (i = 0; i < o->nb_metadata; i++) {
+
2811  AVDictionary **m;
+
2812  char type, *val;
+
2813  const char *stream_spec;
+
2814  int index = 0, j, ret = 0;
+
2815 
+
2816  val = strchr(o->metadata[i].u.str, '=');
+
2817  if (!val) {
+
2818  av_log(NULL, AV_LOG_FATAL, "No '=' character in metadata string %s.\n",
+
2819  o->metadata[i].u.str);
+
2820  exit_program(1);
+
2821  }
+
2822  *val++ = 0;
+
2823 
+
2824  parse_meta_type(o->metadata[i].specifier, &type, &index, &stream_spec);
+
2825  if (type == 's') {
+
2826  for (j = 0; j < oc->nb_streams; j++) {
+
2827  ost = output_streams[nb_output_streams - oc->nb_streams + j];
+
2828  if ((ret = check_stream_specifier(oc, oc->streams[j], stream_spec)) > 0) {
+
2829  if (!strcmp(o->metadata[i].u.str, "rotate")) {
+
2830  char *tail;
+
2831  double theta = av_strtod(val, &tail);
+
2832  if (!*tail) {
+
2833  ost->rotate_overridden = 1;
+
2834  ost->rotate_override_value = theta;
+
2835  }
+
2836  } else {
+
2837  av_dict_set(&oc->streams[j]->metadata, o->metadata[i].u.str, *val ? val : NULL, 0);
+
2838  }
+
2839  } else if (ret < 0)
+
2840  exit_program(1);
+
2841  }
+
2842  }
+
2843  else {
+
2844  switch (type) {
+
2845  case 'g':
+
2846  m = &oc->metadata;
+
2847  break;
+
2848  case 'c':
+
2849  if (index < 0 || index >= oc->nb_chapters) {
+
2850  av_log(NULL, AV_LOG_FATAL, "Invalid chapter index %d in metadata specifier.\n", index);
+
2851  exit_program(1);
+
2852  }
+
2853  m = &oc->chapters[index]->metadata;
+
2854  break;
+
2855  case 'p':
+
2856  if (index < 0 || index >= oc->nb_programs) {
+
2857  av_log(NULL, AV_LOG_FATAL, "Invalid program index %d in metadata specifier.\n", index);
+
2858  exit_program(1);
+
2859  }
+
2860  m = &oc->programs[index]->metadata;
+
2861  break;
+
2862  default:
+
2863  av_log(NULL, AV_LOG_FATAL, "Invalid metadata specifier %s.\n", o->metadata[i].specifier);
+
2864  exit_program(1);
+
2865  }
+
2866  av_dict_set(m, o->metadata[i].u.str, *val ? val : NULL, 0);
+
2867  }
+
2868  }
+
2869 
+
2870  return 0;
+
2871 }
+
2872 
+
2873 int opt_target(void *optctx, const char *opt, const char *arg)
+
2874 {
+
2875  const OptionDef *options = ffmpeg_options;
+
2876  OptionsContext *o = optctx;
+
2877  enum { PAL, NTSC, FILM, UNKNOWN } norm = UNKNOWN;
+
2878  const char *const frame_rates[] = { "25", "30000/1001", "24000/1001" };
+
2879 
+
2880  if (!strncmp(arg, "pal-", 4)) {
+
2881  norm = PAL;
+
2882  arg += 4;
+
2883  } else if (!strncmp(arg, "ntsc-", 5)) {
+
2884  norm = NTSC;
+
2885  arg += 5;
+
2886  } else if (!strncmp(arg, "film-", 5)) {
+
2887  norm = FILM;
+
2888  arg += 5;
+
2889  } else {
+
2890  /* Try to determine PAL/NTSC by peeking in the input files */
+
2891  if (nb_input_files) {
+
2892  int i, j;
+
2893  for (j = 0; j < nb_input_files; j++) {
+
2894  for (i = 0; i < input_files[j]->nb_streams; i++) {
+
2895  AVStream *st = input_files[j]->ctx->streams[i];
+
2896  int64_t fr;
+
2897  if (st->codecpar->codec_type != AVMEDIA_TYPE_VIDEO)
+
2898  continue;
+
2899  fr = st->time_base.den * 1000LL / st->time_base.num;
+
2900  if (fr == 25000) {
+
2901  norm = PAL;
+
2902  break;
+
2903  } else if ((fr == 29970) || (fr == 23976)) {
+
2904  norm = NTSC;
+
2905  break;
+
2906  }
+
2907  }
+
2908  if (norm != UNKNOWN)
+
2909  break;
+
2910  }
+
2911  }
+
2912  if (norm != UNKNOWN)
+
2913  av_log(NULL, AV_LOG_INFO, "Assuming %s for target.\n", norm == PAL ? "PAL" : "NTSC");
+
2914  }
+
2915 
+
2916  if (norm == UNKNOWN) {
+
2917  av_log(NULL, AV_LOG_FATAL, "Could not determine norm (PAL/NTSC/NTSC-Film) for target.\n");
+
2918  av_log(NULL, AV_LOG_FATAL, "Please prefix target with \"pal-\", \"ntsc-\" or \"film-\",\n");
+
2919  av_log(NULL, AV_LOG_FATAL, "or set a framerate with \"-r xxx\".\n");
+
2920  exit_program(1);
+
2921  }
+
2922 
+
2923  if (!strcmp(arg, "vcd")) {
+
2924  opt_video_codec(o, "c:v", "mpeg1video");
+
2925  opt_audio_codec(o, "c:a", "mp2");
+
2926  parse_option(o, "f", "vcd", options);
+
2927 
+
2928  parse_option(o, "s", norm == PAL ? "352x288" : "352x240", options);
+
2929  parse_option(o, "r", frame_rates[norm], options);
+
2930  opt_default(NULL, "g", norm == PAL ? "15" : "18");
+
2931 
+
2932  opt_default(NULL, "b:v", "1150000");
+
2933  opt_default(NULL, "maxrate:v", "1150000");
+
2934  opt_default(NULL, "minrate:v", "1150000");
+
2935  opt_default(NULL, "bufsize:v", "327680"); // 40*1024*8;
+
2936 
+
2937  opt_default(NULL, "b:a", "224000");
+
2938  parse_option(o, "ar", "44100", options);
+
2939  parse_option(o, "ac", "2", options);
+
2940 
+
2941  opt_default(NULL, "packetsize", "2324");
+
2942  opt_default(NULL, "muxrate", "1411200"); // 2352 * 75 * 8;
+
2943 
+
2944  /* We have to offset the PTS, so that it is consistent with the SCR.
+
2945  SCR starts at 36000, but the first two packs contain only padding
+
2946  and the first pack from the other stream, respectively, may also have
+
2947  been written before.
+
2948  So the real data starts at SCR 36000+3*1200. */
+
2949  o->mux_preload = (36000 + 3 * 1200) / 90000.0; // 0.44
+
2950  } else if (!strcmp(arg, "svcd")) {
+
2951 
+
2952  opt_video_codec(o, "c:v", "mpeg2video");
+
2953  opt_audio_codec(o, "c:a", "mp2");
+
2954  parse_option(o, "f", "svcd", options);
+
2955 
+
2956  parse_option(o, "s", norm == PAL ? "480x576" : "480x480", options);
+
2957  parse_option(o, "r", frame_rates[norm], options);
+
2958  parse_option(o, "pix_fmt", "yuv420p", options);
+
2959  opt_default(NULL, "g", norm == PAL ? "15" : "18");
+
2960 
+
2961  opt_default(NULL, "b:v", "2040000");
+
2962  opt_default(NULL, "maxrate:v", "2516000");
+
2963  opt_default(NULL, "minrate:v", "0"); // 1145000;
+
2964  opt_default(NULL, "bufsize:v", "1835008"); // 224*1024*8;
+
2965  opt_default(NULL, "scan_offset", "1");
+
2966 
+
2967  opt_default(NULL, "b:a", "224000");
+
2968  parse_option(o, "ar", "44100", options);
+
2969 
+
2970  opt_default(NULL, "packetsize", "2324");
+
2971 
+
2972  } else if (!strcmp(arg, "dvd")) {
+
2973 
+
2974  opt_video_codec(o, "c:v", "mpeg2video");
+
2975  opt_audio_codec(o, "c:a", "ac3");
+
2976  parse_option(o, "f", "dvd", options);
+
2977 
+
2978  parse_option(o, "s", norm == PAL ? "720x576" : "720x480", options);
+
2979  parse_option(o, "r", frame_rates[norm], options);
+
2980  parse_option(o, "pix_fmt", "yuv420p", options);
+
2981  opt_default(NULL, "g", norm == PAL ? "15" : "18");
+
2982 
+
2983  opt_default(NULL, "b:v", "6000000");
+
2984  opt_default(NULL, "maxrate:v", "9000000");
+
2985  opt_default(NULL, "minrate:v", "0"); // 1500000;
+
2986  opt_default(NULL, "bufsize:v", "1835008"); // 224*1024*8;
+
2987 
+
2988  opt_default(NULL, "packetsize", "2048"); // from www.mpucoder.com: DVD sectors contain 2048 bytes of data, this is also the size of one pack.
+
2989  opt_default(NULL, "muxrate", "10080000"); // from mplex project: data_rate = 1260000. mux_rate = data_rate * 8
+
2990 
+
2991  opt_default(NULL, "b:a", "448000");
+
2992  parse_option(o, "ar", "48000", options);
+
2993 
+
2994  } else if (!strncmp(arg, "dv", 2)) {
+
2995 
+
2996  parse_option(o, "f", "dv", options);
+
2997 
+
2998  parse_option(o, "s", norm == PAL ? "720x576" : "720x480", options);
+
2999  parse_option(o, "pix_fmt", !strncmp(arg, "dv50", 4) ? "yuv422p" :
+
3000  norm == PAL ? "yuv420p" : "yuv411p", options);
+
3001  parse_option(o, "r", frame_rates[norm], options);
+
3002 
+
3003  parse_option(o, "ar", "48000", options);
+
3004  parse_option(o, "ac", "2", options);
+
3005 
+
3006  } else {
+
3007  av_log(NULL, AV_LOG_ERROR, "Unknown target: %s\n", arg);
+
3008  return AVERROR(EINVAL);
+
3009  }
+
3010 
+
3011  av_dict_copy(&o->g->codec_opts, codec_opts, AV_DICT_DONT_OVERWRITE);
+
3012  av_dict_copy(&o->g->format_opts, format_opts, AV_DICT_DONT_OVERWRITE);
+
3013 
+
3014  return 0;
+
3015 }
+
3016 
+
3017 int opt_vstats_file(void *optctx, const char *opt, const char *arg)
+
3018 {
+
3019  av_free (vstats_filename);
+
3020  vstats_filename = av_strdup (arg);
+
3021  return 0;
+
3022 }
+
3023 
+
3024 int opt_vstats(void *optctx, const char *opt, const char *arg)
+
3025 {
+
3026  char filename[40];
+
3027  time_t today2 = time(NULL);
+
3028  struct tm *today = localtime(&today2);
+
3029 
+
3030  if (!today) { // maybe tomorrow
+
3031  av_log(NULL, AV_LOG_FATAL, "Unable to get current time: %s\n", strerror(errno));
+
3032  exit_program(1);
+
3033  }
+
3034 
+
3035  snprintf(filename, sizeof(filename), "vstats_%02d%02d%02d.log", today->tm_hour, today->tm_min,
+
3036  today->tm_sec);
+
3037  return opt_vstats_file(NULL, opt, filename);
+
3038 }
+
3039 
+
3040 int opt_video_frames(void *optctx, const char *opt, const char *arg)
+
3041 {
+
3042  OptionsContext *o = optctx;
+
3043  return parse_option(o, "frames:v", arg, ffmpeg_options);
+
3044 }
+
3045 
+
3046 int opt_audio_frames(void *optctx, const char *opt, const char *arg)
+
3047 {
+
3048  OptionsContext *o = optctx;
+
3049  return parse_option(o, "frames:a", arg, ffmpeg_options);
+
3050 }
+
3051 
+
3052 int opt_data_frames(void *optctx, const char *opt, const char *arg)
+
3053 {
+
3054  OptionsContext *o = optctx;
+
3055  return parse_option(o, "frames:d", arg, ffmpeg_options);
+
3056 }
+
3057 
+
3058 int opt_default_new(OptionsContext *o, const char *opt, const char *arg)
+
3059 {
+
3060  int ret;
+
3061  AVDictionary *cbak = codec_opts;
+
3062  AVDictionary *fbak = format_opts;
+
3063  codec_opts = NULL;
+
3064  format_opts = NULL;
+
3065 
+
3066  ret = opt_default(NULL, opt, arg);
+
3067 
+
3068  av_dict_copy(&o->g->codec_opts , codec_opts, 0);
+
3069  av_dict_copy(&o->g->format_opts, format_opts, 0);
+
3070  av_dict_free(&codec_opts);
+
3071  av_dict_free(&format_opts);
+
3072  codec_opts = cbak;
+
3073  format_opts = fbak;
+
3074 
+
3075  return ret;
+
3076 }
+
3077 
+
3078 int opt_preset(void *optctx, const char *opt, const char *arg)
+
3079 {
+
3080  OptionsContext *o = optctx;
+
3081  FILE *f=NULL;
+
3082  char filename[1000], line[1000], tmp_line[1000];
+
3083  const char *codec_name = NULL;
+
3084 
+
3085  tmp_line[0] = *opt;
+
3086  tmp_line[1] = 0;
+
3087  MATCH_PER_TYPE_OPT(codec_names, str, codec_name, NULL, tmp_line);
+
3088 
+
3089  if (!(f = get_preset_file(filename, sizeof(filename), arg, *opt == 'f', codec_name))) {
+
3090  if(!strncmp(arg, "libx264-lossless", strlen("libx264-lossless"))){
+
3091  av_log(NULL, AV_LOG_FATAL, "Please use -preset <speed> -qp 0\n");
+
3092  }else
+
3093  av_log(NULL, AV_LOG_FATAL, "File for preset '%s' not found\n", arg);
+
3094  exit_program(1);
+
3095  }
+
3096 
+
3097  while (fgets(line, sizeof(line), f)) {
+
3098  char *key = tmp_line, *value, *endptr;
+
3099 
+
3100  if (strcspn(line, "#\n\r") == 0)
+
3101  continue;
+
3102  av_strlcpy(tmp_line, line, sizeof(tmp_line));
+
3103  if (!av_strtok(key, "=", &value) ||
+
3104  !av_strtok(value, "\r\n", &endptr)) {
+
3105  av_log(NULL, AV_LOG_FATAL, "%s: Invalid syntax: '%s'\n", filename, line);
+
3106  exit_program(1);
+
3107  }
+
3108  av_log(NULL, AV_LOG_DEBUG, "ffpreset[%s]: set '%s' = '%s'\n", filename, key, value);
+
3109 
+
3110  if (!strcmp(key, "acodec")) opt_audio_codec (o, key, value);
+
3111  else if (!strcmp(key, "vcodec")) opt_video_codec (o, key, value);
+
3112  else if (!strcmp(key, "scodec")) opt_subtitle_codec(o, key, value);
+
3113  else if (!strcmp(key, "dcodec")) opt_data_codec (o, key, value);
+
3114  else if (opt_default_new(o, key, value) < 0) {
+
3115  av_log(NULL, AV_LOG_FATAL, "%s: Invalid option or argument: '%s', parsed as '%s' = '%s'\n",
+
3116  filename, line, key, value);
+
3117  exit_program(1);
+
3118  }
+
3119  }
+
3120 
+
3121  fclose(f);
+
3122 
+
3123  return 0;
+
3124 }
+
3125 
+
3126 int opt_old2new(void *optctx, const char *opt, const char *arg)
+
3127 {
+
3128  OptionsContext *o = optctx;
+
3129  int ret;
+
3130  char *s = av_asprintf("%s:%c", opt + 1, *opt);
+
3131  if (!s)
+
3132  return AVERROR(ENOMEM);
+
3133  ret = parse_option(o, s, arg, ffmpeg_options);
+
3134  av_free(s);
+
3135  return ret;
+
3136 }
+
3137 
+
3138 int opt_bitrate(void *optctx, const char *opt, const char *arg)
+
3139 {
+
3140  OptionsContext *o = optctx;
+
3141 
+
3142  if(!strcmp(opt, "ab")){
+
3143  av_dict_set(&o->g->codec_opts, "b:a", arg, 0);
+
3144  return 0;
+
3145  } else if(!strcmp(opt, "b")){
+
3146  av_log(NULL, AV_LOG_WARNING, "Please use -b:a or -b:v, -b is ambiguous\n");
+
3147  av_dict_set(&o->g->codec_opts, "b:v", arg, 0);
+
3148  return 0;
+
3149  }
+
3150  av_dict_set(&o->g->codec_opts, opt, arg, 0);
+
3151  return 0;
+
3152 }
+
3153 
+
3154 int opt_qscale(void *optctx, const char *opt, const char *arg)
+
3155 {
+
3156  OptionDef *options = ffmpeg_options;
+
3157  OptionsContext *o = optctx;
+
3158  char *s;
+
3159  int ret;
+
3160  if(!strcmp(opt, "qscale")){
+
3161  av_log(NULL, AV_LOG_WARNING, "Please use -q:a or -q:v, -qscale is ambiguous\n");
+
3162  return parse_option(o, "q:v", arg, options);
+
3163  }
+
3164  s = av_asprintf("q%s", opt + 6);
+
3165  if (!s)
+
3166  return AVERROR(ENOMEM);
+
3167  ret = parse_option(o, s, arg, options);
+
3168  av_free(s);
+
3169  return ret;
+
3170 }
+
3171 
+
3172 int opt_profile(void *optctx, const char *opt, const char *arg)
+
3173 {
+
3174  OptionsContext *o = optctx;
+
3175  if(!strcmp(opt, "profile")){
+
3176  av_log(NULL, AV_LOG_WARNING, "Please use -profile:a or -profile:v, -profile is ambiguous\n");
+
3177  av_dict_set(&o->g->codec_opts, "profile:v", arg, 0);
+
3178  return 0;
+
3179  }
+
3180  av_dict_set(&o->g->codec_opts, opt, arg, 0);
+
3181  return 0;
+
3182 }
+
3183 
+
3184 int opt_video_filters(void *optctx, const char *opt, const char *arg)
+
3185 {
+
3186  OptionsContext *o = optctx;
+
3187  return parse_option(o, "filter:v", arg, ffmpeg_options);
+
3188 }
+
3189 
+
3190 int opt_audio_filters(void *optctx, const char *opt, const char *arg)
+
3191 {
+
3192  OptionsContext *o = optctx;
+
3193  return parse_option(o, "filter:a", arg, ffmpeg_options);
+
3194 }
+
3195 
+
3196 int opt_vsync(void *optctx, const char *opt, const char *arg)
+
3197 {
+
3198  if (!av_strcasecmp(arg, "cfr")) video_sync_method = VSYNC_CFR;
+
3199  else if (!av_strcasecmp(arg, "vfr")) video_sync_method = VSYNC_VFR;
+
3200  else if (!av_strcasecmp(arg, "passthrough")) video_sync_method = VSYNC_PASSTHROUGH;
+
3201  else if (!av_strcasecmp(arg, "drop")) video_sync_method = VSYNC_DROP;
+
3202 
+ + +
3205  return 0;
+
3206 }
+
3207 
+
3208 int opt_timecode(void *optctx, const char *opt, const char *arg)
+
3209 {
+
3210  OptionsContext *o = optctx;
+
3211  int ret;
+
3212  char *tcr = av_asprintf("timecode=%s", arg);
+
3213  if (!tcr)
+
3214  return AVERROR(ENOMEM);
+
3215  ret = parse_option(o, "metadata:g", tcr, ffmpeg_options);
+
3216  if (ret >= 0)
+
3217  ret = av_dict_set(&o->g->codec_opts, "gop_timecode", arg, 0);
+
3218  av_free(tcr);
+
3219  return ret;
+
3220 }
+
3221 
+
3222 int opt_channel_layout(void *optctx, const char *opt, const char *arg)
+
3223 {
+
3224  OptionsContext *o = optctx;
+
3225  char layout_str[32];
+
3226  char *stream_str;
+
3227  char *ac_str;
+
3228  int ret, channels, ac_str_size;
+
3229  uint64_t layout;
+
3230 
+
3231  layout = av_get_channel_layout(arg);
+
3232  if (!layout) {
+
3233  av_log(NULL, AV_LOG_ERROR, "Unknown channel layout: %s\n", arg);
+
3234  return AVERROR(EINVAL);
+
3235  }
+
3236  snprintf(layout_str, sizeof(layout_str), "%"PRIu64, layout);
+
3237  ret = opt_default_new(o, opt, layout_str);
+
3238  if (ret < 0)
+
3239  return ret;
+
3240 
+
3241  /* set 'ac' option based on channel layout */
+
3242  channels = av_get_channel_layout_nb_channels(layout);
+
3243  snprintf(layout_str, sizeof(layout_str), "%d", channels);
+
3244  stream_str = strchr(opt, ':');
+
3245  ac_str_size = 3 + (stream_str ? strlen(stream_str) : 0);
+
3246  ac_str = av_mallocz(ac_str_size);
+
3247  if (!ac_str)
+
3248  return AVERROR(ENOMEM);
+
3249  av_strlcpy(ac_str, "ac", 3);
+
3250  if (stream_str)
+
3251  av_strlcat(ac_str, stream_str, ac_str_size);
+
3252  ret = parse_option(o, ac_str, layout_str, ffmpeg_options);
+
3253  av_free(ac_str);
+
3254 
+
3255  return ret;
+
3256 }
+
3257 
+
3258 int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
+
3259 {
+
3260  OptionsContext *o = optctx;
+
3261  return parse_option(o, "q:a", arg, ffmpeg_options);
+
3262 }
+
3263 
+
3264 int opt_filter_complex(void *optctx, const char *opt, const char *arg)
+
3265 {
+ +
3267  if (!(filtergraphs[nb_filtergraphs - 1] = av_mallocz(sizeof(*filtergraphs[0]))))
+
3268  return AVERROR(ENOMEM);
+ +
3270  filtergraphs[nb_filtergraphs - 1]->graph_desc = av_strdup(arg);
+
3271  if (!filtergraphs[nb_filtergraphs - 1]->graph_desc)
+
3272  return AVERROR(ENOMEM);
+
3273 
+ +
3275 
+
3276  return 0;
+
3277 }
+
3278 
+
3279 int opt_filter_complex_script(void *optctx, const char *opt, const char *arg)
+
3280 {
+
3281  uint8_t *graph_desc = fftools_read_file(arg);
+
3282  if (!graph_desc)
+
3283  return AVERROR(EINVAL);
+
3284 
+ +
3286  if (!(filtergraphs[nb_filtergraphs - 1] = av_mallocz(sizeof(*filtergraphs[0]))))
+
3287  return AVERROR(ENOMEM);
+ +
3289  filtergraphs[nb_filtergraphs - 1]->graph_desc = graph_desc;
+
3290 
+ +
3292 
+
3293  return 0;
+
3294 }
+
3295 
+
3296 void show_help_default_ffmpeg(const char *opt, const char *arg)
+
3297 {
+
3298  OptionDef *options = ffmpeg_options;
+
3299  /* per-file options have at least one of those set */
+
3300  const int per_file = OPT_SPEC | OPT_OFFSET | OPT_PERFILE;
+
3301  int show_advanced = 0, show_avoptions = 0;
+
3302 
+
3303  if (opt && *opt) {
+
3304  if (!strcmp(opt, "long"))
+
3305  show_advanced = 1;
+
3306  else if (!strcmp(opt, "full"))
+
3307  show_advanced = show_avoptions = 1;
+
3308  else
+
3309  av_log(NULL, AV_LOG_ERROR, "Unknown help option '%s'.\n", opt);
+
3310  }
+
3311 
+
3312  show_usage();
+
3313 
+
3314  av_log(NULL, AV_LOG_STDERR, "Getting help:\n"
+
3315  " -h -- print basic options\n"
+
3316  " -h long -- print more options\n"
+
3317  " -h full -- print all options (including all format and codec specific options, very long)\n"
+
3318  " -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol\n"
+
3319  " See man %s for detailed description of the options.\n"
+
3320  "\n", program_name);
+
3321 
+
3322  show_help_options(options, "Print help / information / capabilities:",
+
3323  OPT_EXIT, 0, 0);
+
3324 
+
3325  show_help_options(options, "Global options (affect whole program "
+
3326  "instead of just one file):",
+
3327  0, per_file | OPT_EXIT | OPT_EXPERT, 0);
+
3328  if (show_advanced)
+
3329  show_help_options(options, "Advanced global options:", OPT_EXPERT,
+
3330  per_file | OPT_EXIT, 0);
+
3331 
+
3332  show_help_options(options, "Per-file main options:", 0,
+ +
3334  OPT_EXIT, per_file);
+
3335  if (show_advanced)
+
3336  show_help_options(options, "Advanced per-file options:",
+
3337  OPT_EXPERT, OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE, per_file);
+
3338 
+
3339  show_help_options(options, "Video options:",
+ +
3341  if (show_advanced)
+
3342  show_help_options(options, "Advanced Video options:",
+ +
3344 
+
3345  show_help_options(options, "Audio options:",
+ +
3347  if (show_advanced)
+
3348  show_help_options(options, "Advanced Audio options:",
+ +
3350  show_help_options(options, "Subtitle options:",
+
3351  OPT_SUBTITLE, 0, 0);
+
3352  av_log(NULL, AV_LOG_STDERR, "\n");
+
3353 
+
3354  if (show_avoptions) {
+
3355  int flags = AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM;
+
3356  show_help_children(avcodec_get_class(), flags);
+
3357  show_help_children(avformat_get_class(), flags);
+
3358 #if CONFIG_SWSCALE
+
3359  show_help_children(sws_get_class(), flags);
+
3360 #endif
+
3361 #if CONFIG_SWRESAMPLE
+
3362  show_help_children(swr_get_class(), AV_OPT_FLAG_AUDIO_PARAM);
+
3363 #endif
+
3364  show_help_children(avfilter_get_class(), AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_FILTERING_PARAM);
+
3365  show_help_children(av_bsf_get_class(), AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_BSF_PARAM);
+
3366  }
+
3367 }
+
3368 
+
3369 void show_usage(void)
+
3370 {
+
3371  av_log(NULL, AV_LOG_INFO, "Hyper fast Audio and Video encoder\n");
+
3372  av_log(NULL, AV_LOG_INFO, "usage: %s [options] [[infile options] -i infile]... {[outfile options] outfile}...\n", program_name);
+
3373  av_log(NULL, AV_LOG_INFO, "\n");
+
3374 }
+
3375 
+
3376 enum OptGroup {
+
3377  GROUP_OUTFILE,
+
3378  GROUP_INFILE,
+
3379 };
+
3380 
+
3381 const OptionGroupDef groups[] = {
+
3382  [GROUP_OUTFILE] = { "output url", NULL, OPT_OUTPUT },
+
3383  [GROUP_INFILE] = { "input url", "i", OPT_INPUT },
+
3384 };
+
3385 
+
3386 int open_files(OptionGroupList *l, const char *inout,
+
3387  int (*open_file)(OptionsContext*, const char*))
+
3388 {
+
3389  int i, ret;
+
3390 
+
3391  for (i = 0; i < l->nb_groups; i++) {
+
3392  OptionGroup *g = &l->groups[i];
+
3393  OptionsContext o;
+
3394 
+
3395  init_options(&o);
+
3396  o.g = g;
+
3397 
+
3398  ret = parse_optgroup(&o, g);
+
3399  if (ret < 0) {
+
3400  av_log(NULL, AV_LOG_ERROR, "Error parsing options for %s file "
+
3401  "%s.\n", inout, g->arg);
+
3402  uninit_options(&o);
+
3403  return ret;
+
3404  }
+
3405 
+
3406  av_log(NULL, AV_LOG_DEBUG, "Opening an %s file: %s.\n", inout, g->arg);
+
3407  ret = open_file(&o, g->arg);
+
3408  uninit_options(&o);
+
3409  if (ret < 0) {
+
3410  av_log(NULL, AV_LOG_ERROR, "Error opening %s file %s.\n",
+
3411  inout, g->arg);
+
3412  return ret;
+
3413  }
+
3414  av_log(NULL, AV_LOG_DEBUG, "Successfully opened the file.\n");
+
3415  }
+
3416 
+
3417  return 0;
+
3418 }
+
3419 
+
3420 int ffmpeg_parse_options(int argc, char **argv)
+
3421 {
+
3422  OptionParseContext octx;
+
3423  uint8_t error[128];
+
3424  int ret;
+
3425 
+
3426  memset(&octx, 0, sizeof(octx));
+
3427 
+
3428  /* split the commandline into an internal representation */
+
3429  ret = split_commandline(&octx, argc, argv, ffmpeg_options, groups,
+
3430  FF_ARRAY_ELEMS(groups));
+
3431  if (ret < 0) {
+
3432  av_log(NULL, AV_LOG_FATAL, "Error splitting the argument list: ");
+
3433  goto fail;
+
3434  }
+
3435 
+
3436  /* apply global options */
+
3437  ret = parse_optgroup(NULL, &octx.global_opts);
+
3438  if (ret < 0) {
+
3439  av_log(NULL, AV_LOG_FATAL, "Error parsing global options: ");
+
3440  goto fail;
+
3441  }
+
3442 
+
3443  /* configure terminal and setup signal handlers */
+
3444  term_init();
+
3445 
+
3446  /* open input files */
+
3447  ret = open_files(&octx.groups[GROUP_INFILE], "input", open_input_file);
+
3448  if (ret < 0) {
+
3449  av_log(NULL, AV_LOG_FATAL, "Error opening input files: ");
+
3450  goto fail;
+
3451  }
+
3452 
+
3453  /* create the complex filtergraphs */
+
3454  ret = init_complex_filters();
+
3455  if (ret < 0) {
+
3456  av_log(NULL, AV_LOG_FATAL, "Error initializing complex filters.\n");
+
3457  goto fail;
+
3458  }
+
3459 
+
3460  /* open output files */
+
3461  ret = open_files(&octx.groups[GROUP_OUTFILE], "output", open_output_file);
+
3462  if (ret < 0) {
+
3463  av_log(NULL, AV_LOG_FATAL, "Error opening output files: ");
+
3464  goto fail;
+
3465  }
+
3466 
+ +
3468 
+
3469 fail:
+
3470  uninit_parse_context(&octx);
+
3471  if (ret < 0) {
+
3472  av_strerror(ret, error, sizeof(error));
+
3473  av_log(NULL, AV_LOG_FATAL, "%s\n", error);
+
3474  }
+
3475  return ret;
+
3476 }
+
3477 
+
3478 int opt_progress(void *optctx, const char *opt, const char *arg)
+
3479 {
+
3480  AVIOContext *avio = NULL;
+
3481  int ret;
+
3482 
+
3483  if (!strcmp(arg, "-"))
+
3484  arg = "pipe:";
+
3485  ret = avio_open2(&avio, arg, AVIO_FLAG_WRITE, &int_cb, NULL);
+
3486  if (ret < 0) {
+
3487  av_log(NULL, AV_LOG_ERROR, "Failed to open progress URL \"%s\": %s\n",
+
3488  arg, av_err2str(ret));
+
3489  return ret;
+
3490  }
+
3491  progress_avio = avio;
+
3492  return 0;
+
3493 }
+
+
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Definition: fftools_cmdutils.c:2148
+
grow_array
void * grow_array(void *array, int elem_size, int *size, int new_size)
Definition: fftools_cmdutils.c:2234
+
OptionsContext::readrate
float readrate
Definition: fftools_ffmpeg.h:145
+
OutputStream::last_mux_dts
int64_t last_mux_dts
Definition: fftools_ffmpeg.h:493
+
OptionsContext::seek_timestamp
int seek_timestamp
Definition: fftools_ffmpeg.h:123
+
OutputStream::avfilter
char * avfilter
Definition: fftools_ffmpeg.h:542
+
show_hwaccels
int show_hwaccels(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:254
+
opt_name_max_frames
static const char *const opt_name_max_frames[]
Definition: fftools_ffmpeg_opt.c:83
+
uninit_parse_context
void uninit_parse_context(OptionParseContext *octx)
Definition: fftools_cmdutils.c:744
+
OptionGroupList::nb_groups
int nb_groups
Definition: fftools_cmdutils.h:322
+
OutputStream::stream_copy
int stream_copy
Definition: fftools_ffmpeg.h:553
+
index
fg index
Definition: fftools_ffmpeg_filter.c:177
+
ffmpeg_parse_options
int ffmpeg_parse_options(int argc, char **argv)
+
opt_name_fix_sub_duration
static const char *const opt_name_fix_sub_duration[]
Definition: fftools_ffmpeg_opt.c:102
+
OptionDef::flags
int flags
Definition: fftools_cmdutils.h:192
+
opt_name_intra_matrices
static const char *const opt_name_intra_matrices[]
Definition: fftools_ffmpeg_opt.c:92
+
filter_hw_device
__thread HWDevice * filter_hw_device
Definition: fftools_ffmpeg_opt.c:158
+
parse_matrix_coeffs
void parse_matrix_coeffs(uint16_t *dest, const char *str)
Definition: fftools_ffmpeg_opt.c:1665
+
AudioChannelMap::stream_idx
int stream_idx
Definition: fftools_ffmpeg.h:113
+
OutputStream::finished
OSTFinished finished
Definition: fftools_ffmpeg.h:551
+
do_pkt_dump
__thread int do_pkt_dump
Definition: fftools_ffmpeg_opt.c:175
+
AudioChannelMap::file_idx
int file_idx
Definition: fftools_ffmpeg.h:113
+
do_benchmark_all
__thread int do_benchmark_all
Definition: fftools_ffmpeg_opt.c:173
+
opt_name_time_bases
static const char *const opt_name_time_bases[]
Definition: fftools_ffmpeg_opt.c:112
+
opt_vstats
int opt_vstats(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3024
+
OutputStream::rotate_override_value
double rotate_override_value
Definition: fftools_ffmpeg.h:520
+
OPT_EXIT
#define OPT_EXIT
Definition: fftools_cmdutils.h:203
+
if
if(!fg) exit_program(1)
+
opt_audio_filters
int opt_audio_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3190
+
OutputStream::ref_par
AVCodecParameters * ref_par
Definition: fftools_ffmpeg.h:501
+
hw_device_init_from_string
int hw_device_init_from_string(const char *arg, HWDevice **dev)
Definition: fftools_ffmpeg_hw.c:103
+
filter_nbthreads
__thread int filter_nbthreads
Definition: fftools_ffmpeg_opt.c:187
+
filter_codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Definition: fftools_cmdutils.c:2156
+
OptionsContext::accurate_seek
int accurate_seek
Definition: fftools_ffmpeg.h:146
+
program_name
__thread char * program_name
Definition: fftools_cmdutils.c:97
+
OutputStream::autoscale
int autoscale
Definition: fftools_ffmpeg.h:519
+
codec_opts
__thread AVDictionary * codec_opts
Definition: fftools_cmdutils.c:102
+
opt_preset
int opt_preset(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3078
+
OptionsContext::limit_filesize
uint64_t limit_filesize
Definition: fftools_ffmpeg.h:177
+
fftools_copy_metadata
int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:668
+
OptionsContext::attachments
const char ** attachments
Definition: fftools_ffmpeg.h:170
+
OutputStream::filters
char * filters
filtergraph associated to the -filter option
Definition: fftools_ffmpeg.h:543
+
OPT_OFFSET
#define OPT_OFFSET
Definition: fftools_cmdutils.h:206
+
OptionsContext::mux_preload
float mux_preload
Definition: fftools_ffmpeg.h:178
+
InputStream::discard
int discard
Definition: fftools_ffmpeg.h:327
+
OutputStream::logfile_prefix
char * logfile_prefix
Definition: fftools_ffmpeg.h:538
+
OPT_INPUT
#define OPT_INPUT
Definition: fftools_cmdutils.h:210
+
OutputStream::muxing_queue
AVFifoBuffer * muxing_queue
Definition: fftools_ffmpeg.h:584
+
OutputStream::rotate_overridden
int rotate_overridden
Definition: fftools_ffmpeg.h:518
+
opt_default_new
int opt_default_new(OptionsContext *o, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3058
+
OutputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:603
+
opt_name_frame_pix_fmts
static const char *const opt_name_frame_pix_fmts[]
Definition: fftools_ffmpeg_opt.c:76
+
OptionDef::name
const char * name
Definition: fftools_cmdutils.h:191
+
fftools_ffmpeg.h
+
OutputStream::force_fps
int force_fps
Definition: fftools_ffmpeg.h:516
+
FilterGraph::index
int index
Definition: fftools_ffmpeg.h:312
+
opt_old2new
int opt_old2new(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3126
+
exit_program
void exit_program(int ret)
Definition: fftools_cmdutils.c:160
+
output_files
__thread OutputFile ** output_files
Definition: fftools_ffmpeg.c:183
+
nb_input_streams
__thread int nb_input_streams
Definition: fftools_ffmpeg.c:177
+
opt_abort_on
int opt_abort_on(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:284
+
OptionsContext::streamid_map
int * streamid_map
Definition: fftools_ffmpeg.h:189
+
opt_name_codec_names
static const char *const opt_name_codec_names[]
Definition: fftools_ffmpeg_opt.c:70
+
InputStream
Definition: fftools_ffmpeg.h:324
+
OptionsContext::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:121
+
progress_avio
__thread AVIOContext * progress_avio
Definition: fftools_ffmpeg.c:172
+
VSYNC_CFR
#define VSYNC_CFR
Definition: fftools_ffmpeg.h:75
+
OptionsContext::nb_audio_channel_maps
int nb_audio_channel_maps
Definition: fftools_ffmpeg.h:166
+
opt_name_pass
static const char *const opt_name_pass[]
Definition: fftools_ffmpeg_opt.c:104
+
assert_file_overwrite
void assert_file_overwrite(const char *filename)
Definition: fftools_ffmpeg_opt.c:1034
+
OptionsContext::stream_maps
StreamMap * stream_maps
Definition: fftools_ffmpeg.h:163
+
new_subtitle_stream
OutputStream * new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2063
+
OptionsContext::dump_attachment
SpecifierOpt * dump_attachment
Definition: fftools_ffmpeg.h:151
+
do_psnr
__thread int do_psnr
Definition: fftools_ffmpeg_opt.c:197
+
print_stats
__thread int print_stats
Definition: fftools_ffmpeg_opt.c:182
+
open_input_file
int open_input_file(OptionsContext *o, const char *filename)
Definition: fftools_ffmpeg_opt.c:1109
+
HWACCEL_NONE
@ HWACCEL_NONE
Definition: fftools_ffmpeg.h:83
+
add_input_streams
void add_input_streams(OptionsContext *o, AVFormatContext *ic)
Definition: fftools_ffmpeg_opt.c:819
+
opt_data_codec
int opt_data_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:357
+
OutputFilter::channel_layout
uint64_t channel_layout
Definition: fftools_ffmpeg.h:303
+
opt_sdp_file
int opt_sdp_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:566
+
opt_name_frame_sizes
static const char *const opt_name_frame_sizes[]
Definition: fftools_ffmpeg_opt.c:75
+
OptionsContext::stop_time
int64_t stop_time
Definition: fftools_ffmpeg.h:176
+
AudioChannelMap::ofile_idx
int ofile_idx
Definition: fftools_ffmpeg.h:114
+
OutputStream::muxing_queue_data_threshold
size_t muxing_queue_data_threshold
Definition: fftools_ffmpeg.h:593
+
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Definition: fftools_cmdutils.c:204
+
video_sync_method
__thread int video_sync_method
Definition: fftools_ffmpeg_opt.c:169
+
opt_name_force_fps
static const char *const opt_name_force_fps[]
Definition: fftools_ffmpeg_opt.c:89
+
opt_name_autoscale
static const char *const opt_name_autoscale[]
Definition: fftools_ffmpeg_opt.c:82
+
get_line
uint8_t * get_line(AVIOContext *s)
Definition: fftools_ffmpeg_opt.c:1399
+
opt_progress
int opt_progress(void *optctx, const char *opt, const char *arg)
+
OutputStream::audio_channels_mapped
int audio_channels_mapped
Definition: fftools_ffmpeg.h:536
+
OutputStream::attachment_filename
const char * attachment_filename
Definition: fftools_ffmpeg.h:562
+
opt_name_codec_tags
static const char *const opt_name_codec_tags[]
Definition: fftools_ffmpeg_opt.c:85
+
OutputStream::file_index
int file_index
Definition: fftools_ffmpeg.h:479
+
OptionGroup::codec_opts
AVDictionary * codec_opts
Definition: fftools_cmdutils.h:307
+
OPT_OUTPUT
#define OPT_OUTPUT
Definition: fftools_cmdutils.h:211
+
OptionsContext::input_ts_offset
int64_t input_ts_offset
Definition: fftools_ffmpeg.h:142
+
OptionsContext::data_disable
int data_disable
Definition: fftools_ffmpeg.h:186
+
OptionsContext::metadata
SpecifierOpt * metadata
Definition: fftools_ffmpeg.h:192
+
stats_period
__thread int64_t stats_period
Definition: fftools_ffmpeg_opt.c:191
+
OutputStream::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:506
+
HWACCEL_AUTO
@ HWACCEL_AUTO
Definition: fftools_ffmpeg.h:84
+
new_audio_stream
OutputStream * new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:1956
+
abort_on_flags
__thread int abort_on_flags
Definition: fftools_ffmpeg_opt.c:181
+
input_sync
__thread int input_sync
Definition: fftools_ffmpeg_opt.c:198
+
max_error_rate
__thread float max_error_rate
Definition: fftools_ffmpeg_opt.c:186
+
OptionsContext::metadata_chapters_manual
int metadata_chapters_manual
Definition: fftools_ffmpeg.h:169
+
opt_name_max_muxing_queue_size
static const char *const opt_name_max_muxing_queue_size[]
Definition: fftools_ffmpeg_opt.c:106
+
OptionGroupList
Definition: fftools_cmdutils.h:318
+
opt_name_ts_scale
static const char *const opt_name_ts_scale[]
Definition: fftools_ffmpeg_opt.c:77
+
qp_hist
__thread int qp_hist
Definition: fftools_ffmpeg_opt.c:183
+
debug_ts
__thread int debug_ts
Definition: fftools_ffmpeg_opt.c:179
+
new_output_stream
OutputStream * new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index)
Definition: fftools_ffmpeg_opt.c:1479
+
StreamMap::disabled
int disabled
Definition: fftools_ffmpeg.h:104
+
OutputStream::top_field_first
int top_field_first
Definition: fftools_ffmpeg.h:517
+
InputFile::loop
int loop
Definition: fftools_ffmpeg.h:430
+
InputFile::readrate
float readrate
Definition: fftools_ffmpeg.h:445
+
opt_timecode
int opt_timecode(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3208
+
ffmpeg_options
__thread OptionDef * ffmpeg_options
Definition: fftools_ffmpeg.c:5208
+
OutputStream::copy_prior_start
int copy_prior_start
Definition: fftools_ffmpeg.h:564
+
OptionsContext::frame_rates
SpecifierOpt * frame_rates
Definition: fftools_ffmpeg.h:132
+
exit_on_error
__thread int exit_on_error
Definition: fftools_ffmpeg_opt.c:180
+
OutputStream::disposition
char * disposition
Definition: fftools_ffmpeg.h:565
+
OutputStream::max_frame_rate
AVRational max_frame_rate
Definition: fftools_ffmpeg.h:514
+
InputFile::pkt
AVPacket * pkt
Definition: fftools_ffmpeg.h:448
+
parse_number_or_die
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
Definition: fftools_cmdutils.c:171
+
OutputStream::source_index
int source_index
Definition: fftools_ffmpeg.h:481
+
OPT_VIDEO
#define OPT_VIDEO
Definition: fftools_cmdutils.h:197
+
OptionsContext::shortest
int shortest
Definition: fftools_ffmpeg.h:180
+
audio_sync_method
__thread int audio_sync_method
Definition: fftools_ffmpeg_opt.c:168
+
opt_name_audio_channels
static const char *const opt_name_audio_channels[]
Definition: fftools_ffmpeg_opt.c:71
+
OutputFilter
Definition: fftools_ffmpeg.h:288
+
OptionGroup::swr_opts
AVDictionary * swr_opts
Definition: fftools_cmdutils.h:311
+
input_stream_potentially_available
__thread int input_stream_potentially_available
Definition: fftools_ffmpeg_opt.c:199
+
OutputStream::sws_dict
AVDictionary * sws_dict
Definition: fftools_ffmpeg.h:547
+
opt_vsync
int opt_vsync(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3196
+
opt_name_frame_rates
static const char *const opt_name_frame_rates[]
Definition: fftools_ffmpeg_opt.c:73
+
OptionsContext
Definition: fftools_ffmpeg.h:117
+
OutputStream::max_muxing_queue_size
int max_muxing_queue_size
Definition: fftools_ffmpeg.h:581
+
OPT_INT
#define OPT_INT
Definition: fftools_cmdutils.h:199
+
OptionsContext::nb_frame_rates
int nb_frame_rates
Definition: fftools_ffmpeg.h:133
+
init_simple_filtergraph
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
+
OptionGroup::sws_dict
AVDictionary * sws_dict
Definition: fftools_cmdutils.h:310
+
opt_default
int opt_default(void *optctx, const char *opt, const char *arg)
Definition: fftools_cmdutils.c:575
+
OptionsContext::nb_stream_maps
int nb_stream_maps
Definition: fftools_ffmpeg.h:164
+
DECODING_FOR_OST
#define DECODING_FOR_OST
Definition: fftools_ffmpeg.h:330
+
opt_name_max_frame_rates
static const char *const opt_name_max_frame_rates[]
Definition: fftools_ffmpeg_opt.c:74
+
HWAccel::id
enum HWAccelID id
Definition: fftools_ffmpeg.h:92
+
opt_name_guess_layout_max
static const char *const opt_name_guess_layout_max[]
Definition: fftools_ffmpeg_opt.c:108
+
opt_name_muxing_queue_data_threshold
static const char *const opt_name_muxing_queue_data_threshold[]
Definition: fftools_ffmpeg_opt.c:107
+
start_at_zero
__thread int start_at_zero
Definition: fftools_ffmpeg_opt.c:177
+
stdin_interaction
__thread int stdin_interaction
Definition: fftools_ffmpeg_opt.c:184
+
OptionDef::off
size_t off
Definition: fftools_cmdutils.h:215
+
OutputFile::opts
AVDictionary * opts
Definition: fftools_ffmpeg.h:604
+
get_preset_file
FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
Definition: fftools_cmdutils.c:2098
+
sdp_filename
__thread char * sdp_filename
Definition: fftools_ffmpeg_opt.c:161
+
MATCH_PER_TYPE_OPT
#define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)
Definition: fftools_ffmpeg_opt.c:142
+
OptionsContext::max_frames
SpecifierOpt * max_frames
Definition: fftools_ffmpeg.h:194
+
do_hex_dump
__thread int do_hex_dump
Definition: fftools_ffmpeg_opt.c:174
+
opt_name_inter_matrices
static const char *const opt_name_inter_matrices[]
Definition: fftools_ffmpeg_opt.c:93
+
find_stream_info
__thread int find_stream_info
Definition: fftools_ffmpeg_opt.c:203
+
dts_error_threshold
__thread float dts_error_threshold
Definition: fftools_ffmpeg_opt.c:165
+
opt_name_chroma_intra_matrices
static const char *const opt_name_chroma_intra_matrices[]
Definition: fftools_ffmpeg_opt.c:94
+
opt_name_filters
static const char *const opt_name_filters[]
Definition: fftools_ffmpeg_opt.c:99
+
VSYNC_AUTO
#define VSYNC_AUTO
Definition: fftools_ffmpeg.h:73
+
SpecifierOpt::i
int i
Definition: fftools_cmdutils.h:182
+
OptionsContext::mux_max_delay
float mux_max_delay
Definition: fftools_ffmpeg.h:179
+
InputFile
Definition: fftools_ffmpeg.h:425
+
opt_sameq
int opt_sameq(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:318
+
InputFile::accurate_seek
int accurate_seek
Definition: fftools_ffmpeg.h:446
+
FilterGraph::graph_desc
const char * graph_desc
Definition: fftools_ffmpeg.h:313
+
OutputStream::encoding_needed
int encoding_needed
Definition: fftools_ffmpeg.h:483
+
find_codec_or_die
const AVCodec * find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
Definition: fftools_ffmpeg_opt.c:773
+
file_overwrite
__thread int file_overwrite
Definition: fftools_ffmpeg_opt.c:195
+
OPT_STRING
#define OPT_STRING
Definition: fftools_cmdutils.h:196
+
OutputFile::shortest
int shortest
Definition: fftools_ffmpeg.h:610
+
parse_time_or_die
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
Definition: fftools_cmdutils.c:192
+
OptionsContext::audio_sample_rate
SpecifierOpt * audio_sample_rate
Definition: fftools_ffmpeg.h:130
+
nb_input_files
__thread int nb_input_files
Definition: fftools_ffmpeg.c:179
+
InputFile::streams
InputStream * streams
Definition: fftools_ffprobe.c:88
+
opt_name_audio_sample_rate
static const char *const opt_name_audio_sample_rate[]
Definition: fftools_ffmpeg_opt.c:72
+
OutputFile::recording_time
int64_t recording_time
desired length of the resulting file in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:606
+
OutputStream::bsf_ctx
AVBSFContext * bsf_ctx
Definition: fftools_ffmpeg.h:498
+
OptionsContext::metadata_global_manual
int metadata_global_manual
Definition: fftools_ffmpeg.h:167
+
StreamMap
Definition: fftools_ffmpeg.h:103
+
opt_name_reinit_filters
static const char *const opt_name_reinit_filters[]
Definition: fftools_ffmpeg_opt.c:101
+
assert_avoptions
void assert_avoptions(AVDictionary *m)
Definition: fftools_ffmpeg.c:791
+
nb_output_streams
__thread int nb_output_streams
Definition: fftools_ffmpeg.c:182
+
opt_filter_hw_device
int opt_filter_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:620
+
frame_drop_threshold
__thread float frame_drop_threshold
Definition: fftools_ffmpeg_opt.c:170
+
OptionsContext::audio_channel_maps
AudioChannelMap * audio_channel_maps
Definition: fftools_ffmpeg.h:165
+
ABORT_ON_FLAG_EMPTY_OUTPUT
#define ABORT_ON_FLAG_EMPTY_OUTPUT
Definition: fftools_ffmpeg.h:468
+
new_video_stream
OutputStream * new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:1745
+
OptionsContext::nb_audio_sample_rate
int nb_audio_sample_rate
Definition: fftools_ffmpeg.h:131
+
opt_name_copy_prior_start
static const char *const opt_name_copy_prior_start[]
Definition: fftools_ffmpeg_opt.c:98
+
OptionsContext::nb_frame_pix_fmts
int nb_frame_pix_fmts
Definition: fftools_ffmpeg.h:139
+
opt_stats_period
int opt_stats_period(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:303
+
open_output_file
int open_output_file(OptionsContext *o, const char *filename)
Definition: fftools_ffmpeg_opt.c:2210
+
OptionsContext::loop
int loop
Definition: fftools_ffmpeg.h:143
+
init_complex_filters
int init_complex_filters(void)
Definition: fftools_ffmpeg_opt.c:2198
+
opt_name_hwaccels
static const char *const opt_name_hwaccels[]
Definition: fftools_ffmpeg_opt.c:78
+
vstats_filename
__thread char * vstats_filename
Definition: fftools_ffmpeg_opt.c:160
+
term_exit
void term_exit(void)
Definition: fftools_ffmpeg.c:430
+
ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM
Definition: fftools_ffmpeg.h:469
+
OutputStream::forced_kf_ref_pts
int64_t forced_kf_ref_pts
Definition: fftools_ffmpeg.h:525
+
OptionGroupList::groups
OptionGroup * groups
Definition: fftools_cmdutils.h:321
+
InputFile::ctx
AVFormatContext * ctx
Definition: fftools_ffmpeg.h:426
+
split_commandline
int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
Definition: fftools_cmdutils.c:770
+
OutputStream::logfile
FILE * logfile
Definition: fftools_ffmpeg.h:539
+
opt_name_apad
static const char *const opt_name_apad[]
Definition: fftools_ffmpeg_opt.c:109
+
parse_meta_type
void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec)
Definition: fftools_ffmpeg_opt.c:641
+
vstats_version
__thread int vstats_version
Definition: fftools_ffmpeg_opt.c:189
+
AudioChannelMap::ostream_idx
int ostream_idx
Definition: fftools_ffmpeg.h:114
+
check_streamcopy_filters
void check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type)
Definition: fftools_ffmpeg_opt.c:1731
+
get_preset_file_2
int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s)
Definition: fftools_ffmpeg_opt.c:1418
+
OptionsContext::frame_pix_fmts
SpecifierOpt * frame_pix_fmts
Definition: fftools_ffmpeg.h:138
+
FilterGraph::nb_outputs
int nb_outputs
Definition: fftools_ffmpeg.h:321
+
opt_name_passlogfiles
static const char *const opt_name_passlogfiles[]
Definition: fftools_ffmpeg_opt.c:105
+
opt_name_sample_fmts
static const char *const opt_name_sample_fmts[]
Definition: fftools_ffmpeg_opt.c:86
+
fftools_read_file
uint8_t * fftools_read_file(const char *filename)
Definition: fftools_ffmpeg_opt.c:1683
+
filters
ist filters[ist->nb_filters - 1]
Definition: fftools_ffmpeg_filter.c:200
+
recast_media
static __thread int recast_media
Definition: fftools_ffmpeg_opt.c:202
+
OutputStream::resample_opts
AVDictionary * resample_opts
Definition: fftools_ffmpeg.h:549
+
MATCH_PER_STREAM_OPT
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)
Definition: fftools_ffmpeg_opt.c:125
+
OutputStream::filter
OutputFilter * filter
Definition: fftools_ffmpeg.h:541
+
nb_output_files
__thread int nb_output_files
Definition: fftools_ffmpeg.c:184
+
choose_encoder
int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost)
Definition: fftools_ffmpeg_opt.c:1444
+
HWACCEL_VIDEOTOOLBOX
@ HWACCEL_VIDEOTOOLBOX
Definition: fftools_ffmpeg.h:86
+
OutputFilter::sample_rates
int * sample_rates
Definition: fftools_ffmpeg.h:308
+
AudioChannelMap
Definition: fftools_ffmpeg.h:112
+
new_attachment_stream
OutputStream * new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2055
+
GROW_ARRAY
#define GROW_ARRAY(array, nb_elems)
Definition: fftools_cmdutils.h:612
+
opt_recording_timestamp
int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:758
+
OutputStream::enc_timebase
AVRational enc_timebase
Definition: fftools_ffmpeg.h:496
+
ist
fg inputs[0] ist
Definition: fftools_ffmpeg_filter.c:191
+
OptionsContext::nb_attachments
int nb_attachments
Definition: fftools_ffmpeg.h:171
+
OptionGroup::arg
const char * arg
Definition: fftools_cmdutils.h:302
+
InputFile::nb_streams
int nb_streams
Definition: fftools_ffmpeg.h:441
+
OPT_SUBTITLE
#define OPT_SUBTITLE
Definition: fftools_cmdutils.h:201
+
copy_tb
__thread int copy_tb
Definition: fftools_ffmpeg_opt.c:178
+
uninit_options
void uninit_options(OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:207
+
format_opts
__thread AVDictionary * format_opts
Definition: fftools_cmdutils.c:102
+
InputStream::user_set_discard
int user_set_discard
Definition: fftools_ffmpeg.h:328
+
OutputFilter::formats
int * formats
Definition: fftools_ffmpeg.h:306
+
OptionsContext::thread_queue_size
int thread_queue_size
Definition: fftools_ffmpeg.h:147
+
OptionDef::u
union OptionDef::@1 u
+
OptionsContext::nb_audio_channels
int nb_audio_channels
Definition: fftools_ffmpeg.h:129
+
OptionsContext::frame_sizes
SpecifierOpt * frame_sizes
Definition: fftools_ffmpeg.h:136
+
opt_map_channel
int opt_map_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:489
+
SET_DICT
#define SET_DICT(type, meta, context, index)
+
opt_name_bitstream_filters
static const char *const opt_name_bitstream_filters[]
Definition: fftools_ffmpeg_opt.c:84
+
show_help_children
void show_help_children(const AVClass *avClass, int flags)
Definition: fftools_cmdutils.c:233
+
read_yesno
int read_yesno(void)
Definition: fftools_cmdutils.c:2087
+
no_file_overwrite
__thread int no_file_overwrite
Definition: fftools_ffmpeg_opt.c:196
+
StreamMap::sync_file_index
int sync_file_index
Definition: fftools_ffmpeg.h:107
+
FilterGraph::outputs
OutputFilter ** outputs
Definition: fftools_ffmpeg.h:320
+
OutputStream::sync_ist
struct InputStream * sync_ist
Definition: fftools_ffmpeg.h:487
+
opt_name_presets
static const char *const opt_name_presets[]
Definition: fftools_ffmpeg_opt.c:96
+
opt_video_filters
int opt_video_filters(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3184
+
OptionsContext::metadata_map
SpecifierOpt * metadata_map
Definition: fftools_ffmpeg.h:220
+
print_error
void print_error(const char *filename, int err)
Definition: fftools_cmdutils.c:1134
+
SpecifierOpt
Definition: fftools_cmdutils.h:178
+
InputFile::ts_offset
int64_t ts_offset
Definition: fftools_ffmpeg.h:436
+
OutputFilter::format
int format
Definition: fftools_ffmpeg.h:301
+
OptionParseContext
Definition: fftools_cmdutils.h:325
+
OutputStream::index
int index
Definition: fftools_ffmpeg.h:480
+
term_init
void term_init(void)
Definition: fftools_ffmpeg.c:495
+
InputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:326
+
OptionsContext::nb_program
int nb_program
Definition: fftools_ffmpeg.h:255
+
OptionGroupDef
Definition: fftools_cmdutils.h:285
+
HWAccel
Definition: fftools_ffmpeg.h:89
+
OutputStream::forced_keyframes
char * forced_keyframes
Definition: fftools_ffmpeg.h:529
+
OptionsContext::format
const char * format
Definition: fftools_ffmpeg.h:124
+
OutputStream::keep_pix_fmt
int keep_pix_fmt
Definition: fftools_ffmpeg.h:567
+
opt_map
int opt_map(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:363
+
opt_name_discard
static const char *const opt_name_discard[]
Definition: fftools_ffmpeg_opt.c:110
+
choose_decoder
const AVCodec * choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
Definition: fftools_ffmpeg_opt.c:802
+
OptionParseContext::groups
OptionGroupList * groups
Definition: fftools_cmdutils.h:328
+
OptionsContext::bitexact
int bitexact
Definition: fftools_ffmpeg.h:181
+
opt_name_filter_scripts
static const char *const opt_name_filter_scripts[]
Definition: fftools_ffmpeg_opt.c:100
+
OptionsContext::audio_disable
int audio_disable
Definition: fftools_ffmpeg.h:184
+
OptionsContext::nb_metadata_map
int nb_metadata_map
Definition: fftools_ffmpeg.h:221
+
AV_LOG_STDERR
#define AV_LOG_STDERR
Definition: fftools_cmdutils.h:61
+
opt_name_enc_time_bases
static const char *const opt_name_enc_time_bases[]
Definition: fftools_ffmpeg_opt.c:113
+
OptionsContext::rate_emu
int rate_emu
Definition: fftools_ffmpeg.h:144
+
guess_input_channel_layout
int guess_input_channel_layout(InputStream *ist)
Definition: fftools_ffmpeg.c:2303
+
StreamMap::sync_stream_index
int sync_stream_index
Definition: fftools_ffmpeg.h:108
+
int_cb
const __thread AVIOInterruptCB int_cb
Definition: fftools_ffmpeg.c:617
+
OptionsContext::nb_max_frames
int nb_max_frames
Definition: fftools_ffmpeg.h:195
+
opt_target
int opt_target(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2873
+
StreamMap::file_index
int file_index
Definition: fftools_ffmpeg.h:105
+
opt_video_frames
int opt_video_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3040
+
InputFile::ist_index
int ist_index
Definition: fftools_ffmpeg.h:429
+
OptionsContext::g
OptionGroup * g
Definition: fftools_ffmpeg.h:118
+
opt_name_forced_key_frames
static const char *const opt_name_forced_key_frames[]
Definition: fftools_ffmpeg_opt.c:88
+
opt_name_canvas_sizes
static const char *const opt_name_canvas_sizes[]
Definition: fftools_ffmpeg_opt.c:103
+
OutputStream::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:513
+
OptionsContext::nb_metadata
int nb_metadata
Definition: fftools_ffmpeg.h:193
+
int
int
Definition: fftools_ffmpeg_filter.c:165
+
OutputFilter::sample_rate
int sample_rate
Definition: fftools_ffmpeg.h:302
+
OutputFilter::width
int width
Definition: fftools_ffmpeg.h:299
+
input_files
__thread InputFile ** input_files
Definition: fftools_ffmpeg.c:178
+
init_output_filter
void init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc)
Definition: fftools_ffmpeg_opt.c:2156
+
opt_name_qscale
static const char *const opt_name_qscale[]
Definition: fftools_ffmpeg_opt.c:87
+
dts_delta_threshold
__thread float dts_delta_threshold
Definition: fftools_ffmpeg_opt.c:164
+
do_benchmark
__thread int do_benchmark
Definition: fftools_ffmpeg_opt.c:172
+
filtergraphs
__thread FilterGraph ** filtergraphs
Definition: fftools_ffmpeg.c:186
+
opt_name_autorotate
static const char *const opt_name_autorotate[]
Definition: fftools_ffmpeg_opt.c:81
+
videotoolbox_init
int videotoolbox_init(AVCodecContext *s)
+
OPT_SPEC
#define OPT_SPEC
Definition: fftools_cmdutils.h:207
+
OPT_PERFILE
#define OPT_PERFILE
Definition: fftools_cmdutils.h:205
+
opt_name_disposition
static const char *const opt_name_disposition[]
Definition: fftools_ffmpeg_opt.c:111
+
OutputFile::ost_index
int ost_index
Definition: fftools_ffmpeg.h:605
+
OptionDef
Definition: fftools_cmdutils.h:190
+
OutputStream::filters_script
char * filters_script
filtergraph script associated to the -filter_script option
Definition: fftools_ffmpeg.h:544
+
remove_avoptions
void remove_avoptions(AVDictionary **a, AVDictionary *b)
Definition: fftools_ffmpeg.c:782
+
opt_name_frame_aspect_ratios
static const char *const opt_name_frame_aspect_ratios[]
Definition: fftools_ffmpeg_opt.c:90
+
DEFAULT_PASS_LOGFILENAME_PREFIX
#define DEFAULT_PASS_LOGFILENAME_PREFIX
Definition: fftools_ffmpeg_opt.c:61
+
InputFile::start_time
int64_t start_time
Definition: fftools_ffmpeg.h:438
+
get_ost_filters
char * get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost)
Definition: fftools_ffmpeg_opt.c:1711
+
OutputFile::limit_filesize
uint64_t limit_filesize
Definition: fftools_ffmpeg.h:608
+
StreamMap::stream_index
int stream_index
Definition: fftools_ffmpeg.h:106
+
SpecifierOpt::specifier
char * specifier
Definition: fftools_cmdutils.h:179
+
ignore_unknown_streams
__thread int ignore_unknown_streams
Definition: fftools_ffmpeg_opt.c:200
+
opt_filter_complex_script
int opt_filter_complex_script(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3279
+
OutputStream::st
AVStream * st
Definition: fftools_ffmpeg.h:482
+
HWAccel::name
const char * name
Definition: fftools_ffmpeg.h:90
+
copy_chapters
int copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata)
Definition: fftools_ffmpeg_opt.c:2113
+
OptionGroup::resample_opts
AVDictionary * resample_opts
Definition: fftools_cmdutils.h:309
+
OutputFile
Definition: fftools_ffmpeg.h:602
+
OutputStream::muxing_queue_data_size
size_t muxing_queue_data_size
Definition: fftools_ffmpeg.h:590
+
VSYNC_PASSTHROUGH
#define VSYNC_PASSTHROUGH
Definition: fftools_ffmpeg.h:74
+
OptionsContext::nb_frame_sizes
int nb_frame_sizes
Definition: fftools_ffmpeg.h:137
+
nb_streams
__thread int nb_streams
Definition: fftools_ffprobe.c:295
+
OptionsContext::chapters_input_file
int chapters_input_file
Definition: fftools_ffmpeg.h:173
+
nb_filtergraphs
__thread int nb_filtergraphs
Definition: fftools_ffmpeg.c:187
+
OutputFilter::frame_rate
AVRational frame_rate
Definition: fftools_ffmpeg.h:300
+
opt_video_channel
int opt_video_channel(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:327
+
opt_name_hwaccel_output_formats
static const char *const opt_name_hwaccel_output_formats[]
Definition: fftools_ffmpeg_opt.c:80
+
auto_conversion_filters
__thread int auto_conversion_filters
Definition: fftools_ffmpeg_opt.c:190
+
OptionGroup::format_opts
AVDictionary * format_opts
Definition: fftools_cmdutils.h:308
+
SpecifierOpt::u
union SpecifierOpt::@0 u
+
OPT_AUDIO
#define OPT_AUDIO
Definition: fftools_cmdutils.h:198
+
dump_attachment
void dump_attachment(AVStream *st, const char *filename)
Definition: fftools_ffmpeg_opt.c:1077
+
opt_name_rc_overrides
static const char *const opt_name_rc_overrides[]
Definition: fftools_ffmpeg_opt.c:91
+
HWDevice
Definition: fftools_ffmpeg.h:96
+
OutputStream::max_frames
int64_t max_frames
Definition: fftools_ffmpeg.h:503
+
OutputStream::apad
char * apad
Definition: fftools_ffmpeg.h:550
+
OptionsContext::nb_streamid_map
int nb_streamid_map
Definition: fftools_ffmpeg.h:190
+
SpecifierOpt::str
uint8_t * str
Definition: fftools_cmdutils.h:181
+
OutputStream::frame_aspect_ratio
AVRational frame_aspect_ratio
Definition: fftools_ffmpeg.h:522
+
OptionsContext::nb_dump_attachment
int nb_dump_attachment
Definition: fftools_ffmpeg.h:152
+
opt_video_codec
int opt_video_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:345
+
hwaccels
const HWAccel hwaccels[]
Definition: fftools_ffmpeg_opt.c:152
+
opt_profile
int opt_profile(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3172
+
opt_vstats_file
int opt_vstats_file(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3017
+
audio_volume
__thread int audio_volume
Definition: fftools_ffmpeg_opt.c:167
+
fftools_cmdutils.h
+
OptionsContext::subtitle_disable
int subtitle_disable
Definition: fftools_ffmpeg.h:185
+
do_deinterlace
__thread int do_deinterlace
Definition: fftools_ffmpeg_opt.c:171
+
MAX_STREAMS
#define MAX_STREAMS
Definition: fftools_ffmpeg.h:80
+
frame_bits_per_raw_sample
__thread int frame_bits_per_raw_sample
Definition: fftools_ffmpeg_opt.c:185
+
OutputFilter::type
enum AVMediaType type
Definition: fftools_ffmpeg.h:296
+
init_options
void init_options(OptionsContext *o)
Definition: fftools_ffmpeg_opt.c:239
+
OptionsContext::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:175
+
input_streams
__thread InputStream ** input_streams
Definition: fftools_ffmpeg.c:176
+
new_data_stream
OutputStream * new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2029
+
output_streams
__thread OutputStream ** output_streams
Definition: fftools_ffmpeg.c:181
+
OptionsContext::metadata_streams_manual
int metadata_streams_manual
Definition: fftools_ffmpeg.h:168
+
init_complex_filtergraph
int init_complex_filtergraph(FilterGraph *fg)
Definition: fftools_ffmpeg_filter.c:314
+
OutputFilter::out_tmp
AVFilterInOut * out_tmp
Definition: fftools_ffmpeg.h:295
+
VSYNC_VFR
#define VSYNC_VFR
Definition: fftools_ffmpeg.h:76
+
setup_find_stream_info_opts
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Definition: fftools_cmdutils.c:2214
+
AudioChannelMap::channel_idx
int channel_idx
Definition: fftools_ffmpeg.h:113
+
opt_channel_layout
int opt_channel_layout(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3222
+
opt_name_top_field_first
static const char *const opt_name_top_field_first[]
Definition: fftools_ffmpeg_opt.c:95
+
check_filter_outputs
void check_filter_outputs(void)
Definition: fftools_ffmpeg_filter.c:643
+
OptionParseContext::global_opts
OptionGroup global_opts
Definition: fftools_cmdutils.h:326
+
OptionsContext::audio_channels
SpecifierOpt * audio_channels
Definition: fftools_ffmpeg.h:128
+
VSYNC_DROP
#define VSYNC_DROP
Definition: fftools_ffmpeg.h:78
+
OutputStream::enc_ctx
AVCodecContext * enc_ctx
Definition: fftools_ffmpeg.h:500
+
OptionsContext::video_disable
int video_disable
Definition: fftools_ffmpeg.h:183
+
opt_attach
int opt_attach(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:481
+
parse_option
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Definition: fftools_cmdutils.c:376
+
InputFile::time_base
AVRational time_base
Definition: fftools_ffmpeg.h:433
+
OptionsContext::program
SpecifierOpt * program
Definition: fftools_ffmpeg.h:254
+
OutputFile::start_time
int64_t start_time
start time in microseconds == AV_TIME_BASE units
Definition: fftools_ffmpeg.h:607
+
OutputStream::audio_channels_map
int * audio_channels_map
Definition: fftools_ffmpeg.h:535
+
OptionGroup
Definition: fftools_cmdutils.h:300
+
hw_device_get_by_name
HWDevice * hw_device_get_by_name(const char *name)
Definition: fftools_ffmpeg_hw.c:53
+
FilterGraph
Definition: fftools_ffmpeg.h:311
+
OutputStream
Definition: fftools_ffmpeg.h:478
+
copy_ts
__thread int copy_ts
Definition: fftools_ffmpeg_opt.c:176
+
open_files
int open_files(OptionGroupList *l, const char *inout, int(*open_file)(OptionsContext *, const char *))
+
HWACCEL_GENERIC
@ HWACCEL_GENERIC
Definition: fftools_ffmpeg.h:85
+
OptionsContext::start_time_eof
int64_t start_time_eof
Definition: fftools_ffmpeg.h:122
+
new_unknown_stream
OutputStream * new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index)
Definition: fftools_ffmpeg_opt.c:2042
+
opt_qscale
int opt_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3154
+
audio_drift_threshold
__thread float audio_drift_threshold
Definition: fftools_ffmpeg_opt.c:163
+
opt_audio_qscale
int opt_audio_qscale(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3258
+
copy_unknown_streams
__thread int copy_unknown_streams
Definition: fftools_ffmpeg_opt.c:201
+
opt_bitrate
int opt_bitrate(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3138
+
OutputStream::copy_initial_nonkeyframes
int copy_initial_nonkeyframes
Definition: fftools_ffmpeg.h:563
+
opt_video_standard
int opt_video_standard(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:333
+
opt_audio_codec
int opt_audio_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:339
+
opt_filter_complex
int opt_filter_complex(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3264
+
opt_vaapi_device
int opt_vaapi_device(void *optctx, const char *opt, const char *arg)
+
intra_only
__thread int intra_only
Definition: fftools_ffmpeg_opt.c:194
+
OutputFilter::height
int height
Definition: fftools_ffmpeg.h:299
+
ost
OutputStream * ost
Definition: fftools_ffmpeg_filter.c:172
+
InputFile::rate_emu
int rate_emu
Definition: fftools_ffmpeg.h:444
+
InputFile::duration
int64_t duration
Definition: fftools_ffmpeg.h:431
+
opt_streamid
int opt_streamid(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:2091
+
OutputStream::encoder_opts
AVDictionary * encoder_opts
Definition: fftools_ffmpeg.h:546
+
opt_audio_frames
int opt_audio_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3046
+
OutputStream::swr_opts
AVDictionary * swr_opts
Definition: fftools_ffmpeg.h:548
+
OutputFilter::ost
struct OutputStream * ost
Definition: fftools_ffmpeg.h:290
+
OutputFilter::channel_layouts
uint64_t * channel_layouts
Definition: fftools_ffmpeg.h:307
+
show_help_default_ffmpeg
void show_help_default_ffmpeg(const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3296
+
InputFile::recording_time
int64_t recording_time
Definition: fftools_ffmpeg.h:440
+
StreamMap::linklabel
char * linklabel
Definition: fftools_ffmpeg.h:109
+
show_usage
void show_usage(void)
Definition: fftools_ffmpeg_opt.c:3369
+
opt_data_frames
int opt_data_frames(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:3052
+
OPT_EXPERT
#define OPT_EXPERT
Definition: fftools_cmdutils.h:195
+
InputFile::input_ts_offset
int64_t input_ts_offset
Definition: fftools_ffmpeg.h:434
+
opt_name_hwaccel_devices
static const char *const opt_name_hwaccel_devices[]
Definition: fftools_ffmpeg_opt.c:79
+
opt_init_hw_device
int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:605
+
opt_name_copy_initial_nonkeyframes
static const char *const opt_name_copy_initial_nonkeyframes[]
Definition: fftools_ffmpeg_opt.c:97
+
OutputStream::enc
const AVCodec * enc
Definition: fftools_ffmpeg.h:502
+
parse_optgroup
int parse_optgroup(void *optctx, OptionGroup *g)
Definition: fftools_cmdutils.c:444
+
filter_complex_nbthreads
__thread int filter_complex_nbthreads
Definition: fftools_ffmpeg_opt.c:188
+
opt_subtitle_codec
int opt_subtitle_codec(void *optctx, const char *opt, const char *arg)
Definition: fftools_ffmpeg_opt.c:351
+
strip_specifiers
AVDictionary * strip_specifiers(AVDictionary *dict)
Definition: fftools_ffmpeg_opt.c:267
+ + + + diff --git a/docs/linux/html/da/df2/_statistics_8h.html b/docs/linux/html/da/df2/_statistics_8h.html new file mode 100644 index 0000000..c7833ef --- /dev/null +++ b/docs/linux/html/da/df2/_statistics_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: Statistics.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
Statistics.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::Statistics
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/da/df2/_statistics_8h_source.html b/docs/linux/html/da/df2/_statistics_8h_source.html new file mode 100644 index 0000000..0f74401 --- /dev/null +++ b/docs/linux/html/da/df2/_statistics_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +FFmpegKit Linux API: Statistics.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Statistics.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_STATISTICS_H
+
21 #define FFMPEG_KIT_STATISTICS_H
+
22 
+
23 #include <stdlib.h>
+
24 
+
25 namespace ffmpegkit {
+
26 
+
30  class Statistics {
+
31  public:
+
32 
+
33  Statistics(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed);
+
34  long getSessionId();
+
35  int getVideoFrameNumber();
+
36  float getVideoFps();
+
37  float getVideoQuality();
+
38  int64_t getSize();
+
39  int getTime();
+
40  double getBitrate();
+
41  double getSpeed();
+
42 
+
43  private:
+
44  long _sessionId;
+ +
46  float _videoFps;
+ +
48  int64_t _size;
+
49  int _time;
+
50  double _bitrate;
+
51  double _speed;
+
52  };
+
53 
+
54 }
+
55 
+
56 #endif // FFMPEG_KIT_STATISTICS_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::Statistics::getSpeed
double getSpeed()
Definition: Statistics.cpp:54
+
ffmpegkit::Statistics::getVideoFrameNumber
int getVideoFrameNumber()
Definition: Statistics.cpp:30
+
ffmpegkit::Statistics::getTime
int getTime()
Definition: Statistics.cpp:46
+
ffmpegkit::Statistics::_speed
double _speed
Definition: Statistics.h:51
+
ffmpegkit::Statistics
Definition: Statistics.h:30
+
ffmpegkit::Statistics::_size
int64_t _size
Definition: Statistics.h:48
+
ffmpegkit::Statistics::_bitrate
double _bitrate
Definition: Statistics.h:50
+
ffmpegkit::Statistics::getSize
int64_t getSize()
Definition: Statistics.cpp:42
+
ffmpegkit::Statistics::_sessionId
long _sessionId
Definition: Statistics.h:44
+
ffmpegkit::Statistics::getSessionId
long getSessionId()
Definition: Statistics.cpp:26
+
ffmpegkit::Statistics::_videoQuality
float _videoQuality
Definition: Statistics.h:47
+
ffmpegkit::Statistics::Statistics
Statistics(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)
Definition: Statistics.cpp:22
+
ffmpegkit::Statistics::getVideoQuality
float getVideoQuality()
Definition: Statistics.cpp:38
+
ffmpegkit::Statistics::_time
int _time
Definition: Statistics.h:49
+
ffmpegkit::Statistics::_videoFrameNumber
int _videoFrameNumber
Definition: Statistics.h:45
+
ffmpegkit::Statistics::getVideoFps
float getVideoFps()
Definition: Statistics.cpp:34
+
ffmpegkit::Statistics::getBitrate
double getBitrate()
Definition: Statistics.cpp:50
+
ffmpegkit::Statistics::_videoFps
float _videoFps
Definition: Statistics.h:46
+ + + + diff --git a/docs/linux/html/da/df4/_log_8h.html b/docs/linux/html/da/df4/_log_8h.html new file mode 100644 index 0000000..a82e335 --- /dev/null +++ b/docs/linux/html/da/df4/_log_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: Log.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
Log.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::Log
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/da/df4/_log_8h_source.html b/docs/linux/html/da/df4/_log_8h_source.html new file mode 100644 index 0000000..3ca4433 --- /dev/null +++ b/docs/linux/html/da/df4/_log_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +FFmpegKit Linux API: Log.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Log.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_LOG_H
+
21 #define FFMPEG_KIT_LOG_H
+
22 
+
23 #include "Level.h"
+
24 #include <string>
+
25 
+
26 namespace ffmpegkit {
+
27 
+
31  class Log {
+
32  public:
+
33  Log(const long sessionId, const ffmpegkit::Level level, const char* message);
+
34  long getSessionId() const;
+
35  ffmpegkit::Level getLevel() const;
+
36  std::string getMessage() const;
+
37 
+
38  private:
+
39  long _sessionId;
+ +
41  std::string _message;
+
42  };
+
43 
+
44 }
+
45 
+
46 #endif // FFMPEG_KIT_LOG_H
+
+
ffmpegkit::Log::_message
std::string _message
Definition: Log.h:41
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::Log::_sessionId
long _sessionId
Definition: Log.h:39
+
ffmpegkit::Level
Level
Definition: Level.h:28
+
ffmpegkit::Log::_level
ffmpegkit::Level _level
Definition: Log.h:40
+
ffmpegkit::Log::getMessage
std::string getMessage() const
Definition: Log.cpp:33
+
ffmpegkit::Log
Definition: Log.h:31
+
ffmpegkit::Log::getLevel
ffmpegkit::Level getLevel() const
Definition: Log.cpp:29
+
ffmpegkit::Log::Log
Log(const long sessionId, const ffmpegkit::Level level, const char *message)
Definition: Log.cpp:22
+
Level.h
+
ffmpegkit::Log::getSessionId
long getSessionId() const
Definition: Log.cpp:25
+ + + + diff --git a/docs/linux/html/da/dfd/_abstract_session_8cpp.html b/docs/linux/html/da/dfd/_abstract_session_8cpp.html new file mode 100644 index 0000000..47577e2 --- /dev/null +++ b/docs/linux/html/da/dfd/_abstract_session_8cpp.html @@ -0,0 +1,137 @@ + + + + + + + +FFmpegKit Linux API: AbstractSession.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions
+
+
AbstractSession.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

static std::atomic< long > sessionIdGenerator (1)
 
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Session > session)
 
+

Function Documentation

+ +

◆ addSessionToSessionHistory()

+ +
+
+ + + + + + + + +
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Sessionsession)
+
+ +

Definition at line 149 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionIdGenerator()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::atomic<long> sessionIdGenerator ()
+
+static
+
+ +
+
+
+ + + + diff --git a/docs/linux/html/da/dfd/_abstract_session_8cpp_source.html b/docs/linux/html/da/dfd/_abstract_session_8cpp_source.html new file mode 100644 index 0000000..29ef2d8 --- /dev/null +++ b/docs/linux/html/da/dfd/_abstract_session_8cpp_source.html @@ -0,0 +1,329 @@ + + + + + + + +FFmpegKit Linux API: AbstractSession.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
AbstractSession.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "AbstractSession.h"
+
21 #include "FFmpegKit.h"
+
22 #include "FFmpegKitConfig.h"
+
23 #include "LogCallback.h"
+
24 #include "ReturnCode.h"
+
25 #include <mutex>
+
26 #include <thread>
+
27 #include <iostream>
+
28 #include <atomic>
+
29 #include <algorithm>
+
30 #include <condition_variable>
+
31 
+
32 static std::atomic<long> sessionIdGenerator(1);
+
33 
+
34 extern void addSessionToSessionHistory(const std::shared_ptr<ffmpegkit::Session> session);
+
35 
+
36 ffmpegkit::AbstractSession::AbstractSession(const std::shared_ptr<std::list<std::string>> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) :
+
37  _arguments{arguments},
+
38  _sessionId{sessionIdGenerator++},
+
39  _logCallback{logCallback},
+
40  _createTime{std::chrono::system_clock::now()},
+
41  _logs{std::make_shared<std::list<std::shared_ptr<ffmpegkit::Log>>>()},
+
42  _state{SessionStateCreated},
+
43  _returnCode{nullptr},
+
44  _logRedirectionStrategy{logRedirectionStrategy} {
+
45 }
+
46 
+ +
48  std::mutex mutex;
+
49  std::unique_lock<std::mutex> lock(mutex);
+
50  std::condition_variable condition_variable;
+
51  const std::chrono::time_point<std::chrono::system_clock> expireTime = std::chrono::system_clock::now() + std::chrono::milliseconds(timeout);
+
52 
+
53  while (this->thereAreAsynchronousMessagesInTransmit() && (std::chrono::system_clock::now() < expireTime)) {
+
54  condition_variable.wait_for(lock, std::chrono::milliseconds(100));
+
55  }
+
56 }
+
57 
+ +
59  return _logCallback;
+
60 }
+
61 
+ +
63  return _sessionId;
+
64 }
+
65 
+
66 std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::getCreateTime() const {
+
67  return _createTime;
+
68 }
+
69 
+
70 std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::getStartTime() const {
+
71  return _startTime;
+
72 }
+
73 
+
74 std::chrono::time_point<std::chrono::system_clock> ffmpegkit::AbstractSession::getEndTime() const {
+
75  return _endTime;
+
76 }
+
77 
+ +
79  const std::chrono::time_point<std::chrono::system_clock> startTime = _startTime;
+
80  const std::chrono::time_point<std::chrono::system_clock> endTime = _endTime;
+
81 
+
82  if (startTime.time_since_epoch() != std::chrono::microseconds(0) && endTime.time_since_epoch() != std::chrono::microseconds(0)) {
+
83  return std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime).count();
+
84  }
+
85 
+
86  return 0;
+
87 }
+
88 
+
89 std::shared_ptr<std::list<std::string>> ffmpegkit::AbstractSession::getArguments() const {
+
90  return _arguments;
+
91 }
+
92 
+ + +
95 }
+
96 
+
97 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> ffmpegkit::AbstractSession::getAllLogsWithTimeout(const int waitTimeout) const {
+
98  this->waitForAsynchronousMessagesInTransmit(waitTimeout);
+
99 
+
100  if (this->thereAreAsynchronousMessagesInTransmit()) {
+
101  std::cout << "getAllLogsWithTimeout was called to return all logs but there are still logs being transmitted for session id " << _sessionId << "." << std::endl;
+
102  }
+
103 
+
104  return this->getLogs();
+
105 }
+
106 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> ffmpegkit::AbstractSession::getAllLogs() const {
+ +
108 }
+
109 
+
110 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Log>>> ffmpegkit::AbstractSession::getLogs() const {
+
111  return _logs;
+
112 }
+
113 
+
114 std::string ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout(const int waitTimeout) const {
+
115  this->waitForAsynchronousMessagesInTransmit(waitTimeout);
+
116 
+
117  if (this->thereAreAsynchronousMessagesInTransmit()) {
+
118  std::cout << "getAllLogsAsStringWithTimeout was called to return all logs but there are still logs being transmitted for session id " << _sessionId << "." << std::endl;
+
119  }
+
120 
+
121  return this->getLogsAsString();
+
122 }
+
123 
+ +
125  return this->getAllLogsAsStringWithTimeout(ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit);
+
126 }
+
127 
+ +
129  std::string concatenatedString;
+
130 
+
131  std::for_each(_logs->cbegin(), _logs->cend(), [&](std::shared_ptr<ffmpegkit::Log> log) {
+
132  concatenatedString.append(log->getMessage());
+
133  });
+
134 
+
135  return concatenatedString;
+
136 }
+
137 
+ +
139  return this->getAllLogsAsString();
+
140 }
+
141 
+ +
143  return _state;
+
144 }
+
145 
+
146 std::shared_ptr<ffmpegkit::ReturnCode> ffmpegkit::AbstractSession::getReturnCode() const {
+
147  return _returnCode;
+
148 }
+
149 
+ +
151  return _failStackTrace;
+
152 }
+
153 
+ +
155  return _logRedirectionStrategy;
+
156 }
+
157 
+ +
159  return (FFmpegKitConfig::messagesInTransmit(_sessionId) != 0);
+
160 }
+
161 
+
162 void ffmpegkit::AbstractSession::addLog(const std::shared_ptr<ffmpegkit::Log> log) {
+
163  _logs->push_back(log);
+
164 }
+
165 
+ +
167  _state = SessionStateRunning;
+
168  _startTime = std::chrono::system_clock::now();
+
169 }
+
170 
+
171 void ffmpegkit::AbstractSession::complete(const std::shared_ptr<ffmpegkit::ReturnCode> returnCode) {
+
172  _returnCode = returnCode;
+
173  _state = SessionStateCompleted;
+
174  _endTime = std::chrono::system_clock::now();
+
175 }
+
176 
+
177 void ffmpegkit::AbstractSession::fail(const char* error) {
+
178  _failStackTrace = error;
+
179  _state = SessionStateFailed;
+
180  _endTime = std::chrono::system_clock::now();
+
181 }
+
182 
+ +
184  // IMPLEMENTED IN SUBCLASSES
+
185  return false;
+
186 }
+
187 
+ +
189  // IMPLEMENTED IN SUBCLASSES
+
190  return false;
+
191 }
+
192 
+ +
194  // IMPLEMENTED IN SUBCLASSES
+
195  return false;
+
196 }
+
197 
+ +
199  if (_state == SessionStateRunning) {
+
200  FFmpegKit::cancel(_sessionId);
+
201  }
+
202 }
+
+
ffmpegkit::AbstractSession::getEndTime
std::chrono::time_point< std::chrono::system_clock > getEndTime() const override
Definition: AbstractSession.cpp:74
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit::AbstractSession::getArguments
std::shared_ptr< std::list< std::string > > getArguments() const override
Definition: AbstractSession.cpp:89
+
ffmpegkit::SessionStateFailed
@ SessionStateFailed
Definition: SessionState.h:28
+
ffmpegkit::AbstractSession::startRunning
void startRunning() override
Definition: AbstractSession.cpp:166
+
ffmpegkit::AbstractSession::getAllLogs
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs() const override
Definition: AbstractSession.cpp:106
+
ffmpegkit::AbstractSession::getLogRedirectionStrategy
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy() const override
Definition: AbstractSession.cpp:154
+
ffmpegkit::AbstractSession::getLogCallback
ffmpegkit::LogCallback getLogCallback() const override
Definition: AbstractSession.cpp:58
+
ffmpegkit::AbstractSession::getCreateTime
std::chrono::time_point< std::chrono::system_clock > getCreateTime() const override
Definition: AbstractSession.cpp:66
+
ffmpegkit::AbstractSession::AbstractSession
AbstractSession(const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
Definition: AbstractSession.cpp:36
+
ffmpegkit::AbstractSession::waitForAsynchronousMessagesInTransmit
void waitForAsynchronousMessagesInTransmit(const int timeout) const
Definition: AbstractSession.cpp:47
+
FFmpegKit.h
+
addSessionToSessionHistory
void addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session)
Definition: FFmpegKitConfig.cpp:149
+
ffmpegkit::AbstractSession::getStartTime
std::chrono::time_point< std::chrono::system_clock > getStartTime() const override
Definition: AbstractSession.cpp:70
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::AbstractSession::cancel
void cancel() override
Definition: AbstractSession.cpp:198
+
ffmpegkit::AbstractSession::addLog
void addLog(const std::shared_ptr< ffmpegkit::Log > log) override
Definition: AbstractSession.cpp:162
+
ffmpegkit::FFmpegKitConfig::argumentsToString
static std::string argumentsToString(std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKitConfig.cpp:1400
+
ffmpegkit::AbstractSession::getLogsAsString
std::string getLogsAsString() const override
Definition: AbstractSession.cpp:128
+
ffmpegkit::AbstractSession::getReturnCode
std::shared_ptr< ffmpegkit::ReturnCode > getReturnCode() const override
Definition: AbstractSession.cpp:146
+
ffmpegkit::AbstractSession::getSessionId
long getSessionId() const override
Definition: AbstractSession.cpp:62
+
sessionIdGenerator
static std::atomic< long > sessionIdGenerator(1)
+
ffmpegkit::AbstractSession::getOutput
std::string getOutput() const override
Definition: AbstractSession.cpp:138
+
ffmpegkit::AbstractSession::complete
void complete(const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
Definition: AbstractSession.cpp:171
+
ffmpegkit::AbstractSession::fail
void fail(const char *error) override
Definition: AbstractSession.cpp:177
+
ffmpegkit::AbstractSession::getAllLogsWithTimeout
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout(const int waitTimeout) const override
Definition: AbstractSession.cpp:97
+
ffmpegkit::AbstractSession::getAllLogsAsString
std::string getAllLogsAsString() const override
Definition: AbstractSession.cpp:124
+
ffmpegkit::FFmpegKitConfig::messagesInTransmit
static int messagesInTransmit(const long sessionId)
Definition: FFmpegKitConfig.cpp:1335
+
ffmpegkit::AbstractSession::getLogs
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs() const override
Definition: AbstractSession.cpp:110
+
ffmpegkit::AbstractSession::getDuration
long getDuration() const override
Definition: AbstractSession.cpp:78
+
ffmpegkit::AbstractSession::thereAreAsynchronousMessagesInTransmit
bool thereAreAsynchronousMessagesInTransmit() const override
Definition: AbstractSession.cpp:158
+
LogCallback.h
+
ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit
Definition: AbstractSession.h:37
+
ffmpegkit::AbstractSession::getCommand
std::string getCommand() const override
Definition: AbstractSession.cpp:93
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
ffmpegkit::AbstractSession::getState
ffmpegkit::SessionState getState() const override
Definition: AbstractSession.cpp:142
+
ffmpegkit::SessionStateCompleted
@ SessionStateCompleted
Definition: SessionState.h:29
+
AbstractSession.h
+
ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout
std::string getAllLogsAsStringWithTimeout(const int waitTimeout) const override
Definition: AbstractSession.cpp:114
+
FFmpegKitConfig.h
+
ffmpegkit::SessionStateCreated
@ SessionStateCreated
Definition: SessionState.h:26
+
ffmpegkit::AbstractSession::isFFmpeg
virtual bool isFFmpeg() const override
Definition: AbstractSession.cpp:183
+
ffmpegkit::AbstractSession::getFailStackTrace
std::string getFailStackTrace() const override
Definition: AbstractSession.cpp:150
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ReturnCode.h
+
ffmpegkit::AbstractSession::isMediaInformation
virtual bool isMediaInformation() const override
Definition: AbstractSession.cpp:193
+
ffmpegkit::FFmpegKit::cancel
static void cancel()
Definition: FFmpegKit.cpp:68
+
ffmpegkit::AbstractSession::isFFprobe
virtual bool isFFprobe() const override
Definition: AbstractSession.cpp:188
+
ffmpegkit::SessionStateRunning
@ SessionStateRunning
Definition: SessionState.h:27
+ + + + diff --git a/docs/linux/html/db/d1c/classffmpegkit_1_1_log.html b/docs/linux/html/db/d1c/classffmpegkit_1_1_log.html new file mode 100644 index 0000000..29d7c5c --- /dev/null +++ b/docs/linux/html/db/d1c/classffmpegkit_1_1_log.html @@ -0,0 +1,282 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::Log Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Private Attributes
+
+
ffmpegkit::Log Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

 Log (const long sessionId, const ffmpegkit::Level level, const char *message)
 
long getSessionId () const
 
ffmpegkit::Level getLevel () const
 
std::string getMessage () const
 
+ + + + + + + +

+Private Attributes

long _sessionId
 
ffmpegkit::Level _level
 
std::string _message
 
+

Detailed Description

+

Log entry for an FFmpegKit session.

+ +

Definition at line 31 of file Log.h.

+

Constructor & Destructor Documentation

+ +

◆ Log()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::Log::Log (const long sessionId,
const ffmpegkit::Level level,
const char * message 
)
+
+ +

Definition at line 22 of file Log.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getLevel()

+ +
+
+ + + + + + + +
ffmpegkit::Level ffmpegkit::Log::getLevel () const
+
+ +

Definition at line 29 of file Log.cpp.

+ +
+
+ +

◆ getMessage()

+ +
+
+ + + + + + + +
std::string ffmpegkit::Log::getMessage () const
+
+ +

Definition at line 33 of file Log.cpp.

+ +
+
+ +

◆ getSessionId()

+ +
+
+ + + + + + + +
long ffmpegkit::Log::getSessionId () const
+
+ +

Definition at line 25 of file Log.cpp.

+ +
+
+

Field Documentation

+ +

◆ _level

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::Level ffmpegkit::Log::_level
+
+private
+
+ +

Definition at line 40 of file Log.h.

+ +
+
+ +

◆ _message

+ +
+
+ + + + + +
+ + + + +
std::string ffmpegkit::Log::_message
+
+private
+
+ +

Definition at line 41 of file Log.h.

+ +
+
+ +

◆ _sessionId

+ +
+
+ + + + + +
+ + + + +
long ffmpegkit::Log::_sessionId
+
+private
+
+ +

Definition at line 39 of file Log.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/db/d60/struct_stream_map.html b/docs/linux/html/db/d60/struct_stream_map.html new file mode 100644 index 0000000..0d168a2 --- /dev/null +++ b/docs/linux/html/db/d60/struct_stream_map.html @@ -0,0 +1,199 @@ + + + + + + + +FFmpegKit Linux API: StreamMap Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
StreamMap Struct Reference
+
+
+ + + + + + + + + + + + + + +

+Data Fields

int disabled
 
int file_index
 
int stream_index
 
int sync_file_index
 
int sync_stream_index
 
char * linklabel
 
+

Detailed Description

+
+

Definition at line 103 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ disabled

+ +
+
+ + + + +
int StreamMap::disabled
+
+ +

Definition at line 104 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ file_index

+ +
+
+ + + + +
int StreamMap::file_index
+
+ +

Definition at line 105 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ linklabel

+ +
+
+ + + + +
char* StreamMap::linklabel
+
+ +

Definition at line 109 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ stream_index

+ +
+
+ + + + +
int StreamMap::stream_index
+
+ +

Definition at line 106 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sync_file_index

+ +
+
+ + + + +
int StreamMap::sync_file_index
+
+ +

Definition at line 107 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sync_stream_index

+ +
+
+ + + + +
int StreamMap::sync_stream_index
+
+ +

Definition at line 108 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/db/d71/classffmpegkit_1_1_f_fmpeg_kit.html b/docs/linux/html/db/d71/classffmpegkit_1_1_f_fmpeg_kit.html new file mode 100644 index 0000000..ce94c1f --- /dev/null +++ b/docs/linux/html/db/d71/classffmpegkit_1_1_f_fmpeg_kit.html @@ -0,0 +1,504 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFmpegKit Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions
+
+
ffmpegkit::FFmpegKit Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::FFmpegSessionexecuteWithArguments (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFmpegSessionexecuteWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessionexecuteWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessionexecute (const std::string command)
 
static std::shared_ptr< ffmpegkit::FFmpegSessionexecuteAsync (const std::string command, FFmpegSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessionexecuteAsync (const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)
 
static void cancel ()
 
static void cancel (const long sessionId)
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > listSessions ()
 
+

Detailed Description

+

Main class to run FFmpeg commands. Supports executing commands both synchronously and asynchronously.

+auto session = FFmpegKit::execute:("-i file1.mp4 -c:v libxvid file1.avi");
auto asyncSession = FFmpegKit::executeAsync:("-i file1.mp4 -c:v libxvid file1.avi", [](auto session){ ... });
+

Provides overloaded execute methods to define session specific callbacks.

+auto asyncSession = FFmpegKit::executeAsync:("-i file1.mp4 -c:v libxvid file1.avi, [](auto session){ ... }, [](auto log){ ... }, [](auto statistics){ ... });
+
+

Definition at line 44 of file FFmpegKit.h.

+

Member Function Documentation

+ +

◆ cancel() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::FFmpegKit::cancel ()
+
+static
+
+

Cancels all running sessions.

+

This method does not wait for termination to complete and returns immediately.

+ +

Definition at line 68 of file FFmpegKit.cpp.

+ +
+
+ +

◆ cancel() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKit::cancel (const long sessionId)
+
+static
+
+

Cancels the session specified with sessionId.

+

This method does not wait for termination to complete and returns immediately.

+
Parameters
+ + +
sessionIdid of the session that will be cancelled
+
+
+ +

Definition at line 77 of file FFmpegKit.cpp.

+ +
+
+ +

◆ execute()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::execute (const std::string command)
+
+static
+
+

Synchronously executes FFmpeg command provided. Space character is used to split command into arguments. You can use single or double quote characters to specify arguments inside your command.

+
Parameters
+ + +
commandFFmpeg command
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 50 of file FFmpegKit.cpp.

+ +
+
+ +

◆ executeAsync() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::executeAsync (const std::string command,
FFmpegSessionCompleteCallback completeCallback 
)
+
+static
+
+

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command into arguments. You can use single or double quote characters to specify arguments inside your command.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFmpegSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
commandFFmpeg command
completeCallbackcallback that will be called when the execution has completed
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 56 of file FFmpegKit.cpp.

+ +
+
+ +

◆ executeAsync() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::executeAsync (const std::string command,
FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback 
)
+
+static
+
+

Starts an asynchronous FFmpeg execution for the given command. Space character is used to split the command into arguments. You can use single or double quote characters to specify arguments inside your command.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFmpegSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + + + +
commandFFmpeg command
completeCallbackcallback that will be called when the execution has completed
logCallbackcallback that will receive logs
statisticsCallbackcallback that will receive statistics
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 62 of file FFmpegKit.cpp.

+ +
+
+ +

◆ executeWithArguments()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::executeWithArguments (const std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Synchronously executes FFmpeg with arguments provided.

+
Parameters
+ + +
argumentsFFmpeg command options/arguments as string list
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 32 of file FFmpegKit.cpp.

+ +
+
+ +

◆ executeWithArgumentsAsync() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::executeWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments,
FFmpegSessionCompleteCallback completeCallback 
)
+
+static
+
+

Starts an asynchronous FFmpeg execution with arguments provided.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFmpegSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
argumentsFFmpeg command options/arguments as string list
completeCallbackcallback that will be called when the execution has completed
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 38 of file FFmpegKit.cpp.

+ +
+
+ +

◆ executeWithArgumentsAsync() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegkit::FFmpegKit::executeWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments,
FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback 
)
+
+static
+
+

Starts an asynchronous FFmpeg execution with arguments provided.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFmpegSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + + + +
argumentsFFmpeg command options/arguments as string list
completeCallbackcallback that will be called when the execution has completed
logCallbackcallback that will receive logs
statisticsCallbackcallback that will receive statistics
+
+
+
Returns
FFmpeg session created for this execution
+ +

Definition at line 44 of file FFmpegKit.cpp.

+ +
+
+ +

◆ listSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > ffmpegkit::FFmpegKit::listSessions ()
+
+static
+
+

Lists all FFmpeg sessions in the session history.

+
Returns
all FFmpeg sessions in the session history
+ +

Definition at line 81 of file FFmpegKit.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/db/db5/struct_option_parse_context.html b/docs/linux/html/db/db5/struct_option_parse_context.html new file mode 100644 index 0000000..f118b34 --- /dev/null +++ b/docs/linux/html/db/db5/struct_option_parse_context.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: OptionParseContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionParseContext Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

OptionGroup global_opts
 
OptionGroupListgroups
 
int nb_groups
 
OptionGroup cur_group
 
+

Detailed Description

+
+

Definition at line 325 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ cur_group

+ +
+
+ + + + +
OptionGroup OptionParseContext::cur_group
+
+ +

Definition at line 332 of file fftools_cmdutils.h.

+ +
+
+ +

◆ global_opts

+ +
+
+ + + + +
OptionGroup OptionParseContext::global_opts
+
+ +

Definition at line 326 of file fftools_cmdutils.h.

+ +
+
+ +

◆ groups

+ +
+
+ + + + +
OptionGroupList* OptionParseContext::groups
+
+ +

Definition at line 328 of file fftools_cmdutils.h.

+ +
+
+ +

◆ nb_groups

+ +
+
+ + + + +
int OptionParseContext::nb_groups
+
+ +

Definition at line 329 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/db/dd7/struct_option_group_def.html b/docs/linux/html/db/dd7/struct_option_group_def.html new file mode 100644 index 0000000..e84aabe --- /dev/null +++ b/docs/linux/html/db/dd7/struct_option_group_def.html @@ -0,0 +1,148 @@ + + + + + + + +FFmpegKit Linux API: OptionGroupDef Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionGroupDef Struct Reference
+
+
+ + + + + + + + +

+Data Fields

const char * name
 
const char * sep
 
int flags
 
+

Detailed Description

+
+

Definition at line 285 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ flags

+ +
+
+ + + + +
int OptionGroupDef::flags
+
+

Option flags that must be set on each option that is applied to this group

+ +

Definition at line 297 of file fftools_cmdutils.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* OptionGroupDef::name
+
+

< group name

+ +

Definition at line 287 of file fftools_cmdutils.h.

+ +
+
+ +

◆ sep

+ +
+
+ + + + +
const char* OptionGroupDef::sep
+
+

Option to be used as group separator. Can be NULL for groups which are terminated by a non-option argument (e.g. ffmpeg output files)

+ +

Definition at line 292 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/db/dde/struct_output_stream.html b/docs/linux/html/db/dde/struct_output_stream.html new file mode 100644 index 0000000..3fbbdfc --- /dev/null +++ b/docs/linux/html/db/dde/struct_output_stream.html @@ -0,0 +1,1429 @@ + + + + + + + +FFmpegKit Linux API: OutputStream Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OutputStream Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int file_index
 
int index
 
int source_index
 
AVStream * st
 
int encoding_needed
 
int frame_number
 
struct InputStreamsync_ist
 
int64_t sync_opts
 
int64_t first_pts
 
int64_t last_mux_dts
 
AVRational mux_timebase
 
AVRational enc_timebase
 
AVBSFContext * bsf_ctx
 
AVCodecContext * enc_ctx
 
AVCodecParameters * ref_par
 
const AVCodec * enc
 
int64_t max_frames
 
AVFrame * filtered_frame
 
AVFrame * last_frame
 
AVPacket * pkt
 
int last_dropped
 
int last_nb0_frames [3]
 
void * hwaccel_ctx
 
AVRational frame_rate
 
AVRational max_frame_rate
 
int is_cfr
 
int force_fps
 
int top_field_first
 
int rotate_overridden
 
int autoscale
 
double rotate_override_value
 
AVRational frame_aspect_ratio
 
int64_t forced_kf_ref_pts
 
int64_t * forced_kf_pts
 
int forced_kf_count
 
int forced_kf_index
 
char * forced_keyframes
 
AVExpr * forced_keyframes_pexpr
 
double forced_keyframes_expr_const_values [FKF_NB]
 
int dropped_keyframe
 
intaudio_channels_map
 
int audio_channels_mapped
 
char * logfile_prefix
 
FILE * logfile
 
OutputFilterfilter
 
char * avfilter
 
char * filters
 filtergraph associated to the -filter option More...
 
char * filters_script
 filtergraph script associated to the -filter_script option More...
 
AVDictionary * encoder_opts
 
AVDictionary * sws_dict
 
AVDictionary * swr_opts
 
AVDictionary * resample_opts
 
char * apad
 
OSTFinished finished
 
int unavailable
 
int stream_copy
 
int initialized
 
int inputs_done
 
const char * attachment_filename
 
int copy_initial_nonkeyframes
 
int copy_prior_start
 
char * disposition
 
int keep_pix_fmt
 
uint64_t data_size
 
uint64_t packets_written
 
uint64_t frames_encoded
 
uint64_t samples_encoded
 
int quality
 
int max_muxing_queue_size
 
AVFifoBuffer * muxing_queue
 
size_t muxing_queue_data_size
 
size_t muxing_queue_data_threshold
 
int pict_type
 
int64_t error [4]
 
+

Detailed Description

+
+

Definition at line 478 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ apad

+ +
+
+ + + + +
char* OutputStream::apad
+
+ +

Definition at line 550 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ attachment_filename

+ +
+
+ + + + +
const char* OutputStream::attachment_filename
+
+ +

Definition at line 562 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_channels_map

+ +
+
+ + + + +
int* OutputStream::audio_channels_map
+
+ +

Definition at line 535 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_channels_mapped

+ +
+
+ + + + +
int OutputStream::audio_channels_mapped
+
+ +

Definition at line 536 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ autoscale

+ +
+
+ + + + +
int OutputStream::autoscale
+
+ +

Definition at line 519 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ avfilter

+ +
+
+ + + + +
char* OutputStream::avfilter
+
+ +

Definition at line 542 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ bsf_ctx

+ +
+
+ + + + +
AVBSFContext* OutputStream::bsf_ctx
+
+ +

Definition at line 498 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ copy_initial_nonkeyframes

+ +
+
+ + + + +
int OutputStream::copy_initial_nonkeyframes
+
+ +

Definition at line 563 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ copy_prior_start

+ +
+
+ + + + +
int OutputStream::copy_prior_start
+
+ +

Definition at line 564 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ data_size

+ +
+
+ + + + +
uint64_t OutputStream::data_size
+
+ +

Definition at line 571 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ disposition

+ +
+
+ + + + +
char* OutputStream::disposition
+
+ +

Definition at line 565 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dropped_keyframe

+ +
+
+ + + + +
int OutputStream::dropped_keyframe
+
+ +

Definition at line 532 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ enc

+ +
+
+ + + + +
const AVCodec* OutputStream::enc
+
+ +

Definition at line 502 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ enc_ctx

+ +
+
+ + + + +
AVCodecContext* OutputStream::enc_ctx
+
+ +

Definition at line 500 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ enc_timebase

+ +
+
+ + + + +
AVRational OutputStream::enc_timebase
+
+ +

Definition at line 496 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ encoder_opts

+ +
+
+ + + + +
AVDictionary* OutputStream::encoder_opts
+
+ +

Definition at line 546 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ encoding_needed

+ +
+
+ + + + +
int OutputStream::encoding_needed
+
+ +

Definition at line 483 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ error

+ +
+
+ + + + +
int64_t OutputStream::error[4]
+
+ +

Definition at line 599 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ file_index

+ +
+
+ + + + +
int OutputStream::file_index
+
+ +

Definition at line 479 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter

+ +
+
+ + + + +
OutputFilter* OutputStream::filter
+
+ +

Definition at line 541 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filtered_frame

+ +
+
+ + + + +
AVFrame* OutputStream::filtered_frame
+
+ +

Definition at line 504 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filters

+ +
+
+ + + + +
char* OutputStream::filters
+
+ +

filtergraph associated to the -filter option

+ +

Definition at line 543 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filters_script

+ +
+
+ + + + +
char* OutputStream::filters_script
+
+ +

filtergraph script associated to the -filter_script option

+ +

Definition at line 544 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ finished

+ +
+
+ + + + +
OSTFinished OutputStream::finished
+
+ +

Definition at line 551 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ first_pts

+ +
+
+ + + + +
int64_t OutputStream::first_pts
+
+ +

Definition at line 491 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ force_fps

+ +
+
+ + + + +
int OutputStream::force_fps
+
+ +

Definition at line 516 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_keyframes

+ +
+
+ + + + +
char* OutputStream::forced_keyframes
+
+ +

Definition at line 529 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_keyframes_expr_const_values

+ +
+
+ + + + +
double OutputStream::forced_keyframes_expr_const_values[FKF_NB]
+
+ +

Definition at line 531 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_keyframes_pexpr

+ +
+
+ + + + +
AVExpr* OutputStream::forced_keyframes_pexpr
+
+ +

Definition at line 530 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_kf_count

+ +
+
+ + + + +
int OutputStream::forced_kf_count
+
+ +

Definition at line 527 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_kf_index

+ +
+
+ + + + +
int OutputStream::forced_kf_index
+
+ +

Definition at line 528 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_kf_pts

+ +
+
+ + + + +
int64_t* OutputStream::forced_kf_pts
+
+ +

Definition at line 526 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_kf_ref_pts

+ +
+
+ + + + +
int64_t OutputStream::forced_kf_ref_pts
+
+ +

Definition at line 525 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_aspect_ratio

+ +
+
+ + + + +
AVRational OutputStream::frame_aspect_ratio
+
+ +

Definition at line 522 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_number

+ +
+
+ + + + +
int OutputStream::frame_number
+
+ +

Definition at line 484 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_rate

+ +
+
+ + + + +
AVRational OutputStream::frame_rate
+
+ +

Definition at line 513 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frames_encoded

+ +
+
+ + + + +
uint64_t OutputStream::frames_encoded
+
+ +

Definition at line 575 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_ctx

+ +
+
+ + + + +
void* OutputStream::hwaccel_ctx
+
+ +

Definition at line 510 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ index

+ +
+
+ + + + +
int OutputStream::index
+
+ +

Definition at line 480 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ initialized

+ +
+
+ + + + +
int OutputStream::initialized
+
+ +

Definition at line 558 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ inputs_done

+ +
+
+ + + + +
int OutputStream::inputs_done
+
+ +

Definition at line 560 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ is_cfr

+ +
+
+ + + + +
int OutputStream::is_cfr
+
+ +

Definition at line 515 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ keep_pix_fmt

+ +
+
+ + + + +
int OutputStream::keep_pix_fmt
+
+ +

Definition at line 567 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_dropped

+ +
+
+ + + + +
int OutputStream::last_dropped
+
+ +

Definition at line 507 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_frame

+ +
+
+ + + + +
AVFrame* OutputStream::last_frame
+
+ +

Definition at line 505 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_mux_dts

+ +
+
+ + + + +
int64_t OutputStream::last_mux_dts
+
+ +

Definition at line 493 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ last_nb0_frames

+ +
+
+ + + + +
int OutputStream::last_nb0_frames[3]
+
+ +

Definition at line 508 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ logfile

+ +
+
+ + + + +
FILE* OutputStream::logfile
+
+ +

Definition at line 539 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ logfile_prefix

+ +
+
+ + + + +
char* OutputStream::logfile_prefix
+
+ +

Definition at line 538 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_frame_rate

+ +
+
+ + + + +
AVRational OutputStream::max_frame_rate
+
+ +

Definition at line 514 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_frames

+ +
+
+ + + + +
int64_t OutputStream::max_frames
+
+ +

Definition at line 503 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_muxing_queue_size

+ +
+
+ + + + +
int OutputStream::max_muxing_queue_size
+
+ +

Definition at line 581 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ mux_timebase

+ +
+
+ + + + +
AVRational OutputStream::mux_timebase
+
+ +

Definition at line 495 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ muxing_queue

+ +
+
+ + + + +
AVFifoBuffer* OutputStream::muxing_queue
+
+ +

Definition at line 584 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ muxing_queue_data_size

+ +
+
+ + + + +
size_t OutputStream::muxing_queue_data_size
+
+ +

Definition at line 590 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ muxing_queue_data_threshold

+ +
+
+ + + + +
size_t OutputStream::muxing_queue_data_threshold
+
+ +

Definition at line 593 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ packets_written

+ +
+
+ + + + +
uint64_t OutputStream::packets_written
+
+ +

Definition at line 573 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pict_type

+ +
+
+ + + + +
int OutputStream::pict_type
+
+ +

Definition at line 596 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pkt

+ +
+
+ + + + +
AVPacket* OutputStream::pkt
+
+ +

Definition at line 506 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ quality

+ +
+
+ + + + +
int OutputStream::quality
+
+ +

Definition at line 579 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ref_par

+ +
+
+ + + + +
AVCodecParameters* OutputStream::ref_par
+
+ +

Definition at line 501 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ resample_opts

+ +
+
+ + + + +
AVDictionary* OutputStream::resample_opts
+
+ +

Definition at line 549 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ rotate_overridden

+ +
+
+ + + + +
int OutputStream::rotate_overridden
+
+ +

Definition at line 518 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ rotate_override_value

+ +
+
+ + + + +
double OutputStream::rotate_override_value
+
+ +

Definition at line 520 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ samples_encoded

+ +
+
+ + + + +
uint64_t OutputStream::samples_encoded
+
+ +

Definition at line 576 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ source_index

+ +
+
+ + + + +
int OutputStream::source_index
+
+ +

Definition at line 481 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ st

+ +
+
+ + + + +
AVStream* OutputStream::st
+
+ +

Definition at line 482 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ stream_copy

+ +
+
+ + + + +
int OutputStream::stream_copy
+
+ +

Definition at line 553 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ swr_opts

+ +
+
+ + + + +
AVDictionary* OutputStream::swr_opts
+
+ +

Definition at line 548 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sws_dict

+ +
+
+ + + + +
AVDictionary* OutputStream::sws_dict
+
+ +

Definition at line 547 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sync_ist

+ +
+
+ + + + +
struct InputStream* OutputStream::sync_ist
+
+ +

Definition at line 487 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sync_opts

+ +
+
+ + + + +
int64_t OutputStream::sync_opts
+
+ +

Definition at line 488 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ top_field_first

+ +
+
+ + + + +
int OutputStream::top_field_first
+
+ +

Definition at line 517 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ unavailable

+ +
+
+ + + + +
int OutputStream::unavailable
+
+ +

Definition at line 552 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/dc/d1e/struct_option_def.html b/docs/linux/html/dc/d1e/struct_option_def.html new file mode 100644 index 0000000..0151dd6 --- /dev/null +++ b/docs/linux/html/dc/d1e/struct_option_def.html @@ -0,0 +1,235 @@ + + + + + + + +FFmpegKit Linux API: OptionDef Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionDef Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + +

+Data Fields

const char * name
 
int flags
 
union {
   void *   dst_ptr
 
   int(*   func_arg )(void *, const char *, const
+      char *)
 
   size_t   off
 
u
 
const char * help
 
const char * argname
 
+

Detailed Description

+
+

Definition at line 190 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ argname

+ +
+
+ + + + +
const char* OptionDef::argname
+
+ +

Definition at line 218 of file fftools_cmdutils.h.

+ +
+
+ +

◆ dst_ptr

+ +
+
+ + + + +
void* OptionDef::dst_ptr
+
+ +

Definition at line 213 of file fftools_cmdutils.h.

+ +
+
+ +

◆ flags

+ +
+
+ + + + +
int OptionDef::flags
+
+ +

Definition at line 192 of file fftools_cmdutils.h.

+ +
+
+ +

◆ func_arg

+ +
+
+ + + + +
int(* OptionDef::func_arg) (void *, const char *, const char *)
+
+ +

Definition at line 214 of file fftools_cmdutils.h.

+ +
+
+ +

◆ help

+ +
+
+ + + + +
const char* OptionDef::help
+
+ +

Definition at line 217 of file fftools_cmdutils.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* OptionDef::name
+
+ +

Definition at line 191 of file fftools_cmdutils.h.

+ +
+
+ +

◆ off

+ +
+
+ + + + +
size_t OptionDef::off
+
+ +

Definition at line 215 of file fftools_cmdutils.h.

+ +
+
+ +

◆ u

+ +
+
+ + + + +
union { ... } OptionDef::u
+
+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html b/docs/linux/html/dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html new file mode 100644 index 0000000..1932ec4 --- /dev/null +++ b/docs/linux/html/dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html @@ -0,0 +1,1840 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFmpegKitConfig Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions | +Static Public Attributes
+
+
ffmpegkit::FFmpegKitConfig Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void enableRedirection ()
 
static void disableRedirection ()
 
static int setFontconfigConfigurationPath (const std::string &path)
 
static void setFontDirectory (const std::string &fontDirectoryPath, const std::map< std::string, std::string > &fontNameMapping)
 
static void setFontDirectoryList (const std::list< std::string > &fontDirectoryList, const std::map< std::string, std::string > &fontNameMapping)
 
static std::shared_ptr< std::string > registerNewFFmpegPipe ()
 
static void closeFFmpegPipe (const std::string &ffmpegPipePath)
 
static std::string getFFmpegVersion ()
 
static std::string getVersion ()
 
static bool isLTSBuild ()
 
static std::string getBuildDate ()
 
static int setEnvironmentVariable (const std::string &variableName, const std::string &variableValue)
 
static void ignoreSignal (const ffmpegkit::Signal signal)
 
static void ffmpegExecute (const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
 
static void ffprobeExecute (const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
 
static void getMediaInformationExecute (const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, const int waitTimeout)
 
static void asyncFFmpegExecute (const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
 
static void asyncFFprobeExecute (const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
 
static void asyncGetMediaInformationExecute (const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, int waitTimeout)
 
static void enableLogCallback (const ffmpegkit::LogCallback logCallback)
 
static void enableStatisticsCallback (const ffmpegkit::StatisticsCallback statisticsCallback)
 
static void enableFFmpegSessionCompleteCallback (const FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback)
 
static FFmpegSessionCompleteCallback getFFmpegSessionCompleteCallback ()
 
static void enableFFprobeSessionCompleteCallback (const FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback)
 
static FFprobeSessionCompleteCallback getFFprobeSessionCompleteCallback ()
 
static void enableMediaInformationSessionCompleteCallback (const MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback)
 
static MediaInformationSessionCompleteCallback getMediaInformationSessionCompleteCallback ()
 
static ffmpegkit::Level getLogLevel ()
 
static void setLogLevel (const ffmpegkit::Level level)
 
static std::string logLevelToString (const ffmpegkit::Level level)
 
static int getSessionHistorySize ()
 
static void setSessionHistorySize (const int sessionHistorySize)
 
static std::shared_ptr< ffmpegkit::SessiongetSession (const long sessionId)
 
static std::shared_ptr< ffmpegkit::SessiongetLastSession ()
 
static std::shared_ptr< ffmpegkit::SessiongetLastCompletedSession ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessions ()
 
static void clearSessions ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > getFFmpegSessions ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > getFFprobeSessions ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > getMediaInformationSessions ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessionsByState (const SessionState state)
 
static LogRedirectionStrategy getLogRedirectionStrategy ()
 
static void setLogRedirectionStrategy (const LogRedirectionStrategy logRedirectionStrategy)
 
static int messagesInTransmit (const long sessionId)
 
static std::string sessionStateToString (SessionState state)
 
static std::shared_ptr< std::list< std::string > > parseArguments (const std::string &command)
 
static std::string argumentsToString (std::shared_ptr< std::list< std::string >> arguments)
 
+ + + + + +

+Static Public Attributes

static constexpr const char * FFmpegKitVersion = "4.5.1"
 
static constexpr const char * FFmpegKitNamedPipePrefix = "fk_pipe_"
 
+

Detailed Description

+

Configuration class of FFmpegKit library. Allows customizing the global library options. Provides helper methods to support additional resources.

+ +

Definition at line 41 of file FFmpegKitConfig.h.

+

Member Function Documentation

+ +

◆ argumentsToString()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::argumentsToString (std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Concatenates arguments into a string adding a space character between two arguments.

+
Parameters
+ + +
argumentsarguments
+
+
+
Returns
concatenated string containing all arguments
+ +

Definition at line 1400 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ asyncFFmpegExecute()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute (const std::shared_ptr< ffmpegkit::FFmpegSessionffmpegSession)
+
+static
+
+

Starts an asynchronous FFmpeg execution for the given session.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFmpegSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + +
ffmpegSessionFFmpeg session which includes command options/arguments
+
+
+ +

Definition at line 1044 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ asyncFFprobeExecute()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute (const std::shared_ptr< ffmpegkit::FFprobeSessionffprobeSession)
+
+static
+
+

Starts an asynchronous FFprobe execution for the given session.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFprobeSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + +
ffprobeSessionFFprobe session which includes command options/arguments
+
+
+ +

Definition at line 1072 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ asyncGetMediaInformationExecute()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute (const std::shared_ptr< ffmpegkit::MediaInformationSessionmediaInformationSession,
int waitTimeout 
)
+
+static
+
+

Starts an asynchronous FFprobe execution for the given media information session.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
mediaInformationSessionmedia information session which includes command options/arguments
waitTimeoutmax time to wait until media information is transmitted
+
+
+ +

Definition at line 1100 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ clearSessions()

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::FFmpegKitConfig::clearSessions ()
+
+static
+
+

Clears all, including ongoing, sessions in the session history.

+

Note that callbacks cannot be triggered for deleted sessions.

+ +

Definition at line 1245 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ closeFFmpegPipe()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::closeFFmpegPipe (const std::string & ffmpegPipePath)
+
+static
+
+

Closes a previously created FFmpeg pipe.

+
Parameters
+ + +
ffmpegPipePathfull path of the FFmpeg pipe
+
+
+ +

Definition at line 955 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ disableRedirection()

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::FFmpegKitConfig::disableRedirection ()
+
+static
+
+

Disables log and statistics redirection.

+

When redirection is disabled logs are printed to stderr, all logs and statistics callbacks are disabled and FFprobe's getMediaInformation methods do not work.

+ +

Definition at line 814 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableFFmpegSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableFFmpegSessionCompleteCallback (const FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback)
+
+static
+
+

Sets a global FFmpegSessionCompleteCallback to receive execution results for FFmpeg sessions.

+
Parameters
+ + +
ffmpegSessionCompleteCallbackcomplete callback or nullptr to disable a previously defined callback
+
+
+ +

Definition at line 1136 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableFFprobeSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableFFprobeSessionCompleteCallback (const FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback)
+
+static
+
+

Sets a global FFprobeSessionCompleteCallback to receive execution results for FFprobe sessions.

+
Parameters
+ + +
ffprobeSessionCompleteCallbackcomplete callback or nullptr to disable a previously defined callback
+
+
+ +

Definition at line 1144 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableLogCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableLogCallback (const ffmpegkit::LogCallback logCallback)
+
+static
+
+

Sets a global log callback to redirect FFmpeg/FFprobe logs.

+
Parameters
+ + +
logCallbacklog callback or nullptr to disable a previously defined log callback
+
+
+ +

Definition at line 1128 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableMediaInformationSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableMediaInformationSessionCompleteCallback (const MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback)
+
+static
+
+

Sets a global MediaInformationSessionCompleteCallback to receive execution results for MediaInformation sessions.

+
Parameters
+ + +
mediaInformationSessionCompleteCallbackcomplete callback or nullptr to disable a previously defined callback
+
+
+ +

Definition at line 1152 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableRedirection()

+ +
+
+ + + + + +
+ + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableRedirection ()
+
+static
+
+

Enables log and statistics redirection.

+

When redirection is enabled FFmpeg/FFprobe sessions collect log and statistics entries for the executions. It is possible to define global or session specific log/statistics callbacks as well.

+

Note that redirection is enabled by default. If you do not want to use its functionality please use disableRedirection method to disable it.

+ +

Definition at line 791 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ enableStatisticsCallback()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::enableStatisticsCallback (const ffmpegkit::StatisticsCallback statisticsCallback)
+
+static
+
+

Sets a global statistics callback to redirect FFmpeg statistics.

+
Parameters
+ + +
statisticsCallbackstatistics callback or nullptr to disable a previously defined statistics callback
+
+
+ +

Definition at line 1132 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffmpegExecute()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::ffmpegExecute (const std::shared_ptr< ffmpegkit::FFmpegSessionffmpegSession)
+
+static
+
+

Synchronously executes the FFmpeg session provided.

+
Parameters
+ + +
ffmpegSessionFFmpeg session which includes command options/arguments
+
+
+ +

Definition at line 1003 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ffprobeExecute()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::ffprobeExecute (const std::shared_ptr< ffmpegkit::FFprobeSessionffprobeSession)
+
+static
+
+

Synchronously executes the FFprobe session provided.

+
Parameters
+ + +
ffprobeSessionFFprobe session which includes command options/arguments
+
+
+ +

Definition at line 1015 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getBuildDate()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::getBuildDate ()
+
+static
+
+

Returns FFmpegKit library build date.

+
Returns
FFmpegKit library build date
+ +

Definition at line 979 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getFFmpegSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::FFmpegSessionCompleteCallback ffmpegkit::FFmpegKitConfig::getFFmpegSessionCompleteCallback ()
+
+static
+
+

Returns the global FFmpegSessionCompleteCallback set.

+
Returns
global FFmpegSessionCompleteCallback or nullptr if it is not set
+ +

Definition at line 1140 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getFFmpegSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > ffmpegkit::FFmpegKitConfig::getFFmpegSessions ()
+
+static
+
+

Returns all FFmpeg sessions in the session history.

+
Returns
all FFmpeg sessions in the session history
+ +

Definition at line 1255 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getFFmpegVersion()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::getFFmpegVersion ()
+
+static
+
+

Returns the version of FFmpeg bundled within FFmpegKit library.

+
Returns
the version of FFmpeg
+ +

Definition at line 959 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getFFprobeSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::FFprobeSessionCompleteCallback ffmpegkit::FFmpegKitConfig::getFFprobeSessionCompleteCallback ()
+
+static
+
+

Returns the global FFprobeSessionCompleteCallback set.

+
Returns
global FFprobeSessionCompleteCallback or nullptr if it is not set
+ +

Definition at line 1148 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getFFprobeSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > ffmpegkit::FFmpegKitConfig::getFFprobeSessions ()
+
+static
+
+

Returns all FFprobe sessions in the session history.

+
Returns
all FFprobe sessions in the session history
+ +

Definition at line 1273 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getLastCompletedSession()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< ffmpegkit::Session > ffmpegkit::FFmpegKitConfig::getLastCompletedSession ()
+
+static
+
+

Returns the last session completed from the session history.

+
Returns
the last session completed. If there are no completed sessions in the history this method will return nullptr
+ +

Definition at line 1219 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getLastSession()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< ffmpegkit::Session > ffmpegkit::FFmpegKitConfig::getLastSession ()
+
+static
+
+

Returns the last session created from the session history.

+
Returns
the last session created or nullptr if session history is empty
+ +

Definition at line 1212 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getLogLevel()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::Level ffmpegkit::FFmpegKitConfig::getLogLevel ()
+
+static
+
+

Returns the current log level.

+
Returns
current log level
+ +

Definition at line 1160 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getLogRedirectionStrategy()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::LogRedirectionStrategy ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy ()
+
+static
+
+

Returns the active log redirection strategy.

+
Returns
log redirection strategy
+ +

Definition at line 1327 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getMediaInformationExecute()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ffmpegkit::FFmpegKitConfig::getMediaInformationExecute (const std::shared_ptr< ffmpegkit::MediaInformationSessionmediaInformationSession,
const int waitTimeout 
)
+
+static
+
+

Synchronously executes the media information session provided.

+
Parameters
+ + + +
mediaInformationSessionmedia information session which includes command options/arguments
waitTimeoutmax time to wait until media information is transmitted
+
+
+ +

Definition at line 1027 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getMediaInformationSessionCompleteCallback()

+ +
+
+ + + + + +
+ + + + + + + +
ffmpegkit::MediaInformationSessionCompleteCallback ffmpegkit::FFmpegKitConfig::getMediaInformationSessionCompleteCallback ()
+
+static
+
+

Returns the global MediaInformationSessionCompleteCallback set.

+
Returns
global MediaInformationSessionCompleteCallback or nullptr if it is not set
+ +

Definition at line 1156 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getMediaInformationSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > ffmpegkit::FFmpegKitConfig::getMediaInformationSessions ()
+
+static
+
+

Returns all MediaInformation sessions in the session history.

+
Returns
all MediaInformation sessions in the session history
+ +

Definition at line 1291 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getSession()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::Session > ffmpegkit::FFmpegKitConfig::getSession (const long sessionId)
+
+static
+
+

Returns the session specified with sessionId from the session history.

+
Parameters
+ + +
sessionIdsession identifier
+
+
+
Returns
session specified with sessionId or nullptr if it is not found in the history
+ +

Definition at line 1200 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getSessionHistorySize()

+ +
+
+ + + + + +
+ + + + + + + +
int ffmpegkit::FFmpegKitConfig::getSessionHistorySize ()
+
+static
+
+

Returns the session history size.

+
Returns
session history size
+ +

Definition at line 1184 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > ffmpegkit::FFmpegKitConfig::getSessions ()
+
+static
+
+

Returns all sessions in the session history.

+
Returns
all sessions in the session history
+ +

Definition at line 1234 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getSessionsByState()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > ffmpegkit::FFmpegKitConfig::getSessionsByState (const SessionState state)
+
+static
+
+

Returns sessions that have the given state.

+
Returns
sessions that have the given state from the session history
+ +

Definition at line 1309 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ getVersion()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::getVersion ()
+
+static
+
+

Returns FFmpegKit library version.

+
Returns
FFmpegKit version
+ +

Definition at line 963 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ ignoreSignal()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::ignoreSignal (const ffmpegkit::Signal signal)
+
+static
+
+

Registers a new ignored signal. Ignored signals are not handled by FFmpegKit library.

+
Parameters
+ + +
signalsignal to be ignored
+
+
+ +

Definition at line 989 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ isLTSBuild()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::FFmpegKitConfig::isLTSBuild ()
+
+static
+
+

Returns whether FFmpegKit release is a Long Term Release or not.

+
Returns
true/yes or false/no
+ +

Definition at line 971 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ logLevelToString()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::logLevelToString (const ffmpegkit::Level level)
+
+static
+
+

Converts log level to string.

+
Parameters
+ + +
levelvalue
+
+
+
Returns
string value
+ +

Definition at line 1168 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ messagesInTransmit()

+ +
+
+ + + + + +
+ + + + + + + + +
int ffmpegkit::FFmpegKitConfig::messagesInTransmit (const long sessionId)
+
+static
+
+

Returns the number of async messages that are not transmitted to the callbacks for this session.

+
Parameters
+ + +
sessionIdid of the session
+
+
+
Returns
number of async messages that are not transmitted to the callbacks for this session
+ +

Definition at line 1335 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ parseArguments()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< std::list< std::string > > ffmpegkit::FFmpegKitConfig::parseArguments (const std::string & command)
+
+static
+
+

Parses the given command into arguments. Uses space character to split the arguments. Supports single and double quote characters.

+
Parameters
+ + +
commandstring command
+
+
+
Returns
list of arguments
+ +

Definition at line 1349 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ registerNewFFmpegPipe()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::FFmpegKitConfig::registerNewFFmpegPipe ()
+
+static
+
+

Creates a new named pipe to use in FFmpeg operations.

+

Please note that creator is responsible of closing created pipes.

+
Returns
the full path of the named pipe
+ +

Definition at line 924 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ sessionStateToString()

+ +
+
+ + + + + +
+ + + + + + + + +
std::string ffmpegkit::FFmpegKitConfig::sessionStateToString (SessionState state)
+
+static
+
+

Converts session state to string.

+
Parameters
+ + +
statesession state
+
+
+
Returns
string value
+ +

Definition at line 1339 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setEnvironmentVariable()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
int ffmpegkit::FFmpegKitConfig::setEnvironmentVariable (const std::string & variableName,
const std::string & variableValue 
)
+
+static
+
+

Sets an environment variable.

+
Parameters
+ + + +
variableNameenvironment variable name
variableValueenvironment variable value
+
+
+
Returns
zero on success, non-zero on error
+ +

Definition at line 985 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setFontconfigConfigurationPath()

+ +
+
+ + + + + +
+ + + + + + + + +
int ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath (const std::string & path)
+
+static
+
+

Sets and overrides fontconfig configuration directory.

+
Parameters
+ + +
pathdirectory that contains fontconfig configuration (fonts.conf)
+
+
+
Returns
zero on success, non-zero on error
+ +

Definition at line 835 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setFontDirectory()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ffmpegkit::FFmpegKitConfig::setFontDirectory (const std::string & fontDirectoryPath,
const std::map< std::string, std::string > & fontNameMapping 
)
+
+static
+
+

Registers the fonts inside the given path, so they become available to use in FFmpeg filters.

+

Note that you need to build FFmpegKit with fontconfig enabled or use a prebuilt package with fontconfig inside to be able to use fonts in FFmpeg.

+
Parameters
+ + + +
fontDirectoryPathdirectory that contains fonts (.ttf and .otf files)
fontNameMappingcustom font name mappings, useful to access your fonts with more friendly names
+
+
+ +

Definition at line 839 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setFontDirectoryList()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ffmpegkit::FFmpegKitConfig::setFontDirectoryList (const std::list< std::string > & fontDirectoryList,
const std::map< std::string, std::string > & fontNameMapping 
)
+
+static
+
+

Registers the fonts inside the given list of font directories, so they become available to use in FFmpeg filters.

+

Note that you need to build FFmpegKit with fontconfig enabled or use a prebuilt package with fontconfig inside to be able to use fonts in FFmpeg.

+
Parameters
+ + + +
fontDirectoryListlist of directories that contain fonts (.ttf and .otf files)
fontNameMappingcustom font name mappings, useful to access your fonts with more friendly names
+
+
+ +

Definition at line 843 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setLogLevel()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::setLogLevel (const ffmpegkit::Level level)
+
+static
+
+

Sets the log level.

+
Parameters
+ + +
levelnew log level
+
+
+ +

Definition at line 1164 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setLogRedirectionStrategy()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::setLogRedirectionStrategy (const LogRedirectionStrategy logRedirectionStrategy)
+
+static
+
+

Sets the log redirection strategy

+
Parameters
+ + +
logRedirectionStrategylog redirection strategy
+
+
+ +

Definition at line 1331 of file FFmpegKitConfig.cpp.

+ +
+
+ +

◆ setSessionHistorySize()

+ +
+
+ + + + + +
+ + + + + + + + +
void ffmpegkit::FFmpegKitConfig::setSessionHistorySize (const int sessionHistorySize)
+
+static
+
+

Sets the session history size.

+
Parameters
+ + +
sessionHistorySizesession history size, should be smaller than 1000
+
+
+ +

Definition at line 1188 of file FFmpegKitConfig.cpp.

+ +
+
+

Field Documentation

+ +

◆ FFmpegKitNamedPipePrefix

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::FFmpegKitConfig::FFmpegKitNamedPipePrefix = "fk_pipe_"
+
+staticconstexpr
+
+

Prefix of named pipes created by ffmpeg-kit.

+ +

Definition at line 50 of file FFmpegKitConfig.h.

+ +
+
+ +

◆ FFmpegKitVersion

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::FFmpegKitConfig::FFmpegKitVersion = "4.5.1"
+
+staticconstexpr
+
+

Global library version

+ +

Definition at line 45 of file FFmpegKitConfig.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/dc/d8d/_chapter_8h.html b/docs/linux/html/dc/d8d/_chapter_8h.html new file mode 100644 index 0000000..58b2133 --- /dev/null +++ b/docs/linux/html/dc/d8d/_chapter_8h.html @@ -0,0 +1,121 @@ + + + + + + + +FFmpegKit Linux API: Chapter.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces | +Macros
+
+
Chapter.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::Chapter
 
+ + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Macros

#define RAPIDJSON_ASSERT(x)
 
+

Macro Definition Documentation

+ +

◆ RAPIDJSON_ASSERT

+ +
+
+ + + + + + + + +
#define RAPIDJSON_ASSERT( x)
+
+ +

Definition at line 24 of file Chapter.h.

+ +
+
+
+ + + + diff --git a/docs/linux/html/dc/d8d/_chapter_8h_source.html b/docs/linux/html/dc/d8d/_chapter_8h_source.html new file mode 100644 index 0000000..394e056 --- /dev/null +++ b/docs/linux/html/dc/d8d/_chapter_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +FFmpegKit Linux API: Chapter.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Chapter.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_CHAPTER_H
+
21 #define FFMPEG_KIT_CHAPTER_H
+
22 
+
23 // OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION
+
24 #define RAPIDJSON_ASSERT(x)
+
25 #include "rapidjson/document.h"
+
26 #include <string>
+
27 #include <iostream>
+
28 #include <memory>
+
29 
+
30 namespace ffmpegkit {
+
31 
+
35  class Chapter {
+
36  public:
+
37  static constexpr const char* KeyId = "id";
+
38  static constexpr const char* KeyTimeBase = "time_base";
+
39  static constexpr const char* KeyStart = "start";
+
40  static constexpr const char* KeyStartTime = "start_time";
+
41  static constexpr const char* KeyEnd = "end";
+
42  static constexpr const char* KeyEndTime = "end_time";
+
43  static constexpr const char* KeyTags = "tags";
+
44 
+
45  Chapter(std::shared_ptr<rapidjson::Value> chapterValue);
+
46 
+
47  std::shared_ptr<int64_t> getId();
+
48 
+
49  std::shared_ptr<std::string> getTimeBase();
+
50 
+
51  std::shared_ptr<int64_t> getStart();
+
52 
+
53  std::shared_ptr<std::string> getStartTime();
+
54 
+
55  std::shared_ptr<int64_t> getEnd();
+
56 
+
57  std::shared_ptr<std::string> getEndTime();
+
58 
+
59  std::shared_ptr<rapidjson::Value> getTags();
+
60 
+
66  std::shared_ptr<std::string> getStringProperty(const char* key);
+
67 
+
73  std::shared_ptr<int64_t> getNumberProperty(const char* key);
+
74 
+
80  std::shared_ptr<rapidjson::Value> getProperties(const char* key);
+
81 
+
87  std::shared_ptr<rapidjson::Value> getAllProperties();
+
88 
+
89  private:
+
90  std::shared_ptr<rapidjson::Value> _chapterValue;
+
91  };
+
92 
+
93 }
+
94 
+
95 #endif // FFMPEG_KIT_CHAPTER_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::Chapter::getStart
std::shared_ptr< int64_t > getStart()
Definition: Chapter.cpp:33
+
ffmpegkit::Chapter::KeyId
static constexpr const char * KeyId
Definition: Chapter.h:37
+
ffmpegkit::Chapter::getId
std::shared_ptr< int64_t > getId()
Definition: Chapter.cpp:25
+
ffmpegkit::Chapter::getStringProperty
std::shared_ptr< std::string > getStringProperty(const char *key)
Definition: Chapter.cpp:53
+
ffmpegkit::Chapter::getEndTime
std::shared_ptr< std::string > getEndTime()
Definition: Chapter.cpp:45
+
ffmpegkit::Chapter::KeyEndTime
static constexpr const char * KeyEndTime
Definition: Chapter.h:42
+
ffmpegkit::Chapter::KeyStart
static constexpr const char * KeyStart
Definition: Chapter.h:39
+
ffmpegkit::Chapter::KeyStartTime
static constexpr const char * KeyStartTime
Definition: Chapter.h:40
+
ffmpegkit::Chapter::getTimeBase
std::shared_ptr< std::string > getTimeBase()
Definition: Chapter.cpp:29
+
ffmpegkit::Chapter::_chapterValue
std::shared_ptr< rapidjson::Value > _chapterValue
Definition: Chapter.h:90
+
ffmpegkit::Chapter::getStartTime
std::shared_ptr< std::string > getStartTime()
Definition: Chapter.cpp:37
+
ffmpegkit::Chapter
Definition: Chapter.h:35
+
ffmpegkit::Chapter::KeyTimeBase
static constexpr const char * KeyTimeBase
Definition: Chapter.h:38
+
ffmpegkit::Chapter::getEnd
std::shared_ptr< int64_t > getEnd()
Definition: Chapter.cpp:41
+
ffmpegkit::Chapter::KeyEnd
static constexpr const char * KeyEnd
Definition: Chapter.h:41
+
ffmpegkit::Chapter::getTags
std::shared_ptr< rapidjson::Value > getTags()
Definition: Chapter.cpp:49
+
ffmpegkit::Chapter::Chapter
Chapter(std::shared_ptr< rapidjson::Value > chapterValue)
Definition: Chapter.cpp:22
+
ffmpegkit::Chapter::KeyTags
static constexpr const char * KeyTags
Definition: Chapter.h:43
+
ffmpegkit::Chapter::getAllProperties
std::shared_ptr< rapidjson::Value > getAllProperties()
Definition: Chapter.cpp:79
+
ffmpegkit::Chapter::getProperties
std::shared_ptr< rapidjson::Value > getProperties(const char *key)
Definition: Chapter.cpp:69
+
ffmpegkit::Chapter::getNumberProperty
std::shared_ptr< int64_t > getNumberProperty(const char *key)
Definition: Chapter.cpp:61
+ + + + diff --git a/docs/linux/html/dc/da0/_f_fprobe_session_8h.html b/docs/linux/html/dc/da0/_f_fprobe_session_8h.html new file mode 100644 index 0000000..61944f5 --- /dev/null +++ b/docs/linux/html/dc/da0/_f_fprobe_session_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSession.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
FFprobeSession.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::FFprobeSession
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/dc/da0/_f_fprobe_session_8h_source.html b/docs/linux/html/dc/da0/_f_fprobe_session_8h_source.html new file mode 100644 index 0000000..7fc6e64 --- /dev/null +++ b/docs/linux/html/dc/da0/_f_fprobe_session_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +FFmpegKit Linux API: FFprobeSession.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFprobeSession.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_FFPROBE_SESSION_H
+
21 #define FFMPEG_KIT_FFPROBE_SESSION_H
+
22 
+
23 #include "AbstractSession.h"
+ +
25 
+
26 namespace ffmpegkit {
+
27 
+ +
32  public:
+
33 
+
39  static std::shared_ptr<ffmpegkit::FFprobeSession> create(const std::shared_ptr<std::list<std::string>> arguments);
+
40 
+
47  static std::shared_ptr<ffmpegkit::FFprobeSession> create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback);
+
48 
+
56  static std::shared_ptr<ffmpegkit::FFprobeSession> create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback);
+
57 
+
66  static std::shared_ptr<ffmpegkit::FFprobeSession> create(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy);
+
67 
+ +
74 
+
80  bool isFFmpeg() const override;
+
81 
+
87  bool isFFprobe() const override;
+
88 
+
94  bool isMediaInformation() const override;
+
95 
+
96  private:
+
97 
+
98  struct PublicFFprobeSession;
+
99 
+
108  FFprobeSession(const std::shared_ptr<std::list<std::string>> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy);
+
109 
+ +
111  };
+
112 
+
113 }
+
114 
+
115 #endif // FFMPEG_KIT_FFPROBE_SESSION_H
+
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
FFprobeSessionCompleteCallback.h
+
ffmpegkit::FFprobeSession::_completeCallback
FFprobeSessionCompleteCallback _completeCallback
Definition: FFprobeSession.h:110
+
ffmpegkit::FFprobeSession
Definition: FFprobeSession.h:31
+
ffmpegkit::FFprobeSession::FFprobeSession
FFprobeSession(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
Definition: FFprobeSession.cpp:56
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFprobeSession::isMediaInformation
bool isMediaInformation() const override
Definition: FFprobeSession.cpp:72
+
ffmpegkit::FFprobeSession::create
static std::shared_ptr< ffmpegkit::FFprobeSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFprobeSession.cpp:26
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
AbstractSession.h
+
ffmpegkit::FFprobeSession::getCompleteCallback
ffmpegkit::FFprobeSessionCompleteCallback getCompleteCallback()
Definition: FFprobeSession.cpp:60
+
ffmpegkit::FFprobeSession::isFFmpeg
bool isFFmpeg() const override
Definition: FFprobeSession.cpp:64
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFprobeSession::isFFprobe
bool isFFprobe() const override
Definition: FFprobeSession.cpp:68
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+ + + + diff --git a/docs/linux/html/dd/d15/struct_log_buffer.html b/docs/linux/html/dd/d15/struct_log_buffer.html new file mode 100644 index 0000000..0e176c9 --- /dev/null +++ b/docs/linux/html/dd/d15/struct_log_buffer.html @@ -0,0 +1,199 @@ + + + + + + + +FFmpegKit Linux API: LogBuffer Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
LogBuffer Struct Reference
+
+
+ + + + + + + + + + + + + + +

+Data Fields

char * context_name
 
int log_level
 
char * log_message
 
AVClassCategory category
 
char * parent_name
 
AVClassCategory parent_category
 
+

Detailed Description

+
+

Definition at line 303 of file fftools_ffprobe.c.

+

Field Documentation

+ +

◆ category

+ +
+
+ + + + +
AVClassCategory LogBuffer::category
+
+ +

Definition at line 307 of file fftools_ffprobe.c.

+ +
+
+ +

◆ context_name

+ +
+
+ + + + +
char* LogBuffer::context_name
+
+ +

Definition at line 304 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_level

+ +
+
+ + + + +
int LogBuffer::log_level
+
+ +

Definition at line 305 of file fftools_ffprobe.c.

+ +
+
+ +

◆ log_message

+ +
+
+ + + + +
char* LogBuffer::log_message
+
+ +

Definition at line 306 of file fftools_ffprobe.c.

+ +
+
+ +

◆ parent_category

+ +
+
+ + + + +
AVClassCategory LogBuffer::parent_category
+
+ +

Definition at line 309 of file fftools_ffprobe.c.

+ +
+
+ +

◆ parent_name

+ +
+
+ + + + +
char* LogBuffer::parent_name
+
+ +

Definition at line 308 of file fftools_ffprobe.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/dd/d69/_media_information_session_8h.html b/docs/linux/html/dd/d69/_media_information_session_8h.html new file mode 100644 index 0000000..1cca2d6 --- /dev/null +++ b/docs/linux/html/dd/d69/_media_information_session_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSession.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
MediaInformationSession.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::MediaInformationSession
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/dd/d69/_media_information_session_8h_source.html b/docs/linux/html/dd/d69/_media_information_session_8h_source.html new file mode 100644 index 0000000..898eab0 --- /dev/null +++ b/docs/linux/html/dd/d69/_media_information_session_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSession.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformationSession.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_MEDIA_INFORMATION_SESSION_H
+
21 #define FFMPEG_KIT_MEDIA_INFORMATION_SESSION_H
+
22 
+
23 #include "AbstractSession.h"
+
24 #include "MediaInformation.h"
+ +
26 
+
27 namespace ffmpegkit {
+
28 
+ +
34  public:
+
35 
+
41  static std::shared_ptr<ffmpegkit::MediaInformationSession> create(const std::shared_ptr<std::list<std::string>> arguments);
+
42 
+
49  static std::shared_ptr<ffmpegkit::MediaInformationSession> create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback);
+
50 
+
58  static std::shared_ptr<ffmpegkit::MediaInformationSession> create(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback);
+
59 
+
66  std::shared_ptr<ffmpegkit::MediaInformation> getMediaInformation();
+
67 
+
73  void setMediaInformation(const std::shared_ptr<ffmpegkit::MediaInformation> mediaInformation);
+
74 
+ +
81 
+
87  bool isFFmpeg() const override;
+
88 
+
94  bool isFFprobe() const override;
+
95 
+
101  bool isMediaInformation() const override;
+
102 
+
103  private:
+
104 
+
105  struct PublicMediaInformationSession;
+
106 
+
114  MediaInformationSession(const std::shared_ptr<std::list<std::string>> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback);
+
115 
+ +
117  std::shared_ptr<ffmpegkit::MediaInformation> _mediaInformation;
+
118  };
+
119 
+
120 }
+
121 
+
122 #endif // FFMPEG_KIT_MEDIA_INFORMATION_SESSION_H
+
+
ffmpegkit::MediaInformationSession::setMediaInformation
void setMediaInformation(const std::shared_ptr< ffmpegkit::MediaInformation > mediaInformation)
Definition: MediaInformationSession.cpp:58
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::MediaInformationSession::getMediaInformation
std::shared_ptr< ffmpegkit::MediaInformation > getMediaInformation()
Definition: MediaInformationSession.cpp:54
+
ffmpegkit::MediaInformationSession
Definition: MediaInformationSession.h:33
+
ffmpegkit::MediaInformationSession::create
static std::shared_ptr< ffmpegkit::MediaInformationSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: MediaInformationSession.cpp:26
+
ffmpegkit::MediaInformationSession::_completeCallback
ffmpegkit::MediaInformationSessionCompleteCallback _completeCallback
Definition: MediaInformationSession.h:116
+
MediaInformationSessionCompleteCallback.h
+
ffmpegkit::MediaInformationSession::isFFmpeg
bool isFFmpeg() const override
Definition: MediaInformationSession.cpp:66
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
MediaInformation.h
+
ffmpegkit::MediaInformationSession::getCompleteCallback
ffmpegkit::MediaInformationSessionCompleteCallback getCompleteCallback()
Definition: MediaInformationSession.cpp:62
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::MediaInformationSession::_mediaInformation
std::shared_ptr< ffmpegkit::MediaInformation > _mediaInformation
Definition: MediaInformationSession.h:117
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
ffmpegkit::MediaInformationSession::MediaInformationSession
MediaInformationSession(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
Definition: MediaInformationSession.cpp:50
+
AbstractSession.h
+
ffmpegkit::MediaInformationSession::isMediaInformation
bool isMediaInformation() const override
Definition: MediaInformationSession.cpp:74
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::MediaInformationSession::isFFprobe
bool isFFprobe() const override
Definition: MediaInformationSession.cpp:70
+ + + + diff --git a/docs/linux/html/dd/da5/struct_specifier_opt.html b/docs/linux/html/dd/da5/struct_specifier_opt.html new file mode 100644 index 0000000..e9213eb --- /dev/null +++ b/docs/linux/html/dd/da5/struct_specifier_opt.html @@ -0,0 +1,235 @@ + + + + + + + +FFmpegKit Linux API: SpecifierOpt Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
SpecifierOpt Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + +

+Data Fields

char * specifier
 
union {
   uint8_t *   str
 
   int   i
 
   int64_t   i64
 
   uint64_t   ui64
 
   float   f
 
   double   dbl
 
u
 
+

Detailed Description

+
+

Definition at line 178 of file fftools_cmdutils.h.

+

Field Documentation

+ +

◆ dbl

+ +
+
+ + + + +
double SpecifierOpt::dbl
+
+ +

Definition at line 186 of file fftools_cmdutils.h.

+ +
+
+ +

◆ f

+ +
+
+ + + + +
float SpecifierOpt::f
+
+ +

Definition at line 185 of file fftools_cmdutils.h.

+ +
+
+ +

◆ i

+ +
+
+ + + + +
int SpecifierOpt::i
+
+ +

Definition at line 182 of file fftools_cmdutils.h.

+ +
+
+ +

◆ i64

+ +
+
+ + + + +
int64_t SpecifierOpt::i64
+
+ +

Definition at line 183 of file fftools_cmdutils.h.

+ +
+
+ +

◆ specifier

+ +
+
+ + + + +
char* SpecifierOpt::specifier
+
+

stream/chapter/program/... specifier

+ +

Definition at line 179 of file fftools_cmdutils.h.

+ +
+
+ +

◆ str

+ +
+
+ + + + +
uint8_t* SpecifierOpt::str
+
+ +

Definition at line 181 of file fftools_cmdutils.h.

+ +
+
+ +

◆ u

+ +
+
+ + + + +
union { ... } SpecifierOpt::u
+
+ +
+
+ +

◆ ui64

+ +
+
+ + + + +
uint64_t SpecifierOpt::ui64
+
+ +

Definition at line 184 of file fftools_cmdutils.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/dd/dee/classffmpegkit_1_1_packages.html b/docs/linux/html/dd/dee/classffmpegkit_1_1_packages.html new file mode 100644 index 0000000..8f8f97a --- /dev/null +++ b/docs/linux/html/dd/dee/classffmpegkit_1_1_packages.html @@ -0,0 +1,159 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::Packages Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions
+
+
ffmpegkit::Packages Class Reference
+
+
+ + + + + + +

+Static Public Member Functions

static std::string getPackageName ()
 
static std::shared_ptr< std::set< std::string > > getExternalLibraries ()
 
+

Detailed Description

+

Helper class to extract binary package information.

+ +

Definition at line 33 of file Packages.h.

+

Member Function Documentation

+ +

◆ getExternalLibraries()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::set< std::string > > ffmpegkit::Packages::getExternalLibraries ()
+
+static
+
+

Returns enabled external libraries by FFmpeg.

+
Returns
enabled external libraries
+ +

Definition at line 200 of file Packages.cpp.

+ +
+
+ +

◆ getPackageName()

+ +
+
+ + + + + +
+ + + + + + + +
std::string ffmpegkit::Packages::getPackageName ()
+
+static
+
+

Returns the FFmpegKit binary package name.

+
Returns
predicted FFmpegKit binary package name
+ +

Definition at line 25 of file Packages.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/de/d78/structffmpegkit_1_1_f_fmpeg_session_1_1_public_f_fmpeg_session.html b/docs/linux/html/de/d78/structffmpegkit_1_1_f_fmpeg_session_1_1_public_f_fmpeg_session.html new file mode 100644 index 0000000..b957a2a --- /dev/null +++ b/docs/linux/html/de/d78/structffmpegkit_1_1_f_fmpeg_session_1_1_public_f_fmpeg_session.html @@ -0,0 +1,244 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFmpegSession::PublicFFmpegSession Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions
+
+
ffmpegkit::FFmpegSession::PublicFFmpegSession Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 PublicFFmpegSession (const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy)
 
- Public Member Functions inherited from ffmpegkit::FFmpegSession
ffmpegkit::StatisticsCallback getStatisticsCallback ()
 
ffmpegkit::FFmpegSessionCompleteCallback getCompleteCallback ()
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatisticsWithTimeout (const int waitTimeout)
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatistics ()
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getStatistics ()
 
std::shared_ptr< ffmpegkit::StatisticsgetLastReceivedStatistics ()
 
void addStatistics (const std::shared_ptr< ffmpegkit::Statistics > statistics)
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ffmpegkit::FFmpegSession
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)
 
static std::shared_ptr< ffmpegkit::FFmpegSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)
 
- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+
+

Definition at line 51 of file FFmpegSession.cpp.

+

Constructor & Destructor Documentation

+ +

◆ PublicFFmpegSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::FFmpegSession::PublicFFmpegSession::PublicFFmpegSession (const std::shared_ptr< std::list< std::string >> arguments,
FFmpegSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
ffmpegkit::StatisticsCallback statisticsCallback,
LogRedirectionStrategy logRedirectionStrategy 
)
+
+inline
+
+ +

Definition at line 52 of file FFmpegSession.cpp.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/de/dc7/struct_h_w_device.html b/docs/linux/html/de/dc7/struct_h_w_device.html new file mode 100644 index 0000000..850febe --- /dev/null +++ b/docs/linux/html/de/dc7/struct_h_w_device.html @@ -0,0 +1,145 @@ + + + + + + + +FFmpegKit Linux API: HWDevice Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
HWDevice Struct Reference
+
+
+ + + + + + + + +

+Data Fields

const char * name
 
enum AVHWDeviceType type
 
AVBufferRef * device_ref
 
+

Detailed Description

+
+

Definition at line 96 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ device_ref

+ +
+
+ + + + +
AVBufferRef* HWDevice::device_ref
+
+ +

Definition at line 99 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* HWDevice::name
+
+ +

Definition at line 97 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ type

+ +
+
+ + + + +
enum AVHWDeviceType HWDevice::type
+
+ +

Definition at line 98 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/de/df2/struct_output_file.html b/docs/linux/html/de/df2/struct_output_file.html new file mode 100644 index 0000000..0255034 --- /dev/null +++ b/docs/linux/html/de/df2/struct_output_file.html @@ -0,0 +1,241 @@ + + + + + + + +FFmpegKit Linux API: OutputFile Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OutputFile Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

AVFormatContext * ctx
 
AVDictionary * opts
 
int ost_index
 
int64_t recording_time
 desired length of the resulting file in microseconds == AV_TIME_BASE units More...
 
int64_t start_time
 start time in microseconds == AV_TIME_BASE units More...
 
uint64_t limit_filesize
 
int shortest
 
int header_written
 
+

Detailed Description

+
+

Definition at line 602 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ ctx

+ +
+
+ + + + +
AVFormatContext* OutputFile::ctx
+
+ +

Definition at line 603 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ header_written

+ +
+
+ + + + +
int OutputFile::header_written
+
+ +

Definition at line 612 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ limit_filesize

+ +
+
+ + + + +
uint64_t OutputFile::limit_filesize
+
+ +

Definition at line 608 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ opts

+ +
+
+ + + + +
AVDictionary* OutputFile::opts
+
+ +

Definition at line 604 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ost_index

+ +
+
+ + + + +
int OutputFile::ost_index
+
+ +

Definition at line 605 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ recording_time

+ +
+
+ + + + +
int64_t OutputFile::recording_time
+
+ +

desired length of the resulting file in microseconds == AV_TIME_BASE units

+ +

Definition at line 606 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ shortest

+ +
+
+ + + + +
int OutputFile::shortest
+
+ +

Definition at line 610 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ start_time

+ +
+
+ + + + +
int64_t OutputFile::start_time
+
+ +

start time in microseconds == AV_TIME_BASE units

+ +

Definition at line 607 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/df/d06/classffmpegkit_1_1_media_information.html b/docs/linux/html/df/d06/classffmpegkit_1_1_media_information.html new file mode 100644 index 0000000..057b0a6 --- /dev/null +++ b/docs/linux/html/df/d06/classffmpegkit_1_1_media_information.html @@ -0,0 +1,805 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::MediaInformation Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Attributes | +Private Attributes
+
+
ffmpegkit::MediaInformation Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MediaInformation (std::shared_ptr< rapidjson::Value > mediaInformationValue, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation >>> streams, std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter >>> chapters)
 
std::shared_ptr< std::string > getFilename ()
 
std::shared_ptr< std::string > getFormat ()
 
std::shared_ptr< std::string > getLongFormat ()
 
std::shared_ptr< std::string > getDuration ()
 
std::shared_ptr< std::string > getStartTime ()
 
std::shared_ptr< std::string > getSize ()
 
std::shared_ptr< std::string > getBitrate ()
 
std::shared_ptr< rapidjson::Value > getTags ()
 
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > getStreams ()
 
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > getChapters ()
 
std::shared_ptr< std::string > getStringProperty (const char *key)
 
std::shared_ptr< int64_t > getNumberProperty (const char *key)
 
std::shared_ptr< rapidjson::Value > getProperties (const char *key)
 
std::shared_ptr< rapidjson::Value > getMediaProperties ()
 
std::shared_ptr< rapidjson::Value > getAllProperties ()
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static constexpr const char * KeyMediaProperties = "format"
 
static constexpr const char * KeyFilename = "filename"
 
static constexpr const char * KeyFormat = "format_name"
 
static constexpr const char * KeyFormatLong = "format_long_name"
 
static constexpr const char * KeyStartTime = "start_time"
 
static constexpr const char * KeyDuration = "duration"
 
static constexpr const char * KeySize = "size"
 
static constexpr const char * KeyBitRate = "bit_rate"
 
static constexpr const char * KeyTags = "tags"
 
+ + + + + + + +

+Private Attributes

std::shared_ptr< rapidjson::Value > _mediaInformationValue
 
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > _streams
 
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > _chapters
 
+

Detailed Description

+

Media information class.

+ +

Definition at line 33 of file MediaInformation.h.

+

Constructor & Destructor Documentation

+ +

◆ MediaInformation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::MediaInformation::MediaInformation (std::shared_ptr< rapidjson::Value > mediaInformationValue,
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation >>> streams,
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter >>> chapters 
)
+
+ +

Definition at line 22 of file MediaInformation.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ getAllProperties()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::MediaInformation::getAllProperties ()
+
+

Returns all properties defined.

+
Returns
all properties in a Value or nullptr if no properties are defined
+ +

Definition at line 111 of file MediaInformation.cpp.

+ +
+
+ +

◆ getBitrate()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getBitrate ()
+
+

Returns bitrate.

+
Returns
media bitrate in kb/s
+ +

Definition at line 50 of file MediaInformation.cpp.

+ +
+
+ +

◆ getChapters()

+ +
+
+ + + + + + + +
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::Chapter > > > ffmpegkit::MediaInformation::getChapters ()
+
+

Returns all chapters.

+
Returns
chapters vector
+ +

Definition at line 69 of file MediaInformation.cpp.

+ +
+
+ +

◆ getDuration()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getDuration ()
+
+

Returns duration.

+
Returns
media duration in milliseconds
+ +

Definition at line 42 of file MediaInformation.cpp.

+ +
+
+ +

◆ getFilename()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getFilename ()
+
+

Returns file name.

+
Returns
media file name
+ +

Definition at line 26 of file MediaInformation.cpp.

+ +
+
+ +

◆ getFormat()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getFormat ()
+
+

Returns format.

+
Returns
media format
+ +

Definition at line 30 of file MediaInformation.cpp.

+ +
+
+ +

◆ getLongFormat()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getLongFormat ()
+
+

Returns long format.

+
Returns
media long format
+ +

Definition at line 34 of file MediaInformation.cpp.

+ +
+
+ +

◆ getMediaProperties()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::MediaInformation::getMediaProperties ()
+
+

Returns all media properties.

+
Returns
all media properties in a Value or nullptr if no media properties are defined
+ +

Definition at line 101 of file MediaInformation.cpp.

+ +
+
+ +

◆ getNumberProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< int64_t > ffmpegkit::MediaInformation::getNumberProperty (const char * key)
+
+

Returns the media property associated with the key.

+
Returns
media property as number or nullptr if the key is not found
+ +

Definition at line 82 of file MediaInformation.cpp.

+ +
+
+ +

◆ getProperties()

+ +
+
+ + + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::MediaInformation::getProperties (const char * key)
+
+

Returns the media properties associated with the key.

+
Returns
media properties in a Value or nullptr if the key is not found
+ +

Definition at line 91 of file MediaInformation.cpp.

+ +
+
+ +

◆ getSize()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getSize ()
+
+

Returns size.

+
Returns
media size in bytes
+ +

Definition at line 46 of file MediaInformation.cpp.

+ +
+
+ +

◆ getStartTime()

+ +
+
+ + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getStartTime ()
+
+

Returns start time.

+
Returns
media start time in milliseconds
+ +

Definition at line 38 of file MediaInformation.cpp.

+ +
+
+ +

◆ getStreams()

+ +
+
+ + + + + + + +
std::shared_ptr< std::vector< std::shared_ptr< ffmpegkit::StreamInformation > > > ffmpegkit::MediaInformation::getStreams ()
+
+

Returns all streams.

+
Returns
streams vector
+ +

Definition at line 65 of file MediaInformation.cpp.

+ +
+
+ +

◆ getStringProperty()

+ +
+
+ + + + + + + + +
std::shared_ptr< std::string > ffmpegkit::MediaInformation::getStringProperty (const char * key)
+
+

Returns the media property associated with the key.

+
Returns
media property as string or nullptr if the key is not found
+ +

Definition at line 73 of file MediaInformation.cpp.

+ +
+
+ +

◆ getTags()

+ +
+
+ + + + + + + +
std::shared_ptr< rapidjson::Value > ffmpegkit::MediaInformation::getTags ()
+
+

Returns all tags.

+
Returns
tags Value
+ +

Definition at line 54 of file MediaInformation.cpp.

+ +
+
+

Field Documentation

+ +

◆ _chapters

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::Chapter> > > ffmpegkit::MediaInformation::_chapters
+
+private
+
+ +

Definition at line 155 of file MediaInformation.h.

+ +
+
+ +

◆ _mediaInformationValue

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<rapidjson::Value> ffmpegkit::MediaInformation::_mediaInformationValue
+
+private
+
+ +

Definition at line 153 of file MediaInformation.h.

+ +
+
+ +

◆ _streams

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<std::vector<std::shared_ptr<ffmpegkit::StreamInformation> > > ffmpegkit::MediaInformation::_streams
+
+private
+
+ +

Definition at line 154 of file MediaInformation.h.

+ +
+
+ +

◆ KeyBitRate

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyBitRate = "bit_rate"
+
+staticconstexpr
+
+ +

Definition at line 42 of file MediaInformation.h.

+ +
+
+ +

◆ KeyDuration

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyDuration = "duration"
+
+staticconstexpr
+
+ +

Definition at line 40 of file MediaInformation.h.

+ +
+
+ +

◆ KeyFilename

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyFilename = "filename"
+
+staticconstexpr
+
+ +

Definition at line 36 of file MediaInformation.h.

+ +
+
+ +

◆ KeyFormat

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyFormat = "format_name"
+
+staticconstexpr
+
+ +

Definition at line 37 of file MediaInformation.h.

+ +
+
+ +

◆ KeyFormatLong

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyFormatLong = "format_long_name"
+
+staticconstexpr
+
+ +

Definition at line 38 of file MediaInformation.h.

+ +
+
+ +

◆ KeyMediaProperties

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyMediaProperties = "format"
+
+staticconstexpr
+
+ +

Definition at line 35 of file MediaInformation.h.

+ +
+
+ +

◆ KeySize

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeySize = "size"
+
+staticconstexpr
+
+ +

Definition at line 41 of file MediaInformation.h.

+ +
+
+ +

◆ KeyStartTime

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyStartTime = "start_time"
+
+staticconstexpr
+
+ +

Definition at line 39 of file MediaInformation.h.

+ +
+
+ +

◆ KeyTags

+ +
+
+ + + + + +
+ + + + +
constexpr const char* ffmpegkit::MediaInformation::KeyTags = "tags"
+
+staticconstexpr
+
+ +

Definition at line 43 of file MediaInformation.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/df/d13/_session_state_8h.html b/docs/linux/html/df/d13/_session_state_8h.html new file mode 100644 index 0000000..5c62276 --- /dev/null +++ b/docs/linux/html/df/d13/_session_state_8h.html @@ -0,0 +1,98 @@ + + + + + + + +FFmpegKit Linux API: SessionState.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Enumerations
+
+
SessionState.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Enumerations

enum  ffmpegkit::SessionState { ffmpegkit::SessionStateCreated = 0, +ffmpegkit::SessionStateRunning = 1, +ffmpegkit::SessionStateFailed = 2, +ffmpegkit::SessionStateCompleted = 3 + }
 
+
+ + + + diff --git a/docs/linux/html/df/d13/_session_state_8h_source.html b/docs/linux/html/df/d13/_session_state_8h_source.html new file mode 100644 index 0000000..1c79b1a --- /dev/null +++ b/docs/linux/html/df/d13/_session_state_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +FFmpegKit Linux API: SessionState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
SessionState.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_SESSION_STATE_H
+
21 #define FFMPEG_KIT_SESSION_STATE_H
+
22 
+
23 namespace ffmpegkit {
+
24 
+
25  enum SessionState {
+ + + + +
30  };
+
31 
+
32 }
+
33 
+
34 #endif // FFMPEG_KIT_SESSION_STATE_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::SessionStateFailed
@ SessionStateFailed
Definition: SessionState.h:28
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
ffmpegkit::SessionStateCompleted
@ SessionStateCompleted
Definition: SessionState.h:29
+
ffmpegkit::SessionStateCreated
@ SessionStateCreated
Definition: SessionState.h:26
+
ffmpegkit::SessionStateRunning
@ SessionStateRunning
Definition: SessionState.h:27
+ + + + diff --git a/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp.html b/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp.html new file mode 100644 index 0000000..facff8a --- /dev/null +++ b/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp.html @@ -0,0 +1,109 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSession.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Functions
+
+
FFmpegSession.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Functions

void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Session > session)
 
+

Function Documentation

+ +

◆ addSessionToSessionHistory()

+ +
+
+ + + + + + + + +
void addSessionToSessionHistory (const std::shared_ptr< ffmpegkit::Sessionsession)
+
+ +

Definition at line 149 of file FFmpegKitConfig.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp_source.html b/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp_source.html new file mode 100644 index 0000000..065aba0 --- /dev/null +++ b/docs/linux/html/df/d2b/_f_fmpeg_session_8cpp_source.html @@ -0,0 +1,215 @@ + + + + + + + +FFmpegKit Linux API: FFmpegSession.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegSession.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "FFmpegSession.h"
+
21 #include "FFmpegKitConfig.h"
+
22 #include "LogCallback.h"
+
23 #include "StatisticsCallback.h"
+
24 
+
25 extern void addSessionToSessionHistory(const std::shared_ptr<ffmpegkit::Session> session);
+
26 
+
27 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegSession::create(const std::shared_ptr<std::list<std::string>> arguments) {
+
28  std::shared_ptr<ffmpegkit::FFmpegSession> session = std::static_pointer_cast<ffmpegkit::FFmpegSession>(std::make_shared<ffmpegkit::FFmpegSession::PublicFFmpegSession>(arguments, nullptr, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
30  return session;
+
31 }
+
32 
+
33 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegSession::create(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback) {
+
34  std::shared_ptr<ffmpegkit::FFmpegSession> session = std::static_pointer_cast<ffmpegkit::FFmpegSession>(std::make_shared<ffmpegkit::FFmpegSession::PublicFFmpegSession>(arguments, completeCallback, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
36  return session;
+
37 }
+
38 
+
39 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegSession::create(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) {
+
40  std::shared_ptr<ffmpegkit::FFmpegSession> session = std::static_pointer_cast<ffmpegkit::FFmpegSession>(std::make_shared<ffmpegkit::FFmpegSession::PublicFFmpegSession>(arguments, completeCallback, logCallback, statisticsCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()));
+ +
42  return session;
+
43 }
+
44 
+
45 std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegkit::FFmpegSession::create(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy) {
+
46  std::shared_ptr<ffmpegkit::FFmpegSession> session = std::static_pointer_cast<ffmpegkit::FFmpegSession>(std::make_shared<ffmpegkit::FFmpegSession::PublicFFmpegSession>(arguments, completeCallback, logCallback, statisticsCallback, logRedirectionStrategy));
+ +
48  return session;
+
49 }
+
50 
+
51 struct ffmpegkit::FFmpegSession::PublicFFmpegSession : public ffmpegkit::FFmpegSession {
+
52  PublicFFmpegSession(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy) :
+
53  FFmpegSession(arguments, completeCallback, logCallback, statisticsCallback, logRedirectionStrategy) {
+
54  }
+
55 };
+
56 
+ +
58  ffmpegkit::AbstractSession(arguments, logCallback, logRedirectionStrategy), _completeCallback{completeCallback}, _statisticsCallback{statisticsCallback}, _statistics{std::make_shared<std::list<std::shared_ptr<ffmpegkit::Statistics>>>()} {
+
59 }
+
60 
+ +
62  return _statisticsCallback;
+
63 }
+
64 
+ +
66  return _completeCallback;
+
67 }
+
68 
+
69 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> ffmpegkit::FFmpegSession::getAllStatisticsWithTimeout(const int waitTimeout) {
+
70  this->waitForAsynchronousMessagesInTransmit(waitTimeout);
+
71 
+
72  if (this->thereAreAsynchronousMessagesInTransmit()) {
+
73  std::cout << "getAllStatisticsWithTimeout was called to return all statistics but there are still statistics being transmitted for session id " << this->getSessionId() << "." << std::endl;
+
74  }
+
75 
+
76  return this->getStatistics();
+
77 }
+
78 
+
79 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> ffmpegkit::FFmpegSession::getAllStatistics() {
+ +
81 }
+
82 
+
83 std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Statistics>>> ffmpegkit::FFmpegSession::getStatistics() {
+
84  return _statistics;
+
85 }
+
86 
+
87 std::shared_ptr<ffmpegkit::Statistics> ffmpegkit::FFmpegSession::getLastReceivedStatistics() {
+
88  if (_statistics->size() > 0) {
+
89  return _statistics->back();
+
90  } else {
+
91  return nullptr;
+
92  }
+
93 }
+
94 
+
95 void ffmpegkit::FFmpegSession::addStatistics(const std::shared_ptr<ffmpegkit::Statistics> statistics) {
+
96  _statistics->push_back(statistics);
+
97 }
+
98 
+ +
100  return true;
+
101 }
+
102 
+ +
104  return false;
+
105 }
+
106 
+ +
108  return false;
+
109 }
+
+
ffmpegkit::FFmpegSession::create
static std::shared_ptr< ffmpegkit::FFmpegSession > create(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegSession.cpp:27
+
ffmpegkit::FFmpegSession::getAllStatisticsWithTimeout
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatisticsWithTimeout(const int waitTimeout)
Definition: FFmpegSession.cpp:69
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegSession::isFFprobe
bool isFFprobe() const override
Definition: FFmpegSession.cpp:103
+
FFmpegSession.h
+
ffmpegkit::FFmpegSession::addStatistics
void addStatistics(const std::shared_ptr< ffmpegkit::Statistics > statistics)
Definition: FFmpegSession.cpp:95
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFmpegSession::getAllStatistics
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getAllStatistics()
Definition: FFmpegSession.cpp:79
+
ffmpegkit::FFmpegSession::getStatistics
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Statistics > > > getStatistics()
Definition: FFmpegSession.cpp:83
+
ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy
static LogRedirectionStrategy getLogRedirectionStrategy()
Definition: FFmpegKitConfig.cpp:1327
+
ffmpegkit::FFmpegSession::isFFmpeg
bool isFFmpeg() const override
Definition: FFmpegSession.cpp:99
+
ffmpegkit::FFmpegSession::isMediaInformation
bool isMediaInformation() const override
Definition: FFmpegSession.cpp:107
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
ffmpegkit::FFmpegSession::getCompleteCallback
ffmpegkit::FFmpegSessionCompleteCallback getCompleteCallback()
Definition: FFmpegSession.cpp:65
+
ffmpegkit::FFmpegSession::getStatisticsCallback
ffmpegkit::StatisticsCallback getStatisticsCallback()
Definition: FFmpegSession.cpp:61
+
ffmpegkit::AbstractSession
Definition: AbstractSession.h:31
+
ffmpegkit::FFmpegSession
Definition: FFmpegSession.h:32
+
LogCallback.h
+
ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit
Definition: AbstractSession.h:37
+
ffmpegkit::FFmpegSession::FFmpegSession
FFmpegSession(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)
Definition: FFmpegSession.cpp:57
+
ffmpegkit::FFmpegSession::getLastReceivedStatistics
std::shared_ptr< ffmpegkit::Statistics > getLastReceivedStatistics()
Definition: FFmpegSession.cpp:87
+
StatisticsCallback.h
+
FFmpegKitConfig.h
+
addSessionToSessionHistory
void addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session)
Definition: FFmpegKitConfig.cpp:149
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+ + + + diff --git a/docs/linux/html/df/d37/struct_h_w_accel.html b/docs/linux/html/df/d37/struct_h_w_accel.html new file mode 100644 index 0000000..c870900 --- /dev/null +++ b/docs/linux/html/df/d37/struct_h_w_accel.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: HWAccel Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
HWAccel Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

const char * name
 
int(* init )(AVCodecContext *s)
 
enum HWAccelID id
 
enum AVPixelFormat pix_fmt
 
+

Detailed Description

+
+

Definition at line 89 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ id

+ +
+
+ + + + +
enum HWAccelID HWAccel::id
+
+ +

Definition at line 92 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ init

+ +
+
+ + + + +
int(* HWAccel::init) (AVCodecContext *s)
+
+ +

Definition at line 91 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ name

+ +
+
+ + + + +
const char* HWAccel::name
+
+ +

Definition at line 90 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pix_fmt

+ +
+
+ + + + +
enum AVPixelFormat HWAccel::pix_fmt
+
+ +

Definition at line 93 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/df/d3f/classffmpegkit_1_1_f_fprobe_kit.html b/docs/linux/html/df/d3f/classffmpegkit_1_1_f_fprobe_kit.html new file mode 100644 index 0000000..3239307 --- /dev/null +++ b/docs/linux/html/df/d3f/classffmpegkit_1_1_f_fprobe_kit.html @@ -0,0 +1,693 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::FFprobeKit Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Static Public Member Functions
+
+
ffmpegkit::FFprobeKit Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::FFprobeSessionexecuteWithArguments (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::FFprobeSessionexecuteWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessionexecuteWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessionexecute (const std::string command)
 
static std::shared_ptr< ffmpegkit::FFprobeSessionexecuteAsync (const std::string command, FFprobeSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::FFprobeSessionexecuteAsync (const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessiongetMediaInformation (const std::string path)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessiongetMediaInformation (const std::string path, const int waitTimeout)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessiongetMediaInformationAsync (const std::string path, MediaInformationSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessiongetMediaInformationAsync (const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessiongetMediaInformationFromCommand (const std::string command)
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > listFFprobeSessions ()
 
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > listMediaInformationSessions ()
 
+

Detailed Description

+

Main class to run FFprobe commands. Supports executing commands both synchronously and asynchronously.

+auto session = FFprobeKit::execute("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4");
auto asyncSession = FFprobeKit::executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", [](auto session){ ... });
+

Provides overloaded execute methods to define session specific callbacks.

+auto session = FFprobeKit::executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", [](auto session){ ... }, [](auto log){ ... }];
+

It can extract media information for a file or a url, using getMediaInformation method.

+auto session = FFprobeKit::getMediaInformation("file1.mp4");
+
+

Definition at line 48 of file FFprobeKit.h.

+

Member Function Documentation

+ +

◆ execute()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::execute (const std::string command)
+
+static
+
+

Synchronously executes FFprobe command provided. Space character is used to split command into arguments. You can use single or double quote characters to specify arguments inside your command.

+
Parameters
+ + +
commandFFprobe command
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 62 of file FFprobeKit.cpp.

+ +
+
+ +

◆ executeAsync() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::executeAsync (const std::string command,
FFprobeSessionCompleteCallback completeCallback 
)
+
+static
+
+

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command into arguments. You can use single or double quote characters to specify arguments inside your command.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFprobeSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
commandFFprobe command
completeCallbackcallback that will be called when the execution has completed
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 68 of file FFprobeKit.cpp.

+ +
+
+ +

◆ executeAsync() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::executeAsync (const std::string command,
FFprobeSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback 
)
+
+static
+
+

Starts an asynchronous FFprobe execution for the given command. Space character is used to split the command into arguments. You can use single or double quote characters to specify arguments inside your command.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFprobeSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + + +
commandFFprobe command
completeCallbackcallback that will be notified when execution has completed
logCallbackcallback that will receive logs
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 74 of file FFprobeKit.cpp.

+ +
+
+ +

◆ executeWithArguments()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::executeWithArguments (const std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Synchronously executes FFprobe with arguments provided.

+
Parameters
+ + +
argumentsFFprobe command options/arguments as string array
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 44 of file FFprobeKit.cpp.

+ +
+
+ +

◆ executeWithArgumentsAsync() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::executeWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments,
FFprobeSessionCompleteCallback completeCallback 
)
+
+static
+
+

Starts an asynchronous FFprobe execution with arguments provided.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFprobeSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
argumentsFFprobe command options/arguments as string array
completeCallbackcallback that will be called when the execution has completed
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 50 of file FFprobeKit.cpp.

+ +
+
+ +

◆ executeWithArgumentsAsync() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::FFprobeSession > ffmpegkit::FFprobeKit::executeWithArgumentsAsync (const std::shared_ptr< std::list< std::string >> arguments,
FFprobeSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback 
)
+
+static
+
+

Starts an asynchronous FFprobe execution with arguments provided.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an FFprobeSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + + +
argumentsFFprobe command options/arguments as string array
completeCallbackcallback that will be notified when execution has completed
logCallbackcallback that will receive logs
+
+
+
Returns
FFprobe session created for this execution
+ +

Definition at line 56 of file FFprobeKit.cpp.

+ +
+
+ +

◆ getMediaInformation() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::FFprobeKit::getMediaInformation (const std::string path)
+
+static
+
+

Extracts media information for the file specified with path.

+
Parameters
+ + +
pathpath or uri of a media file
+
+
+
Returns
media information session created for this execution
+ +

Definition at line 80 of file FFprobeKit.cpp.

+ +
+
+ +

◆ getMediaInformation() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::FFprobeKit::getMediaInformation (const std::string path,
const int waitTimeout 
)
+
+static
+
+

Extracts media information for the file specified with path.

+
Parameters
+ + + +
pathpath or uri of a media file
waitTimeoutmax time to wait until media information is transmitted
+
+
+
Returns
media information session created for this execution
+ +

Definition at line 87 of file FFprobeKit.cpp.

+ +
+
+ +

◆ getMediaInformationAsync() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::FFprobeKit::getMediaInformationAsync (const std::string path,
MediaInformationSessionCompleteCallback completeCallback 
)
+
+static
+
+

Starts an asynchronous FFprobe execution to extract the media information for the specified file.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + +
pathpath or uri of a media file
completeCallbackcallback that will be called when the execution has completed
+
+
+
Returns
media information session created for this execution
+ +

Definition at line 94 of file FFprobeKit.cpp.

+ +
+
+ +

◆ getMediaInformationAsync() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::FFprobeKit::getMediaInformationAsync (const std::string path,
MediaInformationSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback,
const int waitTimeout 
)
+
+static
+
+

Starts an asynchronous FFprobe execution to extract the media information for the specified file.

+

Note that this method returns immediately and does not wait the execution to complete. You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result.

+
Parameters
+ + + + + +
pathpath or uri of a media file
completeCallbackcallback that will be notified when execution has completed
logCallbackcallback that will receive logs
waitTimeoutmax time to wait until media information is transmitted
+
+
+
Returns
media information session created for this execution
+ +

Definition at line 101 of file FFprobeKit.cpp.

+ +
+
+ +

◆ getMediaInformationFromCommand()

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::FFprobeKit::getMediaInformationFromCommand (const std::string command)
+
+static
+
+

Extracts media information using the command provided asynchronously.

+
Parameters
+ + +
commandFFprobe command that prints media information for a file in JSON format
+
+
+
Returns
media information session created for this execution
+ +

Definition at line 108 of file FFprobeKit.cpp.

+ +
+
+ +

◆ listFFprobeSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > ffmpegkit::FFprobeKit::listFFprobeSessions ()
+
+static
+
+

Lists all FFprobe sessions in the session history.

+
Returns
all FFprobe sessions in the session history
+ +

Definition at line 114 of file FFprobeKit.cpp.

+ +
+
+ +

◆ listMediaInformationSessions()

+ +
+
+ + + + + +
+ + + + + + + +
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > ffmpegkit::FFprobeKit::listMediaInformationSessions ()
+
+static
+
+

Lists all MediaInformation sessions in the session history.

+
Returns
all MediaInformation sessions in the session history
+ +

Definition at line 118 of file FFprobeKit.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/df/d40/ffmpegkit__exception_8cpp.html b/docs/linux/html/df/d40/ffmpegkit__exception_8cpp.html new file mode 100644 index 0000000..4be0550 --- /dev/null +++ b/docs/linux/html/df/d40/ffmpegkit__exception_8cpp.html @@ -0,0 +1,106 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit_exception.cpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Variables
+
+
ffmpegkit_exception.cpp File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Variables

__thread jmp_buf ex_buf__
 
+

Variable Documentation

+ +

◆ ex_buf__

+ +
+
+ + + + +
__thread jmp_buf ex_buf__
+
+

Holds information to implement exception handling.

+ +

Definition at line 23 of file ffmpegkit_exception.cpp.

+ +
+
+
+ + + + diff --git a/docs/linux/html/df/d40/ffmpegkit__exception_8cpp_source.html b/docs/linux/html/df/d40/ffmpegkit__exception_8cpp_source.html new file mode 100644 index 0000000..f99235c --- /dev/null +++ b/docs/linux/html/df/d40/ffmpegkit__exception_8cpp_source.html @@ -0,0 +1,102 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit_exception.cpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
ffmpegkit_exception.cpp
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2018-2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #include "ffmpegkit_exception.h"
+
21 
+
23 __thread jmp_buf ex_buf__;
+
+
ex_buf__
__thread jmp_buf ex_buf__
Definition: ffmpegkit_exception.cpp:23
+
ffmpegkit_exception.h
+ + + + diff --git a/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h.html b/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h.html new file mode 100644 index 0000000..3fa0881 --- /dev/null +++ b/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKitConfig.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
FFmpegKitConfig.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::FFmpegKitConfig
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h_source.html b/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h_source.html new file mode 100644 index 0000000..4103572 --- /dev/null +++ b/docs/linux/html/df/d48/_f_fmpeg_kit_config_8h_source.html @@ -0,0 +1,293 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKitConfig.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegKitConfig.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_CONFIG_H
+
21 #define FFMPEG_KIT_CONFIG_H
+
22 
+
23 #include <stdio.h>
+
24 #include <pthread.h>
+
25 #include <unistd.h>
+
26 #include "FFmpegSession.h"
+
27 #include "FFprobeSession.h"
+
28 #include "Level.h"
+
29 #include "LogCallback.h"
+ +
31 #include "Signal.h"
+
32 #include "StatisticsCallback.h"
+
33 #include <map>
+
34 
+
35 namespace ffmpegkit {
+
36 
+ +
42  public:
+
43 
+
45  static constexpr const char* FFmpegKitVersion = "4.5.1";
+
46 
+
50  static constexpr const char* FFmpegKitNamedPipePrefix = "fk_pipe_";
+
51 
+
61  static void enableRedirection();
+
62 
+
70  static void disableRedirection();
+
71 
+
78  static int setFontconfigConfigurationPath(const std::string& path);
+
79 
+
92  static void setFontDirectory(const std::string& fontDirectoryPath, const std::map<std::string,std::string>& fontNameMapping);
+
93 
+
106  static void setFontDirectoryList(const std::list<std::string>& fontDirectoryList, const std::map<std::string,std::string>& fontNameMapping);
+
107 
+
115  static std::shared_ptr<std::string> registerNewFFmpegPipe();
+
116 
+
122  static void closeFFmpegPipe(const std::string& ffmpegPipePath);
+
123 
+
129  static std::string getFFmpegVersion();
+
130 
+
136  static std::string getVersion();
+
137 
+
143  static bool isLTSBuild();
+
144 
+
150  static std::string getBuildDate();
+
151 
+
159  static int setEnvironmentVariable(const std::string& variableName, const std::string& variableValue);
+
160 
+
167  static void ignoreSignal(const ffmpegkit::Signal signal);
+
168 
+
174  static void ffmpegExecute(const std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegSession);
+
175 
+
181  static void ffprobeExecute(const std::shared_ptr<ffmpegkit::FFprobeSession> ffprobeSession);
+
182 
+
189  static void getMediaInformationExecute(const std::shared_ptr<ffmpegkit::MediaInformationSession> mediaInformationSession, const int waitTimeout);
+
190 
+
199  static void asyncFFmpegExecute(const std::shared_ptr<ffmpegkit::FFmpegSession> ffmpegSession);
+
200 
+
209  static void asyncFFprobeExecute(const std::shared_ptr<ffmpegkit::FFprobeSession> ffprobeSession);
+
210 
+
220  static void asyncGetMediaInformationExecute(const std::shared_ptr<ffmpegkit::MediaInformationSession> mediaInformationSession, int waitTimeout);
+
221 
+ +
228 
+ +
235 
+ +
242 
+ +
249 
+ +
256 
+ +
263 
+ +
271 
+ +
278 
+
284  static ffmpegkit::Level getLogLevel();
+
285 
+
291  static void setLogLevel(const ffmpegkit::Level level);
+
292 
+
299  static std::string logLevelToString(const ffmpegkit::Level level);
+
300 
+
306  static int getSessionHistorySize();
+
307 
+
313  static void setSessionHistorySize(const int sessionHistorySize);
+
314 
+
321  static std::shared_ptr<ffmpegkit::Session> getSession(const long sessionId);
+
322 
+
328  static std::shared_ptr<ffmpegkit::Session> getLastSession();
+
329 
+
336  static std::shared_ptr<ffmpegkit::Session> getLastCompletedSession();
+
337 
+
343  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Session>>> getSessions();
+
344 
+
349  static void clearSessions();
+
350 
+
356  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFmpegSession>>> getFFmpegSessions();
+
357 
+
363  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFprobeSession>>> getFFprobeSessions();
+
364 
+
370  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::MediaInformationSession>>> getMediaInformationSessions();
+
371 
+
377  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::Session>>> getSessionsByState(const SessionState state);
+
378 
+ +
385 
+
391  static void setLogRedirectionStrategy(const LogRedirectionStrategy logRedirectionStrategy);
+
392 
+
400  static int messagesInTransmit(const long sessionId);
+
401 
+
408  static std::string sessionStateToString(SessionState state);
+
409 
+
417  static std::shared_ptr<std::list<std::string>> parseArguments(const std::string& command);
+
418 
+
425  static std::string argumentsToString(std::shared_ptr<std::list<std::string>> arguments);
+
426 
+
427  };
+
428 
+
429 }
+
430 
+
431 #endif // FFMPEG_KIT_CONFIG_H
+
+
ffmpegkit::FFmpegKitConfig
Definition: FFmpegKitConfig.h:41
+
ffmpegkit::LogRedirectionStrategy
LogRedirectionStrategy
Definition: LogRedirectionStrategy.h:25
+
ffmpegkit::FFmpegKitConfig::getFFmpegSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > getFFmpegSessions()
Definition: FFmpegKitConfig.cpp:1255
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffprobeSessionCompleteCallback
static ffmpegkit::FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:70
+
ffmpegkit::FFmpegKitConfig::getFFmpegSessionCompleteCallback
static FFmpegSessionCompleteCallback getFFmpegSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1140
+
ffmpegkit::FFmpegKitConfig::getSessionHistorySize
static int getSessionHistorySize()
Definition: FFmpegKitConfig.cpp:1184
+
ffmpegkit::FFmpegKitConfig::getLastCompletedSession
static std::shared_ptr< ffmpegkit::Session > getLastCompletedSession()
Definition: FFmpegKitConfig.cpp:1219
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
MediaInformationSession.h
+
ffmpegkit::FFmpegKitConfig::enableFFmpegSessionCompleteCallback
static void enableFFmpegSessionCompleteCallback(const FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1136
+
ffmpegkit::FFmpegKitConfig::getVersion
static std::string getVersion()
Definition: FFmpegKitConfig.cpp:963
+
ffmpegkit::FFmpegKitConfig::enableStatisticsCallback
static void enableStatisticsCallback(const ffmpegkit::StatisticsCallback statisticsCallback)
Definition: FFmpegKitConfig.cpp:1132
+
FFmpegSession.h
+
ffmpegkit::FFmpegKitConfig::registerNewFFmpegPipe
static std::shared_ptr< std::string > registerNewFFmpegPipe()
Definition: FFmpegKitConfig.cpp:924
+
ffmpegkit::FFmpegKitConfig::setFontDirectoryList
static void setFontDirectoryList(const std::list< std::string > &fontDirectoryList, const std::map< std::string, std::string > &fontNameMapping)
Definition: FFmpegKitConfig.cpp:843
+
ffmpegkit::Level
Level
Definition: Level.h:28
+
ffmpegkit::FFmpegKitConfig::logLevelToString
static std::string logLevelToString(const ffmpegkit::Level level)
Definition: FFmpegKitConfig.cpp:1168
+
mediaInformationSessionCompleteCallback
static ffmpegkit::MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:71
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFmpegKitConfig::setEnvironmentVariable
static int setEnvironmentVariable(const std::string &variableName, const std::string &variableValue)
Definition: FFmpegKitConfig.cpp:985
+
ffmpegkit::Signal
Signal
Definition: Signal.h:25
+
ffmpegkit::FFmpegKitConfig::ignoreSignal
static void ignoreSignal(const ffmpegkit::Signal signal)
Definition: FFmpegKitConfig.cpp:989
+
Signal.h
+
ffmpegkit::FFmpegKitConfig::argumentsToString
static std::string argumentsToString(std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKitConfig.cpp:1400
+
ffmpegkit::FFmpegKitConfig::FFmpegKitVersion
static constexpr const char * FFmpegKitVersion
Definition: FFmpegKitConfig.h:45
+
ffmpegkit::FFmpegKitConfig::getFFprobeSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFprobeSession > > > getFFprobeSessions()
Definition: FFmpegKitConfig.cpp:1273
+
ffmpegkit::FFmpegKitConfig::getSession
static std::shared_ptr< ffmpegkit::Session > getSession(const long sessionId)
Definition: FFmpegKitConfig.cpp:1200
+
ffmpegkit::FFmpegKitConfig::getFFmpegVersion
static std::string getFFmpegVersion()
Definition: FFmpegKitConfig.cpp:959
+
ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy
static LogRedirectionStrategy getLogRedirectionStrategy()
Definition: FFmpegKitConfig.cpp:1327
+
ffmpegkit::FFmpegKitConfig::setSessionHistorySize
static void setSessionHistorySize(const int sessionHistorySize)
Definition: FFmpegKitConfig.cpp:1188
+
ffmpegkit::FFmpegKitConfig::disableRedirection
static void disableRedirection()
Definition: FFmpegKitConfig.cpp:814
+
ffmpegkit::FFmpegKitConfig::getLogLevel
static ffmpegkit::Level getLogLevel()
Definition: FFmpegKitConfig.cpp:1160
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute
static void asyncFFprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1072
+
ffmpegkit::FFmpegKitConfig::getMediaInformationExecute
static void getMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, const int waitTimeout)
Definition: FFmpegKitConfig.cpp:1027
+
ffmpegkit::FFmpegKitConfig::setFontDirectory
static void setFontDirectory(const std::string &fontDirectoryPath, const std::map< std::string, std::string > &fontNameMapping)
Definition: FFmpegKitConfig.cpp:839
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegKitConfig::enableFFprobeSessionCompleteCallback
static void enableFFprobeSessionCompleteCallback(const FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1144
+
ffmpegkit::FFmpegKitConfig::getSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessions()
Definition: FFmpegKitConfig.cpp:1234
+
ffmpegkit::FFmpegKitConfig::getMediaInformationSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::MediaInformationSession > > > getMediaInformationSessions()
Definition: FFmpegKitConfig.cpp:1291
+
ffmpegkit::FFmpegKitConfig::enableRedirection
static void enableRedirection()
Definition: FFmpegKitConfig.cpp:791
+
ffmpegkit::FFmpegKitConfig::parseArguments
static std::shared_ptr< std::list< std::string > > parseArguments(const std::string &command)
Definition: FFmpegKitConfig.cpp:1349
+
ffmpegkit::FFmpegKitConfig::messagesInTransmit
static int messagesInTransmit(const long sessionId)
Definition: FFmpegKitConfig.cpp:1335
+
ffmpegkit::FFmpegKitConfig::FFmpegKitNamedPipePrefix
static constexpr const char * FFmpegKitNamedPipePrefix
Definition: FFmpegKitConfig.h:50
+
ffmpegkit::FFmpegKitConfig::getSessionsByState
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Session > > > getSessionsByState(const SessionState state)
Definition: FFmpegKitConfig.cpp:1309
+
LogCallback.h
+
ffmpegkit::SessionState
SessionState
Definition: SessionState.h:25
+
StatisticsCallback.h
+
sessionHistorySize
static int sessionHistorySize
Definition: FFmpegKitConfig.cpp:52
+
ffmpegkit::FFmpegKitConfig::enableLogCallback
static void enableLogCallback(const ffmpegkit::LogCallback logCallback)
Definition: FFmpegKitConfig.cpp:1128
+
ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute
static void asyncFFmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1044
+
ffmpegkit::FFmpegKitConfig::setLogLevel
static void setLogLevel(const ffmpegkit::Level level)
Definition: FFmpegKitConfig.cpp:1164
+
ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath
static int setFontconfigConfigurationPath(const std::string &path)
Definition: FFmpegKitConfig.cpp:835
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
ffmpegkit::FFmpegKitConfig::isLTSBuild
static bool isLTSBuild()
Definition: FFmpegKitConfig.cpp:971
+
ffmpegkit::FFmpegKitConfig::clearSessions
static void clearSessions()
Definition: FFmpegKitConfig.cpp:1245
+
FFprobeSession.h
+
ffmpegkit::FFmpegKitConfig::ffmpegExecute
static void ffmpegExecute(const std::shared_ptr< ffmpegkit::FFmpegSession > ffmpegSession)
Definition: FFmpegKitConfig.cpp:1003
+
Level.h
+
ffmpegkit::FFmpegKitConfig::closeFFmpegPipe
static void closeFFmpegPipe(const std::string &ffmpegPipePath)
Definition: FFmpegKitConfig.cpp:955
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFmpegKitConfig::enableMediaInformationSessionCompleteCallback
static void enableMediaInformationSessionCompleteCallback(const MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback)
Definition: FFmpegKitConfig.cpp:1152
+
ffmpegkit::FFmpegKitConfig::getMediaInformationSessionCompleteCallback
static MediaInformationSessionCompleteCallback getMediaInformationSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1156
+
ffmpegkit::FFmpegKitConfig::getBuildDate
static std::string getBuildDate()
Definition: FFmpegKitConfig.cpp:979
+
ffmpegkit::FFprobeSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFprobeSession > session)> FFprobeSessionCompleteCallback
Definition: FFprobeSessionCompleteCallback.h:29
+
ffmpegkit::FFmpegKitConfig::getFFprobeSessionCompleteCallback
static FFprobeSessionCompleteCallback getFFprobeSessionCompleteCallback()
Definition: FFmpegKitConfig.cpp:1148
+
ffmpegkit::FFmpegKitConfig::getLastSession
static std::shared_ptr< ffmpegkit::Session > getLastSession()
Definition: FFmpegKitConfig.cpp:1212
+
ffmpegkit::FFmpegKitConfig::setLogRedirectionStrategy
static void setLogRedirectionStrategy(const LogRedirectionStrategy logRedirectionStrategy)
Definition: FFmpegKitConfig.cpp:1331
+
ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute
static void asyncGetMediaInformationExecute(const std::shared_ptr< ffmpegkit::MediaInformationSession > mediaInformationSession, int waitTimeout)
Definition: FFmpegKitConfig.cpp:1100
+
ffmpegkit::FFmpegKitConfig::ffprobeExecute
static void ffprobeExecute(const std::shared_ptr< ffmpegkit::FFprobeSession > ffprobeSession)
Definition: FFmpegKitConfig.cpp:1015
+
ffmpegSessionCompleteCallback
static ffmpegkit::FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback
Definition: FFmpegKitConfig.cpp:69
+
ffmpegkit::FFmpegKitConfig::sessionStateToString
static std::string sessionStateToString(SessionState state)
Definition: FFmpegKitConfig.cpp:1339
+ + + + diff --git a/docs/linux/html/df/d57/_media_information_session_complete_callback_8h.html b/docs/linux/html/df/d57/_media_information_session_complete_callback_8h.html new file mode 100644 index 0000000..a1db472 --- /dev/null +++ b/docs/linux/html/df/d57/_media_information_session_complete_callback_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSessionCompleteCallback.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Namespaces | +Typedefs
+
+
MediaInformationSessionCompleteCallback.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Namespaces

 ffmpegkit
 
+ + + +

+Typedefs

typedef std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> ffmpegkit::MediaInformationSessionCompleteCallback
 
+
+ + + + diff --git a/docs/linux/html/df/d57/_media_information_session_complete_callback_8h_source.html b/docs/linux/html/df/d57/_media_information_session_complete_callback_8h_source.html new file mode 100644 index 0000000..3e06c1d --- /dev/null +++ b/docs/linux/html/df/d57/_media_information_session_complete_callback_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +FFmpegKit Linux API: MediaInformationSessionCompleteCallback.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
MediaInformationSessionCompleteCallback.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H
+
21 #define FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H
+
22 
+
23 #include <iostream>
+
24 #include <memory>
+
25 #include <functional>
+
26 
+
27 namespace ffmpegkit {
+
28 
+ +
30 
+
53  typedef std::function<void(const std::shared_ptr<ffmpegkit::MediaInformationSession> session)> MediaInformationSessionCompleteCallback;
+
54 
+
55  #include "MediaInformationSession.h"
+
56 
+
57 }
+
58 
+
59 #endif // FFMPEG_KIT_MEDIA_INFORMATION_SESSION_COMPLETE_CALLBACK_H
+
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::MediaInformationSession
Definition: MediaInformationSession.h:33
+
MediaInformationSession.h
+
ffmpegkit::MediaInformationSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::MediaInformationSession > session)> MediaInformationSessionCompleteCallback
Definition: MediaInformationSessionCompleteCallback.h:29
+ + + + diff --git a/docs/linux/html/df/d77/struct_options_context.html b/docs/linux/html/df/d77/struct_options_context.html new file mode 100644 index 0000000..f8c894c --- /dev/null +++ b/docs/linux/html/df/d77/struct_options_context.html @@ -0,0 +1,2431 @@ + + + + + + + +FFmpegKit Linux API: OptionsContext Struct Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Fields
+
+
OptionsContext Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

OptionGroupg
 
int64_t start_time
 
int64_t start_time_eof
 
int seek_timestamp
 
const char * format
 
SpecifierOptcodec_names
 
int nb_codec_names
 
SpecifierOptaudio_channels
 
int nb_audio_channels
 
SpecifierOptaudio_sample_rate
 
int nb_audio_sample_rate
 
SpecifierOptframe_rates
 
int nb_frame_rates
 
SpecifierOptmax_frame_rates
 
int nb_max_frame_rates
 
SpecifierOptframe_sizes
 
int nb_frame_sizes
 
SpecifierOptframe_pix_fmts
 
int nb_frame_pix_fmts
 
int64_t input_ts_offset
 
int loop
 
int rate_emu
 
float readrate
 
int accurate_seek
 
int thread_queue_size
 
SpecifierOptts_scale
 
int nb_ts_scale
 
SpecifierOptdump_attachment
 
int nb_dump_attachment
 
SpecifierOpthwaccels
 
int nb_hwaccels
 
SpecifierOpthwaccel_devices
 
int nb_hwaccel_devices
 
SpecifierOpthwaccel_output_formats
 
int nb_hwaccel_output_formats
 
SpecifierOptautorotate
 
int nb_autorotate
 
StreamMapstream_maps
 
int nb_stream_maps
 
AudioChannelMapaudio_channel_maps
 
int nb_audio_channel_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
 
int64_t stop_time
 
uint64_t limit_filesize
 
float mux_preload
 
float mux_max_delay
 
int shortest
 
int bitexact
 
int video_disable
 
int audio_disable
 
int subtitle_disable
 
int data_disable
 
intstreamid_map
 
int nb_streamid_map
 
SpecifierOptmetadata
 
int nb_metadata
 
SpecifierOptmax_frames
 
int nb_max_frames
 
SpecifierOptbitstream_filters
 
int nb_bitstream_filters
 
SpecifierOptcodec_tags
 
int nb_codec_tags
 
SpecifierOptsample_fmts
 
int nb_sample_fmts
 
SpecifierOptqscale
 
int nb_qscale
 
SpecifierOptforced_key_frames
 
int nb_forced_key_frames
 
SpecifierOptforce_fps
 
int nb_force_fps
 
SpecifierOptframe_aspect_ratios
 
int nb_frame_aspect_ratios
 
SpecifierOptrc_overrides
 
int nb_rc_overrides
 
SpecifierOptintra_matrices
 
int nb_intra_matrices
 
SpecifierOptinter_matrices
 
int nb_inter_matrices
 
SpecifierOptchroma_intra_matrices
 
int nb_chroma_intra_matrices
 
SpecifierOpttop_field_first
 
int nb_top_field_first
 
SpecifierOptmetadata_map
 
int nb_metadata_map
 
SpecifierOptpresets
 
int nb_presets
 
SpecifierOptcopy_initial_nonkeyframes
 
int nb_copy_initial_nonkeyframes
 
SpecifierOptcopy_prior_start
 
int nb_copy_prior_start
 
SpecifierOptfilters
 
int nb_filters
 
SpecifierOptfilter_scripts
 
int nb_filter_scripts
 
SpecifierOptreinit_filters
 
int nb_reinit_filters
 
SpecifierOptfix_sub_duration
 
int nb_fix_sub_duration
 
SpecifierOptcanvas_sizes
 
int nb_canvas_sizes
 
SpecifierOptpass
 
int nb_pass
 
SpecifierOptpasslogfiles
 
int nb_passlogfiles
 
SpecifierOptmax_muxing_queue_size
 
int nb_max_muxing_queue_size
 
SpecifierOptmuxing_queue_data_threshold
 
int nb_muxing_queue_data_threshold
 
SpecifierOptguess_layout_max
 
int nb_guess_layout_max
 
SpecifierOptapad
 
int nb_apad
 
SpecifierOptdiscard
 
int nb_discard
 
SpecifierOptdisposition
 
int nb_disposition
 
SpecifierOptprogram
 
int nb_program
 
SpecifierOpttime_bases
 
int nb_time_bases
 
SpecifierOptenc_time_bases
 
int nb_enc_time_bases
 
SpecifierOptautoscale
 
int nb_autoscale
 
+

Detailed Description

+
+

Definition at line 117 of file fftools_ffmpeg.h.

+

Field Documentation

+ +

◆ accurate_seek

+ +
+
+ + + + +
int OptionsContext::accurate_seek
+
+ +

Definition at line 146 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ apad

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::apad
+
+ +

Definition at line 248 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ attachments

+ +
+
+ + + + +
const char** OptionsContext::attachments
+
+ +

Definition at line 170 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_channel_maps

+ +
+
+ + + + +
AudioChannelMap* OptionsContext::audio_channel_maps
+
+ +

Definition at line 165 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_channels

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::audio_channels
+
+ +

Definition at line 128 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_disable

+ +
+
+ + + + +
int OptionsContext::audio_disable
+
+ +

Definition at line 184 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ audio_sample_rate

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::audio_sample_rate
+
+ +

Definition at line 130 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ autorotate

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::autorotate
+
+ +

Definition at line 159 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ autoscale

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::autoscale
+
+ +

Definition at line 260 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ bitexact

+ +
+
+ + + + +
int OptionsContext::bitexact
+
+ +

Definition at line 181 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ bitstream_filters

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::bitstream_filters
+
+ +

Definition at line 196 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ canvas_sizes

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::canvas_sizes
+
+ +

Definition at line 236 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ chapters_input_file

+ +
+
+ + + + +
int OptionsContext::chapters_input_file
+
+ +

Definition at line 173 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ chroma_intra_matrices

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::chroma_intra_matrices
+
+ +

Definition at line 216 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ codec_names

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::codec_names
+
+ +

Definition at line 126 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ codec_tags

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::codec_tags
+
+ +

Definition at line 198 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ copy_initial_nonkeyframes

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::copy_initial_nonkeyframes
+
+ +

Definition at line 224 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ copy_prior_start

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::copy_prior_start
+
+ +

Definition at line 226 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ data_disable

+ +
+
+ + + + +
int OptionsContext::data_disable
+
+ +

Definition at line 186 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ discard

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::discard
+
+ +

Definition at line 250 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ disposition

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::disposition
+
+ +

Definition at line 252 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ dump_attachment

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::dump_attachment
+
+ +

Definition at line 151 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ enc_time_bases

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::enc_time_bases
+
+ +

Definition at line 258 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filter_scripts

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::filter_scripts
+
+ +

Definition at line 230 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ filters

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::filters
+
+ +

Definition at line 228 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ fix_sub_duration

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::fix_sub_duration
+
+ +

Definition at line 234 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ force_fps

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::force_fps
+
+ +

Definition at line 206 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ forced_key_frames

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::forced_key_frames
+
+ +

Definition at line 204 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ format

+ +
+
+ + + + +
const char* OptionsContext::format
+
+ +

Definition at line 124 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_aspect_ratios

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::frame_aspect_ratios
+
+ +

Definition at line 208 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_pix_fmts

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::frame_pix_fmts
+
+ +

Definition at line 138 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_rates

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::frame_rates
+
+ +

Definition at line 132 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ frame_sizes

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::frame_sizes
+
+ +

Definition at line 136 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ g

+ +
+
+ + + + +
OptionGroup* OptionsContext::g
+
+ +

Definition at line 118 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ guess_layout_max

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::guess_layout_max
+
+ +

Definition at line 246 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_devices

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::hwaccel_devices
+
+ +

Definition at line 155 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccel_output_formats

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::hwaccel_output_formats
+
+ +

Definition at line 157 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ hwaccels

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::hwaccels
+
+ +

Definition at line 153 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ input_ts_offset

+ +
+
+ + + + +
int64_t OptionsContext::input_ts_offset
+
+ +

Definition at line 142 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ inter_matrices

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::inter_matrices
+
+ +

Definition at line 214 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ intra_matrices

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::intra_matrices
+
+ +

Definition at line 212 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ limit_filesize

+ +
+
+ + + + +
uint64_t OptionsContext::limit_filesize
+
+ +

Definition at line 177 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ loop

+ +
+
+ + + + +
int OptionsContext::loop
+
+ +

Definition at line 143 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_frame_rates

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::max_frame_rates
+
+ +

Definition at line 134 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_frames

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::max_frames
+
+ +

Definition at line 194 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ max_muxing_queue_size

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::max_muxing_queue_size
+
+ +

Definition at line 242 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ metadata

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::metadata
+
+ +

Definition at line 192 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ metadata_chapters_manual

+ +
+
+ + + + +
int OptionsContext::metadata_chapters_manual
+
+ +

Definition at line 169 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ metadata_global_manual

+ +
+
+ + + + +
int OptionsContext::metadata_global_manual
+
+ +

Definition at line 167 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ metadata_map

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::metadata_map
+
+ +

Definition at line 220 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ metadata_streams_manual

+ +
+
+ + + + +
int OptionsContext::metadata_streams_manual
+
+ +

Definition at line 168 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ mux_max_delay

+ +
+
+ + + + +
float OptionsContext::mux_max_delay
+
+ +

Definition at line 179 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ mux_preload

+ +
+
+ + + + +
float OptionsContext::mux_preload
+
+ +

Definition at line 178 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ muxing_queue_data_threshold

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::muxing_queue_data_threshold
+
+ +

Definition at line 244 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_apad

+ +
+
+ + + + +
int OptionsContext::nb_apad
+
+ +

Definition at line 249 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_attachments

+ +
+
+ + + + +
int OptionsContext::nb_attachments
+
+ +

Definition at line 171 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_audio_channel_maps

+ +
+
+ + + + +
int OptionsContext::nb_audio_channel_maps
+
+ +

Definition at line 166 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_audio_channels

+ +
+
+ + + + +
int OptionsContext::nb_audio_channels
+
+ +

Definition at line 129 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_audio_sample_rate

+ +
+
+ + + + +
int OptionsContext::nb_audio_sample_rate
+
+ +

Definition at line 131 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_autorotate

+ +
+
+ + + + +
int OptionsContext::nb_autorotate
+
+ +

Definition at line 160 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_autoscale

+ +
+
+ + + + +
int OptionsContext::nb_autoscale
+
+ +

Definition at line 261 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_bitstream_filters

+ +
+
+ + + + +
int OptionsContext::nb_bitstream_filters
+
+ +

Definition at line 197 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_canvas_sizes

+ +
+
+ + + + +
int OptionsContext::nb_canvas_sizes
+
+ +

Definition at line 237 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_chroma_intra_matrices

+ +
+
+ + + + +
int OptionsContext::nb_chroma_intra_matrices
+
+ +

Definition at line 217 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_codec_names

+ +
+
+ + + + +
int OptionsContext::nb_codec_names
+
+ +

Definition at line 127 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_codec_tags

+ +
+
+ + + + +
int OptionsContext::nb_codec_tags
+
+ +

Definition at line 199 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_copy_initial_nonkeyframes

+ +
+
+ + + + +
int OptionsContext::nb_copy_initial_nonkeyframes
+
+ +

Definition at line 225 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_copy_prior_start

+ +
+
+ + + + +
int OptionsContext::nb_copy_prior_start
+
+ +

Definition at line 227 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_discard

+ +
+
+ + + + +
int OptionsContext::nb_discard
+
+ +

Definition at line 251 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_disposition

+ +
+
+ + + + +
int OptionsContext::nb_disposition
+
+ +

Definition at line 253 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_dump_attachment

+ +
+
+ + + + +
int OptionsContext::nb_dump_attachment
+
+ +

Definition at line 152 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_enc_time_bases

+ +
+
+ + + + +
int OptionsContext::nb_enc_time_bases
+
+ +

Definition at line 259 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_filter_scripts

+ +
+
+ + + + +
int OptionsContext::nb_filter_scripts
+
+ +

Definition at line 231 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_filters

+ +
+
+ + + + +
int OptionsContext::nb_filters
+
+ +

Definition at line 229 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_fix_sub_duration

+ +
+
+ + + + +
int OptionsContext::nb_fix_sub_duration
+
+ +

Definition at line 235 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_force_fps

+ +
+
+ + + + +
int OptionsContext::nb_force_fps
+
+ +

Definition at line 207 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_forced_key_frames

+ +
+
+ + + + +
int OptionsContext::nb_forced_key_frames
+
+ +

Definition at line 205 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_frame_aspect_ratios

+ +
+
+ + + + +
int OptionsContext::nb_frame_aspect_ratios
+
+ +

Definition at line 209 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_frame_pix_fmts

+ +
+
+ + + + +
int OptionsContext::nb_frame_pix_fmts
+
+ +

Definition at line 139 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_frame_rates

+ +
+
+ + + + +
int OptionsContext::nb_frame_rates
+
+ +

Definition at line 133 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_frame_sizes

+ +
+
+ + + + +
int OptionsContext::nb_frame_sizes
+
+ +

Definition at line 137 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_guess_layout_max

+ +
+
+ + + + +
int OptionsContext::nb_guess_layout_max
+
+ +

Definition at line 247 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_hwaccel_devices

+ +
+
+ + + + +
int OptionsContext::nb_hwaccel_devices
+
+ +

Definition at line 156 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_hwaccel_output_formats

+ +
+
+ + + + +
int OptionsContext::nb_hwaccel_output_formats
+
+ +

Definition at line 158 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_hwaccels

+ +
+
+ + + + +
int OptionsContext::nb_hwaccels
+
+ +

Definition at line 154 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_inter_matrices

+ +
+
+ + + + +
int OptionsContext::nb_inter_matrices
+
+ +

Definition at line 215 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_intra_matrices

+ +
+
+ + + + +
int OptionsContext::nb_intra_matrices
+
+ +

Definition at line 213 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_max_frame_rates

+ +
+
+ + + + +
int OptionsContext::nb_max_frame_rates
+
+ +

Definition at line 135 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_max_frames

+ +
+
+ + + + +
int OptionsContext::nb_max_frames
+
+ +

Definition at line 195 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_max_muxing_queue_size

+ +
+
+ + + + +
int OptionsContext::nb_max_muxing_queue_size
+
+ +

Definition at line 243 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_metadata

+ +
+
+ + + + +
int OptionsContext::nb_metadata
+
+ +

Definition at line 193 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_metadata_map

+ +
+
+ + + + +
int OptionsContext::nb_metadata_map
+
+ +

Definition at line 221 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_muxing_queue_data_threshold

+ +
+
+ + + + +
int OptionsContext::nb_muxing_queue_data_threshold
+
+ +

Definition at line 245 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_pass

+ +
+
+ + + + +
int OptionsContext::nb_pass
+
+ +

Definition at line 239 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_passlogfiles

+ +
+
+ + + + +
int OptionsContext::nb_passlogfiles
+
+ +

Definition at line 241 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_presets

+ +
+
+ + + + +
int OptionsContext::nb_presets
+
+ +

Definition at line 223 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_program

+ +
+
+ + + + +
int OptionsContext::nb_program
+
+ +

Definition at line 255 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_qscale

+ +
+
+ + + + +
int OptionsContext::nb_qscale
+
+ +

Definition at line 203 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_rc_overrides

+ +
+
+ + + + +
int OptionsContext::nb_rc_overrides
+
+ +

Definition at line 211 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_reinit_filters

+ +
+
+ + + + +
int OptionsContext::nb_reinit_filters
+
+ +

Definition at line 233 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_sample_fmts

+ +
+
+ + + + +
int OptionsContext::nb_sample_fmts
+
+ +

Definition at line 201 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_stream_maps

+ +
+
+ + + + +
int OptionsContext::nb_stream_maps
+
+ +

Definition at line 164 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_streamid_map

+ +
+
+ + + + +
int OptionsContext::nb_streamid_map
+
+ +

Definition at line 190 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_time_bases

+ +
+
+ + + + +
int OptionsContext::nb_time_bases
+
+ +

Definition at line 257 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_top_field_first

+ +
+
+ + + + +
int OptionsContext::nb_top_field_first
+
+ +

Definition at line 219 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ nb_ts_scale

+ +
+
+ + + + +
int OptionsContext::nb_ts_scale
+
+ +

Definition at line 150 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ pass

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::pass
+
+ +

Definition at line 238 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ passlogfiles

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::passlogfiles
+
+ +

Definition at line 240 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ presets

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::presets
+
+ +

Definition at line 222 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ program

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::program
+
+ +

Definition at line 254 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ qscale

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::qscale
+
+ +

Definition at line 202 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ rate_emu

+ +
+
+ + + + +
int OptionsContext::rate_emu
+
+ +

Definition at line 144 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ rc_overrides

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::rc_overrides
+
+ +

Definition at line 210 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ readrate

+ +
+
+ + + + +
float OptionsContext::readrate
+
+ +

Definition at line 145 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ recording_time

+ +
+
+ + + + +
int64_t OptionsContext::recording_time
+
+ +

Definition at line 175 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ reinit_filters

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::reinit_filters
+
+ +

Definition at line 232 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ sample_fmts

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::sample_fmts
+
+ +

Definition at line 200 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ seek_timestamp

+ +
+
+ + + + +
int OptionsContext::seek_timestamp
+
+ +

Definition at line 123 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ shortest

+ +
+
+ + + + +
int OptionsContext::shortest
+
+ +

Definition at line 180 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ start_time

+ +
+
+ + + + +
int64_t OptionsContext::start_time
+
+ +

Definition at line 121 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ start_time_eof

+ +
+
+ + + + +
int64_t OptionsContext::start_time_eof
+
+ +

Definition at line 122 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ stop_time

+ +
+
+ + + + +
int64_t OptionsContext::stop_time
+
+ +

Definition at line 176 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ stream_maps

+ +
+
+ + + + +
StreamMap* OptionsContext::stream_maps
+
+ +

Definition at line 163 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ streamid_map

+ +
+
+ + + + +
int* OptionsContext::streamid_map
+
+ +

Definition at line 189 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ subtitle_disable

+ +
+
+ + + + +
int OptionsContext::subtitle_disable
+
+ +

Definition at line 185 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ thread_queue_size

+ +
+
+ + + + +
int OptionsContext::thread_queue_size
+
+ +

Definition at line 147 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ time_bases

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::time_bases
+
+ +

Definition at line 256 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ top_field_first

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::top_field_first
+
+ +

Definition at line 218 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ ts_scale

+ +
+
+ + + + +
SpecifierOpt* OptionsContext::ts_scale
+
+ +

Definition at line 149 of file fftools_ffmpeg.h.

+ +
+
+ +

◆ video_disable

+ +
+
+ + + + +
int OptionsContext::video_disable
+
+ +

Definition at line 183 of file fftools_ffmpeg.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/linux/html/df/d99/_f_fmpeg_kit_8h.html b/docs/linux/html/df/d99/_f_fmpeg_kit_8h.html new file mode 100644 index 0000000..1eff9f4 --- /dev/null +++ b/docs/linux/html/df/d99/_f_fmpeg_kit_8h.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKit.h File Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Data Structures | +Namespaces
+
+
FFmpegKit.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

class  ffmpegkit::FFmpegKit
 
+ + + +

+Namespaces

 ffmpegkit
 
+
+ + + + diff --git a/docs/linux/html/df/d99/_f_fmpeg_kit_8h_source.html b/docs/linux/html/df/d99/_f_fmpeg_kit_8h_source.html new file mode 100644 index 0000000..2dd53cc --- /dev/null +++ b/docs/linux/html/df/d99/_f_fmpeg_kit_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +FFmpegKit Linux API: FFmpegKit.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegKit.h
+
+
+Go to the documentation of this file.
1 /*
+
2  * Copyright (c) 2022 Taner Sener
+
3  *
+
4  * This file is part of FFmpegKit.
+
5  *
+
6  * FFmpegKit is free software: you can redistribute it and/or modify
+
7  * it under the terms of the GNU Lesser General Public License as published by
+
8  * the Free Software Foundation, either version 3 of the License, or
+
9  * (at your option) any later version.
+
10  *
+
11  * FFmpegKit is distributed in the hope that it will be useful,
+
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+
14  * GNU Lesser General Public License for more details.
+
15  *
+
16  * You should have received a copy of the GNU Lesser General Public License
+
17  * along with FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
+
18  */
+
19 
+
20 #ifndef FFMPEG_KIT_H
+
21 #define FFMPEG_KIT_H
+
22 
+
23 #include <string.h>
+
24 #include <stdlib.h>
+
25 #include "LogCallback.h"
+
26 #include "FFmpegSession.h"
+
27 #include "StatisticsCallback.h"
+
28 
+
29 namespace ffmpegkit {
+
30 
+
44  class FFmpegKit {
+
45  public:
+
46 
+
53  static std::shared_ptr<ffmpegkit::FFmpegSession> executeWithArguments(const std::shared_ptr<std::list<std::string>> arguments);
+
54 
+
65  static std::shared_ptr<ffmpegkit::FFmpegSession> executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback);
+
66 
+
79  static std::shared_ptr<ffmpegkit::FFmpegSession> executeWithArgumentsAsync(const std::shared_ptr<std::list<std::string>> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback);
+
80 
+
89  static std::shared_ptr<ffmpegkit::FFmpegSession> execute(const std::string command);
+
90 
+
102  static std::shared_ptr<ffmpegkit::FFmpegSession> executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback);
+
103 
+
117  static std::shared_ptr<ffmpegkit::FFmpegSession> executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback);
+
118 
+
124  static void cancel();
+
125 
+
133  static void cancel(const long sessionId);
+
134 
+
140  static std::shared_ptr<std::list<std::shared_ptr<ffmpegkit::FFmpegSession>>> listSessions();
+
141 
+
142  };
+
143 
+
144 }
+
145 
+
146 #endif // FFMPEG_KIT_H
+
+
ffmpegkit::FFmpegKit::executeAsync
static std::shared_ptr< ffmpegkit::FFmpegSession > executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback)
Definition: FFmpegKit.cpp:56
+
ffmpegkit
Definition: AbstractSession.h:25
+
ffmpegkit::FFmpegSessionCompleteCallback
std::function< void(const std::shared_ptr< ffmpegkit::FFmpegSession > session)> FFmpegSessionCompleteCallback
Definition: FFmpegSessionCompleteCallback.h:29
+
FFmpegSession.h
+
ffmpegkit::LogCallback
std::function< void(const std::shared_ptr< ffmpegkit::Log > log)> LogCallback
Definition: LogCallback.h:35
+
ffmpegkit::FFmpegKit::execute
static std::shared_ptr< ffmpegkit::FFmpegSession > execute(const std::string command)
Definition: FFmpegKit.cpp:50
+
statisticsCallback
static ffmpegkit::StatisticsCallback statisticsCallback
Definition: FFmpegKitConfig.cpp:66
+
LogCallback.h
+
StatisticsCallback.h
+
ffmpegkit::FFmpegKit::listSessions
static std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::FFmpegSession > > > listSessions()
Definition: FFmpegKit.cpp:81
+
ffmpegkit::StatisticsCallback
std::function< void(const std::shared_ptr< ffmpegkit::Statistics > statistics)> StatisticsCallback
Definition: StatisticsCallback.h:35
+
logCallback
static ffmpegkit::LogCallback logCallback
Definition: FFmpegKitConfig.cpp:63
+
ffmpegkit::FFmpegKit
Definition: FFmpegKit.h:44
+
ffmpegkit::FFmpegKit::executeWithArgumentsAsync
static std::shared_ptr< ffmpegkit::FFmpegSession > executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback)
Definition: FFmpegKit.cpp:38
+
ffmpegkit::FFmpegKit::cancel
static void cancel()
Definition: FFmpegKit.cpp:68
+
ffmpegkit::FFmpegKit::executeWithArguments
static std::shared_ptr< ffmpegkit::FFmpegSession > executeWithArguments(const std::shared_ptr< std::list< std::string >> arguments)
Definition: FFmpegKit.cpp:32
+ + + + diff --git a/docs/linux/html/df/db7/classffmpegkit_1_1_media_information_session.html b/docs/linux/html/df/db7/classffmpegkit_1_1_media_information_session.html new file mode 100644 index 0000000..05c6f5a --- /dev/null +++ b/docs/linux/html/df/db7/classffmpegkit_1_1_media_information_session.html @@ -0,0 +1,599 @@ + + + + + + + +FFmpegKit Linux API: ffmpegkit::MediaInformationSession Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Data Structures | +Public Member Functions | +Static Public Member Functions | +Private Member Functions | +Private Attributes
+
+
ffmpegkit::MediaInformationSession Class Reference
+
+
+ + + + +

+Data Structures

struct  PublicMediaInformationSession
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

std::shared_ptr< ffmpegkit::MediaInformationgetMediaInformation ()
 
void setMediaInformation (const std::shared_ptr< ffmpegkit::MediaInformation > mediaInformation)
 
ffmpegkit::MediaInformationSessionCompleteCallback getCompleteCallback ()
 
bool isFFmpeg () const override
 
bool isFFprobe () const override
 
bool isMediaInformation () const override
 
- Public Member Functions inherited from ffmpegkit::AbstractSession
 AbstractSession (const std::shared_ptr< std::list< std::string >> arguments, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)
 
void waitForAsynchronousMessagesInTransmit (const int timeout) const
 
ffmpegkit::LogCallback getLogCallback () const override
 
long getSessionId () const override
 
std::chrono::time_point< std::chrono::system_clock > getCreateTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getStartTime () const override
 
std::chrono::time_point< std::chrono::system_clock > getEndTime () const override
 
long getDuration () const override
 
std::shared_ptr< std::list< std::string > > getArguments () const override
 
std::string getCommand () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogsWithTimeout (const int waitTimeout) const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getAllLogs () const override
 
std::shared_ptr< std::list< std::shared_ptr< ffmpegkit::Log > > > getLogs () const override
 
std::string getAllLogsAsStringWithTimeout (const int waitTimeout) const override
 
std::string getAllLogsAsString () const override
 
std::string getLogsAsString () const override
 
std::string getOutput () const override
 
ffmpegkit::SessionState getState () const override
 
std::shared_ptr< ffmpegkit::ReturnCodegetReturnCode () const override
 
std::string getFailStackTrace () const override
 
ffmpegkit::LogRedirectionStrategy getLogRedirectionStrategy () const override
 
bool thereAreAsynchronousMessagesInTransmit () const override
 
void addLog (const std::shared_ptr< ffmpegkit::Log > log) override
 
void startRunning () override
 
void complete (const std::shared_ptr< ffmpegkit::ReturnCode > returnCode) override
 
void fail (const char *error) override
 
void cancel () override
 
+ + + + + + + +

+Static Public Member Functions

static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback)
 
static std::shared_ptr< ffmpegkit::MediaInformationSessioncreate (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
+ + + +

+Private Member Functions

 MediaInformationSession (const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)
 
+ + + + + +

+Private Attributes

ffmpegkit::MediaInformationSessionCompleteCallback _completeCallback
 
std::shared_ptr< ffmpegkit::MediaInformation_mediaInformation
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ffmpegkit::AbstractSession
static constexpr int DefaultTimeoutForAsynchronousMessagesInTransmit = 5000
 
+

Detailed Description

+

A custom FFprobe session, which produces a MediaInformation object using the FFprobe output.

+ +

Definition at line 33 of file MediaInformationSession.h.

+

Constructor & Destructor Documentation

+ +

◆ MediaInformationSession()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
ffmpegkit::MediaInformationSession::MediaInformationSession (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::MediaInformationSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback 
)
+
+private
+
+

Creates a new media information session.

+
Parameters
+ + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
+
+
+ +

Definition at line 50 of file MediaInformationSession.cpp.

+ +
+
+

Member Function Documentation

+ +

◆ create() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::MediaInformationSession::create (const std::shared_ptr< std::list< std::string >> arguments)
+
+static
+
+

Creates a new media information session.

+
Parameters
+ + +
argumentscommand arguments
+
+
+ +

Definition at line 26 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ create() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::MediaInformationSession::create (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::MediaInformationSessionCompleteCallback completeCallback 
)
+
+static
+
+

Creates a new media information session.

+
Parameters
+ + + +
argumentscommand arguments
completeCallbacksession specific complete callback
+
+
+ +

Definition at line 32 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ create() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformationSession > ffmpegkit::MediaInformationSession::create (const std::shared_ptr< std::list< std::string >> arguments,
ffmpegkit::MediaInformationSessionCompleteCallback completeCallback,
ffmpegkit::LogCallback logCallback 
)
+
+static
+
+

Creates a new media information session.

+
Parameters
+ + + + +
argumentscommand arguments
completeCallbacksession specific complete callback
logCallbacksession specific log callback
+
+
+ +

Definition at line 38 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ getCompleteCallback()

+ +
+
+ + + + + + + +
ffmpegkit::MediaInformationSessionCompleteCallback ffmpegkit::MediaInformationSession::getCompleteCallback ()
+
+

Returns the session specific complete callback.

+
Returns
session specific complete callback
+ +

Definition at line 62 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ getMediaInformation()

+ +
+
+ + + + + + + +
std::shared_ptr< ffmpegkit::MediaInformation > ffmpegkit::MediaInformationSession::getMediaInformation ()
+
+

Returns the media information extracted in this session.

+
Returns
media information extracted or nullptr if the command failed or the output can not be parsed
+ +

Definition at line 54 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ isFFmpeg()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::MediaInformationSession::isFFmpeg () const
+
+overridevirtual
+
+

Returns whether it is an FFmpeg session or not.

+
Returns
true if it is an FFmpeg session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 66 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ isFFprobe()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::MediaInformationSession::isFFprobe () const
+
+overridevirtual
+
+

Returns whether it is an FFprobe session or not.

+
Returns
true if it is an FFprobe session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 70 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ isMediaInformation()

+ +
+
+ + + + + +
+ + + + + + + +
bool ffmpegkit::MediaInformationSession::isMediaInformation () const
+
+overridevirtual
+
+

Returns whether it is a MediaInformation session or not.

+
Returns
true if it is a MediaInformation session, false otherwise
+ +

Reimplemented from ffmpegkit::AbstractSession.

+ +

Definition at line 74 of file MediaInformationSession.cpp.

+ +
+
+ +

◆ setMediaInformation()

+ +
+
+ + + + + + + + +
void ffmpegkit::MediaInformationSession::setMediaInformation (const std::shared_ptr< ffmpegkit::MediaInformationmediaInformation)
+
+

Sets the media information extracted in this session.

+
Parameters
+ + +
mediaInformationmedia information extracted
+
+
+ +

Definition at line 58 of file MediaInformationSession.cpp.

+ +
+
+

Field Documentation

+ +

◆ _completeCallback

+ +
+
+ + + + + +
+ + + + +
ffmpegkit::MediaInformationSessionCompleteCallback ffmpegkit::MediaInformationSession::_completeCallback
+
+private
+
+ +

Definition at line 116 of file MediaInformationSession.h.

+ +
+
+ +

◆ _mediaInformation

+ +
+
+ + + + + +
+ + + + +
std::shared_ptr<ffmpegkit::MediaInformation> ffmpegkit::MediaInformationSession::_mediaInformation
+
+private
+
+ +

Definition at line 117 of file MediaInformationSession.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/linux/html/doc.png b/docs/linux/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/linux/html/doc.png differ diff --git a/docs/linux/html/doxygen.css b/docs/linux/html/doxygen.css new file mode 100644 index 0000000..73ecbb2 --- /dev/null +++ b/docs/linux/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/linux/html/doxygen.png b/docs/linux/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/docs/linux/html/doxygen.png differ diff --git a/docs/linux/html/dynsections.js b/docs/linux/html/dynsections.js new file mode 100644 index 0000000..c8e84aa --- /dev/null +++ b/docs/linux/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +FFmpegKit Linux API: File List + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
+ + + + diff --git a/docs/linux/html/folderclosed.png b/docs/linux/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/linux/html/folderclosed.png differ diff --git a/docs/linux/html/folderopen.png b/docs/linux/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/linux/html/folderopen.png differ diff --git a/docs/linux/html/functions.html b/docs/linux/html/functions.html new file mode 100644 index 0000000..5288a3f --- /dev/null +++ b/docs/linux/html/functions.html @@ -0,0 +1,203 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- _ -

+
+ + + + diff --git a/docs/linux/html/functions_a.html b/docs/linux/html/functions_a.html new file mode 100644 index 0000000..b48ecaf --- /dev/null +++ b/docs/linux/html/functions_a.html @@ -0,0 +1,149 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- a -

+
+ + + + diff --git a/docs/linux/html/functions_b.html b/docs/linux/html/functions_b.html new file mode 100644 index 0000000..f130d8c --- /dev/null +++ b/docs/linux/html/functions_b.html @@ -0,0 +1,87 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- b -

+
+ + + + diff --git a/docs/linux/html/functions_c.html b/docs/linux/html/functions_c.html new file mode 100644 index 0000000..52d8ea7 --- /dev/null +++ b/docs/linux/html/functions_c.html @@ -0,0 +1,179 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- c -

+
+ + + + diff --git a/docs/linux/html/functions_d.html b/docs/linux/html/functions_d.html new file mode 100644 index 0000000..8a467e4 --- /dev/null +++ b/docs/linux/html/functions_d.html @@ -0,0 +1,150 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- d -

+
+ + + + diff --git a/docs/linux/html/functions_e.html b/docs/linux/html/functions_e.html new file mode 100644 index 0000000..9b339f2 --- /dev/null +++ b/docs/linux/html/functions_e.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- e -

+
+ + + + diff --git a/docs/linux/html/functions_f.html b/docs/linux/html/functions_f.html new file mode 100644 index 0000000..33bfa2d --- /dev/null +++ b/docs/linux/html/functions_f.html @@ -0,0 +1,246 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- f -

+
+ + + + diff --git a/docs/linux/html/functions_func.html b/docs/linux/html/functions_func.html new file mode 100644 index 0000000..42fb790 --- /dev/null +++ b/docs/linux/html/functions_func.html @@ -0,0 +1,100 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/docs/linux/html/functions_func_c.html b/docs/linux/html/functions_func_c.html new file mode 100644 index 0000000..b15bb16 --- /dev/null +++ b/docs/linux/html/functions_func_c.html @@ -0,0 +1,104 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/docs/linux/html/functions_func_d.html b/docs/linux/html/functions_func_d.html new file mode 100644 index 0000000..a6299cf --- /dev/null +++ b/docs/linux/html/functions_func_d.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/docs/linux/html/functions_func_e.html b/docs/linux/html/functions_func_e.html new file mode 100644 index 0000000..faee1c8 --- /dev/null +++ b/docs/linux/html/functions_func_e.html @@ -0,0 +1,112 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/docs/linux/html/functions_func_f.html b/docs/linux/html/functions_func_f.html new file mode 100644 index 0000000..c1ad527 --- /dev/null +++ b/docs/linux/html/functions_func_f.html @@ -0,0 +1,100 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/docs/linux/html/functions_func_g.html b/docs/linux/html/functions_func_g.html new file mode 100644 index 0000000..5a229fd --- /dev/null +++ b/docs/linux/html/functions_func_g.html @@ -0,0 +1,410 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/docs/linux/html/functions_func_i.html b/docs/linux/html/functions_func_i.html new file mode 100644 index 0000000..c968f97 --- /dev/null +++ b/docs/linux/html/functions_func_i.html @@ -0,0 +1,120 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/docs/linux/html/functions_func_l.html b/docs/linux/html/functions_func_l.html new file mode 100644 index 0000000..67da12e --- /dev/null +++ b/docs/linux/html/functions_func_l.html @@ -0,0 +1,93 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/docs/linux/html/functions_func_m.html b/docs/linux/html/functions_func_m.html new file mode 100644 index 0000000..31a7ede --- /dev/null +++ b/docs/linux/html/functions_func_m.html @@ -0,0 +1,87 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/docs/linux/html/functions_func_p.html b/docs/linux/html/functions_func_p.html new file mode 100644 index 0000000..3d1c3d0 --- /dev/null +++ b/docs/linux/html/functions_func_p.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/docs/linux/html/functions_func_r.html b/docs/linux/html/functions_func_r.html new file mode 100644 index 0000000..c9cd64d --- /dev/null +++ b/docs/linux/html/functions_func_r.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/docs/linux/html/functions_func_s.html b/docs/linux/html/functions_func_s.html new file mode 100644 index 0000000..e45054a --- /dev/null +++ b/docs/linux/html/functions_func_s.html @@ -0,0 +1,115 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/docs/linux/html/functions_func_t.html b/docs/linux/html/functions_func_t.html new file mode 100644 index 0000000..4b64fdb --- /dev/null +++ b/docs/linux/html/functions_func_t.html @@ -0,0 +1,82 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/docs/linux/html/functions_func_w.html b/docs/linux/html/functions_func_w.html new file mode 100644 index 0000000..edd515a --- /dev/null +++ b/docs/linux/html/functions_func_w.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/docs/linux/html/functions_g.html b/docs/linux/html/functions_g.html new file mode 100644 index 0000000..4eeafb9 --- /dev/null +++ b/docs/linux/html/functions_g.html @@ -0,0 +1,439 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- g -

+
+ + + + diff --git a/docs/linux/html/functions_h.html b/docs/linux/html/functions_h.html new file mode 100644 index 0000000..6a157c4 --- /dev/null +++ b/docs/linux/html/functions_h.html @@ -0,0 +1,148 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- h -

+
+ + + + diff --git a/docs/linux/html/functions_i.html b/docs/linux/html/functions_i.html new file mode 100644 index 0000000..f178329 --- /dev/null +++ b/docs/linux/html/functions_i.html @@ -0,0 +1,185 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- i -

+
+ + + + diff --git a/docs/linux/html/functions_k.html b/docs/linux/html/functions_k.html new file mode 100644 index 0000000..7dd9124 --- /dev/null +++ b/docs/linux/html/functions_k.html @@ -0,0 +1,174 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- k -

+
+ + + + diff --git a/docs/linux/html/functions_l.html b/docs/linux/html/functions_l.html new file mode 100644 index 0000000..273c663 --- /dev/null +++ b/docs/linux/html/functions_l.html @@ -0,0 +1,137 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- l -

+
+ + + + diff --git a/docs/linux/html/functions_m.html b/docs/linux/html/functions_m.html new file mode 100644 index 0000000..ba38155 --- /dev/null +++ b/docs/linux/html/functions_m.html @@ -0,0 +1,141 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- m -

+
+ + + + diff --git a/docs/linux/html/functions_n.html b/docs/linux/html/functions_n.html new file mode 100644 index 0000000..145887f --- /dev/null +++ b/docs/linux/html/functions_n.html @@ -0,0 +1,306 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- n -

+
+ + + + diff --git a/docs/linux/html/functions_o.html b/docs/linux/html/functions_o.html new file mode 100644 index 0000000..ca3d4ee --- /dev/null +++ b/docs/linux/html/functions_o.html @@ -0,0 +1,109 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- o -

+
+ + + + diff --git a/docs/linux/html/functions_p.html b/docs/linux/html/functions_p.html new file mode 100644 index 0000000..0c70ace --- /dev/null +++ b/docs/linux/html/functions_p.html @@ -0,0 +1,146 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- p -

+
+ + + + diff --git a/docs/linux/html/functions_q.html b/docs/linux/html/functions_q.html new file mode 100644 index 0000000..70b0e2f --- /dev/null +++ b/docs/linux/html/functions_q.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- q -

+
+ + + + diff --git a/docs/linux/html/functions_r.html b/docs/linux/html/functions_r.html new file mode 100644 index 0000000..d8e0a68 --- /dev/null +++ b/docs/linux/html/functions_r.html @@ -0,0 +1,126 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- r -

+
+ + + + diff --git a/docs/linux/html/functions_rela.html b/docs/linux/html/functions_rela.html new file mode 100644 index 0000000..840bc3b --- /dev/null +++ b/docs/linux/html/functions_rela.html @@ -0,0 +1,79 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Related Functions + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/linux/html/functions_s.html b/docs/linux/html/functions_s.html new file mode 100644 index 0000000..6eb5db8 --- /dev/null +++ b/docs/linux/html/functions_s.html @@ -0,0 +1,260 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- s -

+
+ + + + diff --git a/docs/linux/html/functions_t.html b/docs/linux/html/functions_t.html new file mode 100644 index 0000000..dfb60c6 --- /dev/null +++ b/docs/linux/html/functions_t.html @@ -0,0 +1,111 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- t -

+
+ + + + diff --git a/docs/linux/html/functions_u.html b/docs/linux/html/functions_u.html new file mode 100644 index 0000000..84d9139 --- /dev/null +++ b/docs/linux/html/functions_u.html @@ -0,0 +1,103 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- u -

+
+ + + + diff --git a/docs/linux/html/functions_v.html b/docs/linux/html/functions_v.html new file mode 100644 index 0000000..39a9d5b --- /dev/null +++ b/docs/linux/html/functions_v.html @@ -0,0 +1,85 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- v -

+
+ + + + diff --git a/docs/linux/html/functions_vars.html b/docs/linux/html/functions_vars.html new file mode 100644 index 0000000..32569b8 --- /dev/null +++ b/docs/linux/html/functions_vars.html @@ -0,0 +1,203 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+
+ + + + diff --git a/docs/linux/html/functions_vars_a.html b/docs/linux/html/functions_vars_a.html new file mode 100644 index 0000000..da475c7 --- /dev/null +++ b/docs/linux/html/functions_vars_a.html @@ -0,0 +1,127 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/docs/linux/html/functions_vars_b.html b/docs/linux/html/functions_vars_b.html new file mode 100644 index 0000000..0ca1569 --- /dev/null +++ b/docs/linux/html/functions_vars_b.html @@ -0,0 +1,87 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/docs/linux/html/functions_vars_c.html b/docs/linux/html/functions_vars_c.html new file mode 100644 index 0000000..e7ed013 --- /dev/null +++ b/docs/linux/html/functions_vars_c.html @@ -0,0 +1,151 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/docs/linux/html/functions_vars_d.html b/docs/linux/html/functions_vars_d.html new file mode 100644 index 0000000..8ebaf4c --- /dev/null +++ b/docs/linux/html/functions_vars_d.html @@ -0,0 +1,147 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/docs/linux/html/functions_vars_e.html b/docs/linux/html/functions_vars_e.html new file mode 100644 index 0000000..9fff465 --- /dev/null +++ b/docs/linux/html/functions_vars_e.html @@ -0,0 +1,129 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/docs/linux/html/functions_vars_f.html b/docs/linux/html/functions_vars_f.html new file mode 100644 index 0000000..6eaf8a3 --- /dev/null +++ b/docs/linux/html/functions_vars_f.html @@ -0,0 +1,224 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/docs/linux/html/functions_vars_g.html b/docs/linux/html/functions_vars_g.html new file mode 100644 index 0000000..1da6e7a --- /dev/null +++ b/docs/linux/html/functions_vars_g.html @@ -0,0 +1,107 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/docs/linux/html/functions_vars_h.html b/docs/linux/html/functions_vars_h.html new file mode 100644 index 0000000..a8a71f4 --- /dev/null +++ b/docs/linux/html/functions_vars_h.html @@ -0,0 +1,148 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/docs/linux/html/functions_vars_i.html b/docs/linux/html/functions_vars_i.html new file mode 100644 index 0000000..10859a1 --- /dev/null +++ b/docs/linux/html/functions_vars_i.html @@ -0,0 +1,143 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/docs/linux/html/functions_vars_k.html b/docs/linux/html/functions_vars_k.html new file mode 100644 index 0000000..1f8bbf5 --- /dev/null +++ b/docs/linux/html/functions_vars_k.html @@ -0,0 +1,174 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+ + + + diff --git a/docs/linux/html/functions_vars_l.html b/docs/linux/html/functions_vars_l.html new file mode 100644 index 0000000..6aec22e --- /dev/null +++ b/docs/linux/html/functions_vars_l.html @@ -0,0 +1,122 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/docs/linux/html/functions_vars_m.html b/docs/linux/html/functions_vars_m.html new file mode 100644 index 0000000..110e627 --- /dev/null +++ b/docs/linux/html/functions_vars_m.html @@ -0,0 +1,132 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/docs/linux/html/functions_vars_n.html b/docs/linux/html/functions_vars_n.html new file mode 100644 index 0000000..7344c7d --- /dev/null +++ b/docs/linux/html/functions_vars_n.html @@ -0,0 +1,306 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/docs/linux/html/functions_vars_o.html b/docs/linux/html/functions_vars_o.html new file mode 100644 index 0000000..1710467 --- /dev/null +++ b/docs/linux/html/functions_vars_o.html @@ -0,0 +1,106 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/docs/linux/html/functions_vars_p.html b/docs/linux/html/functions_vars_p.html new file mode 100644 index 0000000..ffe27e3 --- /dev/null +++ b/docs/linux/html/functions_vars_p.html @@ -0,0 +1,143 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/docs/linux/html/functions_vars_q.html b/docs/linux/html/functions_vars_q.html new file mode 100644 index 0000000..bb05f40 --- /dev/null +++ b/docs/linux/html/functions_vars_q.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/docs/linux/html/functions_vars_r.html b/docs/linux/html/functions_vars_r.html new file mode 100644 index 0000000..b2b0827 --- /dev/null +++ b/docs/linux/html/functions_vars_r.html @@ -0,0 +1,120 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/docs/linux/html/functions_vars_s.html b/docs/linux/html/functions_vars_s.html new file mode 100644 index 0000000..b6034f3 --- /dev/null +++ b/docs/linux/html/functions_vars_s.html @@ -0,0 +1,223 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/docs/linux/html/functions_vars_t.html b/docs/linux/html/functions_vars_t.html new file mode 100644 index 0000000..2b2288a --- /dev/null +++ b/docs/linux/html/functions_vars_t.html @@ -0,0 +1,107 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/docs/linux/html/functions_vars_u.html b/docs/linux/html/functions_vars_u.html new file mode 100644 index 0000000..352bcf4 --- /dev/null +++ b/docs/linux/html/functions_vars_u.html @@ -0,0 +1,103 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/docs/linux/html/functions_vars_v.html b/docs/linux/html/functions_vars_v.html new file mode 100644 index 0000000..240c349 --- /dev/null +++ b/docs/linux/html/functions_vars_v.html @@ -0,0 +1,85 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/docs/linux/html/functions_vars_w.html b/docs/linux/html/functions_vars_w.html new file mode 100644 index 0000000..14683d6 --- /dev/null +++ b/docs/linux/html/functions_vars_w.html @@ -0,0 +1,94 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/docs/linux/html/functions_vars_x.html b/docs/linux/html/functions_vars_x.html new file mode 100644 index 0000000..2829138 --- /dev/null +++ b/docs/linux/html/functions_vars_x.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- x -

+
+ + + + diff --git a/docs/linux/html/functions_w.html b/docs/linux/html/functions_w.html new file mode 100644 index 0000000..90915fc --- /dev/null +++ b/docs/linux/html/functions_w.html @@ -0,0 +1,97 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- w -

+
+ + + + diff --git a/docs/linux/html/functions_x.html b/docs/linux/html/functions_x.html new file mode 100644 index 0000000..0365715 --- /dev/null +++ b/docs/linux/html/functions_x.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Data Fields + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- x -

+
+ + + + diff --git a/docs/linux/html/globals.html b/docs/linux/html/globals.html new file mode 100644 index 0000000..5c89af1 --- /dev/null +++ b/docs/linux/html/globals.html @@ -0,0 +1,90 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- _ -

+
+ + + + diff --git a/docs/linux/html/globals_a.html b/docs/linux/html/globals_a.html new file mode 100644 index 0000000..8a82c36 --- /dev/null +++ b/docs/linux/html/globals_a.html @@ -0,0 +1,156 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- a -

+
+ + + + diff --git a/docs/linux/html/globals_b.html b/docs/linux/html/globals_b.html new file mode 100644 index 0000000..1f49190 --- /dev/null +++ b/docs/linux/html/globals_b.html @@ -0,0 +1,90 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- b -

+
+ + + + diff --git a/docs/linux/html/globals_c.html b/docs/linux/html/globals_c.html new file mode 100644 index 0000000..9a5794c --- /dev/null +++ b/docs/linux/html/globals_c.html @@ -0,0 +1,292 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- c -

+
+ + + + diff --git a/docs/linux/html/globals_d.html b/docs/linux/html/globals_d.html new file mode 100644 index 0000000..80a5438 --- /dev/null +++ b/docs/linux/html/globals_d.html @@ -0,0 +1,289 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- d -

+
+ + + + diff --git a/docs/linux/html/globals_defs.html b/docs/linux/html/globals_defs.html new file mode 100644 index 0000000..e181025 --- /dev/null +++ b/docs/linux/html/globals_defs.html @@ -0,0 +1,465 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+
+ + + + diff --git a/docs/linux/html/globals_e.html b/docs/linux/html/globals_e.html new file mode 100644 index 0000000..ce4678c --- /dev/null +++ b/docs/linux/html/globals_e.html @@ -0,0 +1,102 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- e -

+
+ + + + diff --git a/docs/linux/html/globals_enum.html b/docs/linux/html/globals_enum.html new file mode 100644 index 0000000..0c22776 --- /dev/null +++ b/docs/linux/html/globals_enum.html @@ -0,0 +1,97 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/linux/html/globals_eval.html b/docs/linux/html/globals_eval.html new file mode 100644 index 0000000..fa4e707 --- /dev/null +++ b/docs/linux/html/globals_eval.html @@ -0,0 +1,300 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- l -

+ + +

- m -

+ + +

- s -

+ + +

- w -

+
+ + + + diff --git a/docs/linux/html/globals_f.html b/docs/linux/html/globals_f.html new file mode 100644 index 0000000..49fa4c9 --- /dev/null +++ b/docs/linux/html/globals_f.html @@ -0,0 +1,293 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- f -

+
+ + + + diff --git a/docs/linux/html/globals_func.html b/docs/linux/html/globals_func.html new file mode 100644 index 0000000..23a1032 --- /dev/null +++ b/docs/linux/html/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/docs/linux/html/globals_func_b.html b/docs/linux/html/globals_func_b.html new file mode 100644 index 0000000..b365d11 --- /dev/null +++ b/docs/linux/html/globals_func_b.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/docs/linux/html/globals_func_c.html b/docs/linux/html/globals_func_c.html new file mode 100644 index 0000000..9cf2237 --- /dev/null +++ b/docs/linux/html/globals_func_c.html @@ -0,0 +1,225 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/docs/linux/html/globals_func_d.html b/docs/linux/html/globals_func_d.html new file mode 100644 index 0000000..4eb5134 --- /dev/null +++ b/docs/linux/html/globals_func_d.html @@ -0,0 +1,139 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/docs/linux/html/globals_func_e.html b/docs/linux/html/globals_func_e.html new file mode 100644 index 0000000..9533c05 --- /dev/null +++ b/docs/linux/html/globals_func_e.html @@ -0,0 +1,91 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/docs/linux/html/globals_func_f.html b/docs/linux/html/globals_func_f.html new file mode 100644 index 0000000..d80927f --- /dev/null +++ b/docs/linux/html/globals_func_f.html @@ -0,0 +1,182 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/docs/linux/html/globals_func_g.html b/docs/linux/html/globals_func_g.html new file mode 100644 index 0000000..5acf67f --- /dev/null +++ b/docs/linux/html/globals_func_g.html @@ -0,0 +1,142 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/docs/linux/html/globals_func_h.html b/docs/linux/html/globals_func_h.html new file mode 100644 index 0000000..d7169b8 --- /dev/null +++ b/docs/linux/html/globals_func_h.html @@ -0,0 +1,124 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/docs/linux/html/globals_func_i.html b/docs/linux/html/globals_func_i.html new file mode 100644 index 0000000..cf4aa22 --- /dev/null +++ b/docs/linux/html/globals_func_i.html @@ -0,0 +1,177 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/docs/linux/html/globals_func_j.html b/docs/linux/html/globals_func_j.html new file mode 100644 index 0000000..5d1da3c --- /dev/null +++ b/docs/linux/html/globals_func_j.html @@ -0,0 +1,99 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+ + + + diff --git a/docs/linux/html/globals_func_l.html b/docs/linux/html/globals_func_l.html new file mode 100644 index 0000000..6306cc2 --- /dev/null +++ b/docs/linux/html/globals_func_l.html @@ -0,0 +1,100 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/docs/linux/html/globals_func_m.html b/docs/linux/html/globals_func_m.html new file mode 100644 index 0000000..57c9f8b --- /dev/null +++ b/docs/linux/html/globals_func_m.html @@ -0,0 +1,87 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/docs/linux/html/globals_func_n.html b/docs/linux/html/globals_func_n.html new file mode 100644 index 0000000..2224a7e --- /dev/null +++ b/docs/linux/html/globals_func_n.html @@ -0,0 +1,115 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/docs/linux/html/globals_func_o.html b/docs/linux/html/globals_func_o.html new file mode 100644 index 0000000..a10ce30 --- /dev/null +++ b/docs/linux/html/globals_func_o.html @@ -0,0 +1,354 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/docs/linux/html/globals_func_p.html b/docs/linux/html/globals_func_p.html new file mode 100644 index 0000000..ff6b41a --- /dev/null +++ b/docs/linux/html/globals_func_p.html @@ -0,0 +1,201 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/docs/linux/html/globals_func_q.html b/docs/linux/html/globals_func_q.html new file mode 100644 index 0000000..f810799 --- /dev/null +++ b/docs/linux/html/globals_func_q.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/docs/linux/html/globals_func_r.html b/docs/linux/html/globals_func_r.html new file mode 100644 index 0000000..1c3f2db --- /dev/null +++ b/docs/linux/html/globals_func_r.html @@ -0,0 +1,120 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/docs/linux/html/globals_func_s.html b/docs/linux/html/globals_func_s.html new file mode 100644 index 0000000..85724a4 --- /dev/null +++ b/docs/linux/html/globals_func_s.html @@ -0,0 +1,296 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/docs/linux/html/globals_func_t.html b/docs/linux/html/globals_func_t.html new file mode 100644 index 0000000..002629e --- /dev/null +++ b/docs/linux/html/globals_func_t.html @@ -0,0 +1,104 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/docs/linux/html/globals_func_u.html b/docs/linux/html/globals_func_u.html new file mode 100644 index 0000000..2f51c1e --- /dev/null +++ b/docs/linux/html/globals_func_u.html @@ -0,0 +1,96 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/docs/linux/html/globals_func_v.html b/docs/linux/html/globals_func_v.html new file mode 100644 index 0000000..a113a5b --- /dev/null +++ b/docs/linux/html/globals_func_v.html @@ -0,0 +1,87 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/docs/linux/html/globals_func_w.html b/docs/linux/html/globals_func_w.html new file mode 100644 index 0000000..3ea144c --- /dev/null +++ b/docs/linux/html/globals_func_w.html @@ -0,0 +1,135 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/docs/linux/html/globals_func_x.html b/docs/linux/html/globals_func_x.html new file mode 100644 index 0000000..7833968 --- /dev/null +++ b/docs/linux/html/globals_func_x.html @@ -0,0 +1,93 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- x -

+
+ + + + diff --git a/docs/linux/html/globals_g.html b/docs/linux/html/globals_g.html new file mode 100644 index 0000000..9732c5d --- /dev/null +++ b/docs/linux/html/globals_g.html @@ -0,0 +1,172 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- g -

+
+ + + + diff --git a/docs/linux/html/globals_h.html b/docs/linux/html/globals_h.html new file mode 100644 index 0000000..3f50cc9 --- /dev/null +++ b/docs/linux/html/globals_h.html @@ -0,0 +1,182 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- h -

+
+ + + + diff --git a/docs/linux/html/globals_i.html b/docs/linux/html/globals_i.html new file mode 100644 index 0000000..fe1dc95 --- /dev/null +++ b/docs/linux/html/globals_i.html @@ -0,0 +1,242 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- i -

+
+ + + + diff --git a/docs/linux/html/globals_j.html b/docs/linux/html/globals_j.html new file mode 100644 index 0000000..b4a9fdc --- /dev/null +++ b/docs/linux/html/globals_j.html @@ -0,0 +1,111 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- j -

+
+ + + + diff --git a/docs/linux/html/globals_k.html b/docs/linux/html/globals_k.html new file mode 100644 index 0000000..8042571 --- /dev/null +++ b/docs/linux/html/globals_k.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- k -

+
+ + + + diff --git a/docs/linux/html/globals_l.html b/docs/linux/html/globals_l.html new file mode 100644 index 0000000..44174db --- /dev/null +++ b/docs/linux/html/globals_l.html @@ -0,0 +1,123 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- l -

+
+ + + + diff --git a/docs/linux/html/globals_m.html b/docs/linux/html/globals_m.html new file mode 100644 index 0000000..9bd6ae8 --- /dev/null +++ b/docs/linux/html/globals_m.html @@ -0,0 +1,127 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- m -

+
+ + + + diff --git a/docs/linux/html/globals_n.html b/docs/linux/html/globals_n.html new file mode 100644 index 0000000..536ae81 --- /dev/null +++ b/docs/linux/html/globals_n.html @@ -0,0 +1,163 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- n -

+
+ + + + diff --git a/docs/linux/html/globals_o.html b/docs/linux/html/globals_o.html new file mode 100644 index 0000000..bf356db --- /dev/null +++ b/docs/linux/html/globals_o.html @@ -0,0 +1,588 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- o -

+
+ + + + diff --git a/docs/linux/html/globals_p.html b/docs/linux/html/globals_p.html new file mode 100644 index 0000000..a7a6b6f --- /dev/null +++ b/docs/linux/html/globals_p.html @@ -0,0 +1,289 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- p -

+
+ + + + diff --git a/docs/linux/html/globals_q.html b/docs/linux/html/globals_q.html new file mode 100644 index 0000000..4110158 --- /dev/null +++ b/docs/linux/html/globals_q.html @@ -0,0 +1,88 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- q -

+
+ + + + diff --git a/docs/linux/html/globals_r.html b/docs/linux/html/globals_r.html new file mode 100644 index 0000000..c8fc910 --- /dev/null +++ b/docs/linux/html/globals_r.html @@ -0,0 +1,172 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- r -

+
+ + + + diff --git a/docs/linux/html/globals_s.html b/docs/linux/html/globals_s.html new file mode 100644 index 0000000..31eccb4 --- /dev/null +++ b/docs/linux/html/globals_s.html @@ -0,0 +1,610 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- s -

+
+ + + + diff --git a/docs/linux/html/globals_t.html b/docs/linux/html/globals_t.html new file mode 100644 index 0000000..0a113aa --- /dev/null +++ b/docs/linux/html/globals_t.html @@ -0,0 +1,107 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- t -

+
+ + + + diff --git a/docs/linux/html/globals_type.html b/docs/linux/html/globals_type.html new file mode 100644 index 0000000..ec8e477 --- /dev/null +++ b/docs/linux/html/globals_type.html @@ -0,0 +1,215 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- w -

+ + +

- x -

+
+ + + + diff --git a/docs/linux/html/globals_u.html b/docs/linux/html/globals_u.html new file mode 100644 index 0000000..d41fcf2 --- /dev/null +++ b/docs/linux/html/globals_u.html @@ -0,0 +1,117 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- u -

+
+ + + + diff --git a/docs/linux/html/globals_v.html b/docs/linux/html/globals_v.html new file mode 100644 index 0000000..2b532db --- /dev/null +++ b/docs/linux/html/globals_v.html @@ -0,0 +1,123 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- v -

+
+ + + + diff --git a/docs/linux/html/globals_vars.html b/docs/linux/html/globals_vars.html new file mode 100644 index 0000000..a9e616f --- /dev/null +++ b/docs/linux/html/globals_vars.html @@ -0,0 +1,90 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+
+ + + + diff --git a/docs/linux/html/globals_vars_a.html b/docs/linux/html/globals_vars_a.html new file mode 100644 index 0000000..0b2969b --- /dev/null +++ b/docs/linux/html/globals_vars_a.html @@ -0,0 +1,104 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/docs/linux/html/globals_vars_b.html b/docs/linux/html/globals_vars_b.html new file mode 100644 index 0000000..fb41773 --- /dev/null +++ b/docs/linux/html/globals_vars_b.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/docs/linux/html/globals_vars_c.html b/docs/linux/html/globals_vars_c.html new file mode 100644 index 0000000..1b84489 --- /dev/null +++ b/docs/linux/html/globals_vars_c.html @@ -0,0 +1,130 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/docs/linux/html/globals_vars_d.html b/docs/linux/html/globals_vars_d.html new file mode 100644 index 0000000..b340029 --- /dev/null +++ b/docs/linux/html/globals_vars_d.html @@ -0,0 +1,213 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/docs/linux/html/globals_vars_e.html b/docs/linux/html/globals_vars_e.html new file mode 100644 index 0000000..0f0caec --- /dev/null +++ b/docs/linux/html/globals_vars_e.html @@ -0,0 +1,86 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/docs/linux/html/globals_vars_f.html b/docs/linux/html/globals_vars_f.html new file mode 100644 index 0000000..f2f3bd8 --- /dev/null +++ b/docs/linux/html/globals_vars_f.html @@ -0,0 +1,159 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/docs/linux/html/globals_vars_g.html b/docs/linux/html/globals_vars_g.html new file mode 100644 index 0000000..d542252 --- /dev/null +++ b/docs/linux/html/globals_vars_g.html @@ -0,0 +1,88 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/docs/linux/html/globals_vars_h.html b/docs/linux/html/globals_vars_h.html new file mode 100644 index 0000000..cb7fbcf --- /dev/null +++ b/docs/linux/html/globals_vars_h.html @@ -0,0 +1,112 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/docs/linux/html/globals_vars_i.html b/docs/linux/html/globals_vars_i.html new file mode 100644 index 0000000..f592b8b --- /dev/null +++ b/docs/linux/html/globals_vars_i.html @@ -0,0 +1,126 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/docs/linux/html/globals_vars_j.html b/docs/linux/html/globals_vars_j.html new file mode 100644 index 0000000..fb38e9c --- /dev/null +++ b/docs/linux/html/globals_vars_j.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+ + + + diff --git a/docs/linux/html/globals_vars_k.html b/docs/linux/html/globals_vars_k.html new file mode 100644 index 0000000..2c51c21 --- /dev/null +++ b/docs/linux/html/globals_vars_k.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+ + + + diff --git a/docs/linux/html/globals_vars_l.html b/docs/linux/html/globals_vars_l.html new file mode 100644 index 0000000..db95893 --- /dev/null +++ b/docs/linux/html/globals_vars_l.html @@ -0,0 +1,95 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/docs/linux/html/globals_vars_m.html b/docs/linux/html/globals_vars_m.html new file mode 100644 index 0000000..e8fb0a2 --- /dev/null +++ b/docs/linux/html/globals_vars_m.html @@ -0,0 +1,97 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/docs/linux/html/globals_vars_n.html b/docs/linux/html/globals_vars_n.html new file mode 100644 index 0000000..bd99da5 --- /dev/null +++ b/docs/linux/html/globals_vars_n.html @@ -0,0 +1,126 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/docs/linux/html/globals_vars_o.html b/docs/linux/html/globals_vars_o.html new file mode 100644 index 0000000..959217c --- /dev/null +++ b/docs/linux/html/globals_vars_o.html @@ -0,0 +1,221 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/docs/linux/html/globals_vars_p.html b/docs/linux/html/globals_vars_p.html new file mode 100644 index 0000000..b791864 --- /dev/null +++ b/docs/linux/html/globals_vars_p.html @@ -0,0 +1,103 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/docs/linux/html/globals_vars_q.html b/docs/linux/html/globals_vars_q.html new file mode 100644 index 0000000..e320bcf --- /dev/null +++ b/docs/linux/html/globals_vars_q.html @@ -0,0 +1,85 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/docs/linux/html/globals_vars_r.html b/docs/linux/html/globals_vars_r.html new file mode 100644 index 0000000..0001957 --- /dev/null +++ b/docs/linux/html/globals_vars_r.html @@ -0,0 +1,119 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/docs/linux/html/globals_vars_s.html b/docs/linux/html/globals_vars_s.html new file mode 100644 index 0000000..26c8ce7 --- /dev/null +++ b/docs/linux/html/globals_vars_s.html @@ -0,0 +1,156 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/docs/linux/html/globals_vars_t.html b/docs/linux/html/globals_vars_t.html new file mode 100644 index 0000000..4922468 --- /dev/null +++ b/docs/linux/html/globals_vars_t.html @@ -0,0 +1,81 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/docs/linux/html/globals_vars_u.html b/docs/linux/html/globals_vars_u.html new file mode 100644 index 0000000..d38fcd5 --- /dev/null +++ b/docs/linux/html/globals_vars_u.html @@ -0,0 +1,99 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/docs/linux/html/globals_vars_v.html b/docs/linux/html/globals_vars_v.html new file mode 100644 index 0000000..563db98 --- /dev/null +++ b/docs/linux/html/globals_vars_v.html @@ -0,0 +1,96 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/docs/linux/html/globals_vars_w.html b/docs/linux/html/globals_vars_w.html new file mode 100644 index 0000000..f8a708b --- /dev/null +++ b/docs/linux/html/globals_vars_w.html @@ -0,0 +1,90 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/docs/linux/html/globals_vars_x.html b/docs/linux/html/globals_vars_x.html new file mode 100644 index 0000000..987475c --- /dev/null +++ b/docs/linux/html/globals_vars_x.html @@ -0,0 +1,84 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- x -

+
+ + + + diff --git a/docs/linux/html/globals_w.html b/docs/linux/html/globals_w.html new file mode 100644 index 0000000..cd47835 --- /dev/null +++ b/docs/linux/html/globals_w.html @@ -0,0 +1,174 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- w -

+
+ + + + diff --git a/docs/linux/html/globals_x.html b/docs/linux/html/globals_x.html new file mode 100644 index 0000000..366f8b8 --- /dev/null +++ b/docs/linux/html/globals_x.html @@ -0,0 +1,105 @@ + + + + + + + +FFmpegKit Linux API: Globals + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- x -

+
+ + + + diff --git a/docs/linux/html/hierarchy.html b/docs/linux/html/hierarchy.html new file mode 100644 index 0000000..10cc36e --- /dev/null +++ b/docs/linux/html/hierarchy.html @@ -0,0 +1,135 @@ + + + + + + + +FFmpegKit Linux API: Class Hierarchy + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
+ + + + diff --git a/docs/linux/html/index.html b/docs/linux/html/index.html new file mode 100644 index 0000000..2de8941 --- /dev/null +++ b/docs/linux/html/index.html @@ -0,0 +1,78 @@ + + + + + + + +FFmpegKit Linux API: Main Page + + + + + + + + + +
+
+ + + + + + + +
+
FFmpegKit Linux API +  4.5.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
FFmpegKit Linux API Documentation
+
+
+
+ + + + diff --git a/docs/linux/html/jquery.js b/docs/linux/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/docs/linux/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/linux/html/menu.js b/docs/linux/html/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/docs/linux/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/linux/html/menudata.js b/docs/linux/html/menudata.js new file mode 100644 index 0000000..5258557 --- /dev/null +++ b/docs/linux/html/menudata.js @@ -0,0 +1,227 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +This program 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 General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"s",url:"namespacemembers.html#index_s"}]}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}, +{text:"Enumerator",url:"namespacemembers_eval.html"}]}]}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions_a.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"w",url:"functions_func_w.html#index_w"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__5F"}, +{text:"a",url:"functions_vars_a.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"f",url:"functions_vars_f.html#index_f"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"k",url:"functions_vars_k.html#index_k"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"q",url:"functions_vars_q.html#index_q"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}, +{text:"x",url:"functions_vars_x.html#index_x"}]}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__5F"}, +{text:"a",url:"globals_a.html#index_a"}, +{text:"b",url:"globals_b.html#index_b"}, +{text:"c",url:"globals_c.html#index_c"}, +{text:"d",url:"globals_d.html#index_d"}, +{text:"e",url:"globals_e.html#index_e"}, +{text:"f",url:"globals_f.html#index_f"}, +{text:"g",url:"globals_g.html#index_g"}, +{text:"h",url:"globals_h.html#index_h"}, +{text:"i",url:"globals_i.html#index_i"}, +{text:"j",url:"globals_j.html#index_j"}, +{text:"k",url:"globals_k.html#index_k"}, +{text:"l",url:"globals_l.html#index_l"}, +{text:"m",url:"globals_m.html#index_m"}, +{text:"n",url:"globals_n.html#index_n"}, +{text:"o",url:"globals_o.html#index_o"}, +{text:"p",url:"globals_p.html#index_p"}, +{text:"q",url:"globals_q.html#index_q"}, +{text:"r",url:"globals_r.html#index_r"}, +{text:"s",url:"globals_s.html#index_s"}, +{text:"t",url:"globals_t.html#index_t"}, +{text:"u",url:"globals_u.html#index_u"}, +{text:"v",url:"globals_v.html#index_v"}, +{text:"w",url:"globals_w.html#index_w"}, +{text:"x",url:"globals_x.html#index_x"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"a",url:"globals_func.html#index_a"}, +{text:"b",url:"globals_func_b.html#index_b"}, +{text:"c",url:"globals_func_c.html#index_c"}, +{text:"d",url:"globals_func_d.html#index_d"}, +{text:"e",url:"globals_func_e.html#index_e"}, +{text:"f",url:"globals_func_f.html#index_f"}, +{text:"g",url:"globals_func_g.html#index_g"}, +{text:"h",url:"globals_func_h.html#index_h"}, +{text:"i",url:"globals_func_i.html#index_i"}, +{text:"j",url:"globals_func_j.html#index_j"}, +{text:"l",url:"globals_func_l.html#index_l"}, +{text:"m",url:"globals_func_m.html#index_m"}, +{text:"n",url:"globals_func_n.html#index_n"}, +{text:"o",url:"globals_func_o.html#index_o"}, +{text:"p",url:"globals_func_p.html#index_p"}, +{text:"q",url:"globals_func_q.html#index_q"}, +{text:"r",url:"globals_func_r.html#index_r"}, +{text:"s",url:"globals_func_s.html#index_s"}, +{text:"t",url:"globals_func_t.html#index_t"}, +{text:"u",url:"globals_func_u.html#index_u"}, +{text:"v",url:"globals_func_v.html#index_v"}, +{text:"w",url:"globals_func_w.html#index_w"}, +{text:"x",url:"globals_func_x.html#index_x"}]}, +{text:"Variables",url:"globals_vars.html",children:[ +{text:"_",url:"globals_vars.html#index__5F"}, +{text:"a",url:"globals_vars_a.html#index_a"}, +{text:"b",url:"globals_vars_b.html#index_b"}, +{text:"c",url:"globals_vars_c.html#index_c"}, +{text:"d",url:"globals_vars_d.html#index_d"}, +{text:"e",url:"globals_vars_e.html#index_e"}, +{text:"f",url:"globals_vars_f.html#index_f"}, +{text:"g",url:"globals_vars_g.html#index_g"}, +{text:"h",url:"globals_vars_h.html#index_h"}, +{text:"i",url:"globals_vars_i.html#index_i"}, +{text:"j",url:"globals_vars_j.html#index_j"}, +{text:"k",url:"globals_vars_k.html#index_k"}, +{text:"l",url:"globals_vars_l.html#index_l"}, +{text:"m",url:"globals_vars_m.html#index_m"}, +{text:"n",url:"globals_vars_n.html#index_n"}, +{text:"o",url:"globals_vars_o.html#index_o"}, +{text:"p",url:"globals_vars_p.html#index_p"}, +{text:"q",url:"globals_vars_q.html#index_q"}, +{text:"r",url:"globals_vars_r.html#index_r"}, +{text:"s",url:"globals_vars_s.html#index_s"}, +{text:"t",url:"globals_vars_t.html#index_t"}, +{text:"u",url:"globals_vars_u.html#index_u"}, +{text:"v",url:"globals_vars_v.html#index_v"}, +{text:"w",url:"globals_vars_w.html#index_w"}, +{text:"x",url:"globals_vars_x.html#index_x"}]}, +{text:"Typedefs",url:"globals_type.html",children:[ +{text:"b",url:"globals_type.html#index_b"}, +{text:"c",url:"globals_type.html#index_c"}, +{text:"d",url:"globals_type.html#index_d"}, +{text:"f",url:"globals_type.html#index_f"}, +{text:"h",url:"globals_type.html#index_h"}, +{text:"i",url:"globals_type.html#index_i"}, +{text:"j",url:"globals_type.html#index_j"}, +{text:"l",url:"globals_type.html#index_l"}, +{text:"o",url:"globals_type.html#index_o"}, +{text:"r",url:"globals_type.html#index_r"}, +{text:"s",url:"globals_type.html#index_s"}, +{text:"w",url:"globals_type.html#index_w"}, +{text:"x",url:"globals_type.html#index_x"}]}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"e",url:"globals_eval.html#index_e"}, +{text:"f",url:"globals_eval.html#index_f"}, +{text:"h",url:"globals_eval.html#index_h"}, +{text:"l",url:"globals_eval.html#index_l"}, +{text:"m",url:"globals_eval.html#index_m"}, +{text:"s",url:"globals_eval.html#index_s"}, +{text:"w",url:"globals_eval.html#index_w"}]}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"a",url:"globals_defs.html#index_a"}, +{text:"c",url:"globals_defs.html#index_c"}, +{text:"d",url:"globals_defs.html#index_d"}, +{text:"f",url:"globals_defs.html#index_f"}, +{text:"g",url:"globals_defs.html#index_g"}, +{text:"h",url:"globals_defs.html#index_h"}, +{text:"i",url:"globals_defs.html#index_i"}, +{text:"j",url:"globals_defs.html#index_j"}, +{text:"m",url:"globals_defs.html#index_m"}, +{text:"o",url:"globals_defs.html#index_o"}, +{text:"p",url:"globals_defs.html#index_p"}, +{text:"r",url:"globals_defs.html#index_r"}, +{text:"s",url:"globals_defs.html#index_s"}, +{text:"v",url:"globals_defs.html#index_v"}, +{text:"w",url:"globals_defs.html#index_w"}, +{text:"x",url:"globals_defs.html#index_x"}]}]}]}]} diff --git a/docs/linux/html/namespacemembers.html b/docs/linux/html/namespacemembers.html new file mode 100644 index 0000000..3274a51 --- /dev/null +++ b/docs/linux/html/namespacemembers.html @@ -0,0 +1,196 @@ + + + + + + + +FFmpegKit Linux API: Namespace Members + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - f -

      +
    • FFmpegSessionCompleteCallback +: ffmpegkit +
    • +
    • FFprobeSessionCompleteCallback +: ffmpegkit +
    • +
    + + +

    - l -

    + + +

    - m -

      +
    • MediaInformationSessionCompleteCallback +: ffmpegkit +
    • +
    + + +

    - o -

    + + +

    - s -

    +
    + + + + diff --git a/docs/linux/html/namespacemembers_enum.html b/docs/linux/html/namespacemembers_enum.html new file mode 100644 index 0000000..2e1aefc --- /dev/null +++ b/docs/linux/html/namespacemembers_enum.html @@ -0,0 +1,88 @@ + + + + + + + +FFmpegKit Linux API: Namespace Members + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/docs/linux/html/namespacemembers_eval.html b/docs/linux/html/namespacemembers_eval.html new file mode 100644 index 0000000..910fbdb --- /dev/null +++ b/docs/linux/html/namespacemembers_eval.html @@ -0,0 +1,148 @@ + + + + + + + +FFmpegKit Linux API: Namespace Members + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/docs/linux/html/namespacemembers_func.html b/docs/linux/html/namespacemembers_func.html new file mode 100644 index 0000000..647ea15 --- /dev/null +++ b/docs/linux/html/namespacemembers_func.html @@ -0,0 +1,79 @@ + + + + + + + +FFmpegKit Linux API: Namespace Members + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/docs/linux/html/namespacemembers_type.html b/docs/linux/html/namespacemembers_type.html new file mode 100644 index 0000000..a332ecb --- /dev/null +++ b/docs/linux/html/namespacemembers_type.html @@ -0,0 +1,91 @@ + + + + + + + +FFmpegKit Linux API: Namespace Members + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/docs/linux/html/namespaces.html b/docs/linux/html/namespaces.html new file mode 100644 index 0000000..3405c6b --- /dev/null +++ b/docs/linux/html/namespaces.html @@ -0,0 +1,83 @@ + + + + + + + +FFmpegKit Linux API: Namespace List + + + + + + + + + +
    +
    + + + + + + + +
    +
    FFmpegKit Linux API +  4.5.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    + + +
     Nffmpegkit
    +
    +
    + + + + diff --git a/docs/linux/html/nav_f.png b/docs/linux/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/docs/linux/html/nav_f.png differ diff --git a/docs/linux/html/nav_g.png b/docs/linux/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/docs/linux/html/nav_g.png differ diff --git a/docs/linux/html/nav_h.png b/docs/linux/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/docs/linux/html/nav_h.png differ diff --git a/docs/linux/html/open.png b/docs/linux/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/docs/linux/html/open.png differ diff --git a/docs/linux/html/search/all_0.html b/docs/linux/html/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/docs/linux/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_0.js b/docs/linux/html/search/all_0.js new file mode 100644 index 0000000..e8a2e46 --- /dev/null +++ b/docs/linux/html/search/all_0.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['_5farchdetectinitializer_0',['_archDetectInitializer',['../d7/dc8/_arch_detect_8cpp.html#a89a7cd1471560a637aad0e2ba7284b82',1,'ArchDetect.cpp']]], + ['_5farguments_1',['_arguments',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4aed000dcbf01e62625264085dd95b63',1,'ffmpegkit::AbstractSession']]], + ['_5fbitrate_2',['_bitrate',['../d0/de7/classffmpegkit_1_1_statistics.html#a0b0c1d052ae2cfb5d3faa34176a74622',1,'ffmpegkit::Statistics']]], + ['_5fchapters_3',['_chapters',['../df/d06/classffmpegkit_1_1_media_information.html#af3ba067f1934efc4c75b4a0954214b22',1,'ffmpegkit::MediaInformation']]], + ['_5fchaptervalue_4',['_chapterValue',['../d9/d9f/classffmpegkit_1_1_chapter.html#ab0d2c01a4744004945366b71fd9b1699',1,'ffmpegkit::Chapter']]], + ['_5fcompletecallback_5',['_completeCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a2c348d427271175dda1cda6b21661215',1,'ffmpegkit::FFmpegSession::_completeCallback()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#ab84b1cf34ad729a840ebddae63277c25',1,'ffmpegkit::FFprobeSession::_completeCallback()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a2bd1acba0891ff9ccc965ee24902d86d',1,'ffmpegkit::MediaInformationSession::_completeCallback()']]], + ['_5fcreatetime_6',['_createTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4c698d2998f119cb602bf4896df80dcc',1,'ffmpegkit::AbstractSession']]], + ['_5fendtime_7',['_endTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4591f4cf16d26d0c624db8e12539caf1',1,'ffmpegkit::AbstractSession']]], + ['_5ffailstacktrace_8',['_failStackTrace',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a0bf669dac5d9c41b1ed6bab171c60d9e',1,'ffmpegkit::AbstractSession']]], + ['_5fffmpegkitconfiginitializer_9',['_ffmpegKitConfigInitializer',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af4d455c0aa581ccf8b38d974c6cff61d',1,'FFmpegKitConfig.cpp']]], + ['_5fffmpegkitinitializeri_10',['_ffmpegKitInitializeri',['../d8/d78/_f_fmpeg_kit_8cpp.html#a89c1ad017f2b75cf35ea3e0f442032a1',1,'FFmpegKit.cpp']]], + ['_5fffprobekitinitializer_11',['_ffprobeKitInitializer',['../d0/dc3/_f_fprobe_kit_8cpp.html#a4917fbf9516dd0e2da421e038792f5f2',1,'FFprobeKit.cpp']]], + ['_5flevel_12',['_level',['../db/d1c/classffmpegkit_1_1_log.html#a63c39ee136f3dfa7527eaafc161f52cc',1,'ffmpegkit::Log']]], + ['_5flogcallback_13',['_logCallback',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aba96e6f428f0bdbc90c847f2d192e13b',1,'ffmpegkit::AbstractSession']]], + ['_5flogdata_14',['_logData',['../d5/d18/class_callback_data.html#a7a86a12c9439a8e600be891fe301fbe5',1,'CallbackData']]], + ['_5floglevel_15',['_logLevel',['../d5/d18/class_callback_data.html#a79558599b866e66e40e04a25395bb79c',1,'CallbackData']]], + ['_5flogredirectionstrategy_16',['_logRedirectionStrategy',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1f38b4df6a03ef81e75c15ffd712fad7',1,'ffmpegkit::AbstractSession']]], + ['_5flogs_17',['_logs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#af90c8c4cf0d3ebef5f855f49ff0d76e2',1,'ffmpegkit::AbstractSession']]], + ['_5fmediainformation_18',['_mediaInformation',['../df/db7/classffmpegkit_1_1_media_information_session.html#a6110474e9292e78307329fbb82df4e34',1,'ffmpegkit::MediaInformationSession']]], + ['_5fmediainformationvalue_19',['_mediaInformationValue',['../df/d06/classffmpegkit_1_1_media_information.html#af072dfce1f4573539d35d69ca514169b',1,'ffmpegkit::MediaInformation']]], + ['_5fmessage_20',['_message',['../db/d1c/classffmpegkit_1_1_log.html#a3da2b7b5d4de743196fba77ca4c91c0e',1,'ffmpegkit::Log']]], + ['_5freturncode_21',['_returnCode',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a55734f7c203f442965d158a8ffcd7fb7',1,'ffmpegkit::AbstractSession']]], + ['_5fsessionid_22',['_sessionId',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1afeac359e1289115c59dbb6e7f4cce0',1,'ffmpegkit::AbstractSession::_sessionId()'],['../d5/d18/class_callback_data.html#a8a47943edf33647e89419ac9112f70aa',1,'CallbackData::_sessionId()'],['../db/d1c/classffmpegkit_1_1_log.html#ace89fec41625e91ef054c501e96c0ffe',1,'ffmpegkit::Log::_sessionId()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a0e501b9c8fc0736661eac8f93ca687d8',1,'ffmpegkit::Statistics::_sessionId()']]], + ['_5fsize_23',['_size',['../d0/de7/classffmpegkit_1_1_statistics.html#a8a64933526c6d744bea69f9a5a615f22',1,'ffmpegkit::Statistics']]], + ['_5fspeed_24',['_speed',['../d0/de7/classffmpegkit_1_1_statistics.html#a27cb348856182bb97737e195c20b0faa',1,'ffmpegkit::Statistics']]], + ['_5fstarttime_25',['_startTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae6b76510cc55681bf9cce4d31ce002cd',1,'ffmpegkit::AbstractSession']]], + ['_5fstate_26',['_state',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a88a0d79327ea759b22d7ec4590124807',1,'ffmpegkit::AbstractSession']]], + ['_5fstatistics_27',['_statistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a5f908728471ffa2b5339a287db95092e',1,'ffmpegkit::FFmpegSession']]], + ['_5fstatisticsbitrate_28',['_statisticsBitrate',['../d5/d18/class_callback_data.html#a3a42926bb5ae5c8ba07d998ef904d105',1,'CallbackData']]], + ['_5fstatisticscallback_29',['_statisticsCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a4f9a86af91583b9b846b2c6695fcd7e5',1,'ffmpegkit::FFmpegSession']]], + ['_5fstatisticsfps_30',['_statisticsFps',['../d5/d18/class_callback_data.html#a798fd8152dc3ddb6122c205f4553dd2b',1,'CallbackData']]], + ['_5fstatisticsframenumber_31',['_statisticsFrameNumber',['../d5/d18/class_callback_data.html#aa0922877b5fbf3eadef11d97aca2aecd',1,'CallbackData']]], + ['_5fstatisticsquality_32',['_statisticsQuality',['../d5/d18/class_callback_data.html#a88071942961cb139f41e722a994db720',1,'CallbackData']]], + ['_5fstatisticssize_33',['_statisticsSize',['../d5/d18/class_callback_data.html#a11359add9d304df4d8ae066f7608f658',1,'CallbackData']]], + ['_5fstatisticsspeed_34',['_statisticsSpeed',['../d5/d18/class_callback_data.html#a3e4c36dfe43915d577bfcb620d5dc723',1,'CallbackData']]], + ['_5fstatisticstime_35',['_statisticsTime',['../d5/d18/class_callback_data.html#a35c7f6411925d4d4c1e312747431d7f7',1,'CallbackData']]], + ['_5fstreaminformationvalue_36',['_streamInformationValue',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af0a185607ed4449a0e55017a24b8c443',1,'ffmpegkit::StreamInformation']]], + ['_5fstreams_37',['_streams',['../df/d06/classffmpegkit_1_1_media_information.html#aef3e3e832107d2ee973e7268ec64fbb2',1,'ffmpegkit::MediaInformation']]], + ['_5ftime_38',['_time',['../d0/de7/classffmpegkit_1_1_statistics.html#a46c10ecf572649a1791f2ef47534966c',1,'ffmpegkit::Statistics']]], + ['_5ftype_39',['_type',['../d5/d18/class_callback_data.html#ad609333b292ef6ddbf6362c98e25cc1b',1,'CallbackData']]], + ['_5fvalue_40',['_value',['../d4/dcf/classffmpegkit_1_1_return_code.html#a9541cba537e303541540469944bc14e9',1,'ffmpegkit::ReturnCode']]], + ['_5fvideofps_41',['_videoFps',['../d0/de7/classffmpegkit_1_1_statistics.html#a08f93fea220159d25fcad6533a19571e',1,'ffmpegkit::Statistics']]], + ['_5fvideoframenumber_42',['_videoFrameNumber',['../d0/de7/classffmpegkit_1_1_statistics.html#ae4fb9aa691c1baecdd815d1dcb864baa',1,'ffmpegkit::Statistics']]], + ['_5fvideoquality_43',['_videoQuality',['../d0/de7/classffmpegkit_1_1_statistics.html#a3ce543b047014effa3b926122e81cf74',1,'ffmpegkit::Statistics']]] +]; diff --git a/docs/linux/html/search/all_1.html b/docs/linux/html/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/docs/linux/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_1.js b/docs/linux/html/search/all_1.js new file mode 100644 index 0000000..a3a7b78 --- /dev/null +++ b/docs/linux/html/search/all_1.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['abort_5fcodec_5fexperimental_44',['abort_codec_experimental',['../d7/d48/fftools__ffmpeg_8c.html#ab6f0439f2e64203b784e3f6250f26866',1,'fftools_ffmpeg.c']]], + ['abort_5fon_5fflag_5fempty_5foutput_45',['ABORT_ON_FLAG_EMPTY_OUTPUT',['../d7/db3/fftools__ffmpeg_8h.html#ab169b16d13871a631c18d844ca70eede',1,'fftools_ffmpeg.h']]], + ['abort_5fon_5fflag_5fempty_5foutput_5fstream_46',['ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM',['../d7/db3/fftools__ffmpeg_8h.html#aef69b65c48b48532da4c9a99eb744a1e',1,'fftools_ffmpeg.h']]], + ['abort_5fon_5fflags_47',['abort_on_flags',['../d7/db3/fftools__ffmpeg_8h.html#a3194c206b4bc6007ec56e8c7cf6596e9',1,'abort_on_flags(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a3194c206b4bc6007ec56e8c7cf6596e9',1,'abort_on_flags(): fftools_ffmpeg_opt.c']]], + ['abstractsession_48',['AbstractSession',['../d2/d41/classffmpegkit_1_1_abstract_session.html',1,'ffmpegkit::AbstractSession'],['../d2/d41/classffmpegkit_1_1_abstract_session.html#a848951dd9229d8271b350fd6d474d970',1,'ffmpegkit::AbstractSession::AbstractSession()']]], + ['abstractsession_2ecpp_49',['AbstractSession.cpp',['../da/dfd/_abstract_session_8cpp.html',1,'']]], + ['abstractsession_2eh_50',['AbstractSession.h',['../d9/d76/_abstract_session_8h.html',1,'']]], + ['accurate_5fseek_51',['accurate_seek',['../df/d77/struct_options_context.html#a58cdaa9e499f724c724822155f886aa2',1,'OptionsContext::accurate_seek()'],['../d8/d99/struct_input_file.html#a0d2afa337cfd75b91096045ed941a494',1,'InputFile::accurate_seek()']]], + ['add_5finput_5fstreams_52',['add_input_streams',['../d7/db3/fftools__ffmpeg_8h.html#acb8764e6b707c0419180699d972e9b70',1,'add_input_streams(OptionsContext *o, AVFormatContext *ic): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#acb8764e6b707c0419180699d972e9b70',1,'add_input_streams(OptionsContext *o, AVFormatContext *ic): fftools_ffmpeg_opt.c']]], + ['add_5fopt_53',['add_opt',['../d7/dcc/fftools__cmdutils_8c.html#a69d117c59ea1d4359816e413ea3717ad',1,'fftools_cmdutils.c']]], + ['addlog_54',['addLog',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2a528caf04c52d6d49b9c04aa11d4cac',1,'ffmpegkit::AbstractSession::addLog()'],['../d5/d0e/classffmpegkit_1_1_session.html#a45b8d00f933834b0315672b82e44d14c',1,'ffmpegkit::Session::addLog()']]], + ['addsessiontosessionhistory_55',['addSessionToSessionHistory',['../da/dfd/_abstract_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../df/d2b/_f_fmpeg_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d9/d8b/_f_fprobe_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d3/d5d/_media_information_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp']]], + ['addstatistics_56',['addStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a27184c9772a338d040ad01fd9589f871',1,'ffmpegkit::FFmpegSession']]], + ['adjust_5fframe_5fpts_5fto_5fencoder_5ftb_57',['adjust_frame_pts_to_encoder_tb',['../d7/d48/fftools__ffmpeg_8c.html#abc5e61273039380ac14ed7b0a3cce725',1,'fftools_ffmpeg.c']]], + ['apad_58',['apad',['../df/d77/struct_options_context.html#aaaa5ad7ac13bf15c516f988c818d6efb',1,'OptionsContext::apad()'],['../db/dde/struct_output_stream.html#a76d4d92835e9dd3d0619e79e4fb762c6',1,'OutputStream::apad()']]], + ['archdetect_59',['ArchDetect',['../d1/df7/classffmpegkit_1_1_arch_detect.html',1,'ffmpegkit']]], + ['archdetect_2ecpp_60',['ArchDetect.cpp',['../d7/dc8/_arch_detect_8cpp.html',1,'']]], + ['archdetect_2eh_61',['ArchDetect.h',['../d6/d8f/_arch_detect_8h.html',1,'']]], + ['arg_62',['arg',['../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95',1,'OptionGroup']]], + ['argname_63',['argname',['../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f',1,'OptionDef']]], + ['argumentstostring_64',['argumentsToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a3ce2ecd213d80200a1e0bb98c5048a01',1,'ffmpegkit::FFmpegKitConfig']]], + ['assert_5favoptions_65',['assert_avoptions',['../d7/d48/fftools__ffmpeg_8c.html#aeceadb162c07ff048a54d0d70cc851fb',1,'assert_avoptions(AVDictionary *m): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#aeceadb162c07ff048a54d0d70cc851fb',1,'assert_avoptions(AVDictionary *m): fftools_ffmpeg.c']]], + ['assert_5ffile_5foverwrite_66',['assert_file_overwrite',['../d7/db3/fftools__ffmpeg_8h.html#a9bc9a2fdcee987f9900054f9d7dc28e9',1,'assert_file_overwrite(const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9bc9a2fdcee987f9900054f9d7dc28e9',1,'assert_file_overwrite(const char *filename): fftools_ffmpeg_opt.c']]], + ['asyncffmpegexecute_67',['asyncFFmpegExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa7449c207e30df8fe67907f881cceea3',1,'ffmpegkit::FFmpegKitConfig']]], + ['asyncffprobeexecute_68',['asyncFFprobeExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a5dd0c23d3b6db9ffd59448e871995202',1,'ffmpegkit::FFmpegKitConfig']]], + ['asyncgetmediainformationexecute_69',['asyncGetMediaInformationExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a76858252a1c6afbd4a3c6e27c59366d7',1,'ffmpegkit::FFmpegKitConfig']]], + ['attachment_5ffilename_70',['attachment_filename',['../db/dde/struct_output_stream.html#aa65108bd50cba339c4ad09ffc5fe77ac',1,'OutputStream']]], + ['attachments_71',['attachments',['../df/d77/struct_options_context.html#accc18b7847026b5885533035c97b50ba',1,'OptionsContext']]], + ['audio_5fchannel_5fmaps_72',['audio_channel_maps',['../df/d77/struct_options_context.html#afbfd63b5be2c974c0a2dbf1911ab678b',1,'OptionsContext']]], + ['audio_5fchannels_73',['audio_channels',['../df/d77/struct_options_context.html#a8d31ed47dd3c6a795047bd4e92e60b4e',1,'OptionsContext']]], + ['audio_5fchannels_5fmap_74',['audio_channels_map',['../db/dde/struct_output_stream.html#a343c63e0cf4f0aca4fb4727b2e6fa829',1,'OutputStream']]], + ['audio_5fchannels_5fmapped_75',['audio_channels_mapped',['../db/dde/struct_output_stream.html#a50bc46d7c7636e2abbfe066872d0c1d0',1,'OutputStream']]], + ['audio_5fdisable_76',['audio_disable',['../df/d77/struct_options_context.html#aa38553d671e91b5ad6d136923055e5bb',1,'OptionsContext']]], + ['audio_5fdrift_5fthreshold_77',['audio_drift_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a8454a6a2632a5ce0f2983c9499649ede',1,'audio_drift_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8454a6a2632a5ce0f2983c9499649ede',1,'audio_drift_threshold(): fftools_ffmpeg_opt.c']]], + ['audio_5fsample_5frate_78',['audio_sample_rate',['../df/d77/struct_options_context.html#a2dff4fd7f6b8f7028e4e4fe43f0d3249',1,'OptionsContext']]], + ['audio_5fsync_5fmethod_79',['audio_sync_method',['../d7/db3/fftools__ffmpeg_8h.html#a7ebbd72251d3d58fe5b316928a40bed3',1,'audio_sync_method(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ebbd72251d3d58fe5b316928a40bed3',1,'audio_sync_method(): fftools_ffmpeg_opt.c']]], + ['audio_5fvolume_80',['audio_volume',['../d7/db3/fftools__ffmpeg_8h.html#a363b436188dcb847ebce8ec575fdb395',1,'audio_volume(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a363b436188dcb847ebce8ec575fdb395',1,'audio_volume(): fftools_ffmpeg_opt.c']]], + ['audiochannelmap_81',['AudioChannelMap',['../d6/d2c/struct_audio_channel_map.html',1,'']]], + ['auto_5fconversion_5ffilters_82',['auto_conversion_filters',['../d7/db3/fftools__ffmpeg_8h.html#aebed4ab68dafa693f99e1fa92decedb7',1,'auto_conversion_filters(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aebed4ab68dafa693f99e1fa92decedb7',1,'auto_conversion_filters(): fftools_ffmpeg_opt.c']]], + ['auto_5finsert_5ffilter_83',['AUTO_INSERT_FILTER',['../d2/d36/fftools__ffmpeg__filter_8c.html#aba8e85f08c2269c623074c81f0e428d6',1,'fftools_ffmpeg_filter.c']]], + ['auto_5finsert_5ffilter_5finput_84',['AUTO_INSERT_FILTER_INPUT',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9cf53e21bfb4178eefcce6b7dd20eca2',1,'fftools_ffmpeg_filter.c']]], + ['autorotate_85',['autorotate',['../df/d77/struct_options_context.html#a69b72bacd7b4ac7c63d9799cd6b8cc7f',1,'OptionsContext::autorotate()'],['../d3/d6e/struct_input_stream.html#abcb8222561f1ee84a2f7a2157bed356c',1,'InputStream::autorotate()']]], + ['autoscale_86',['autoscale',['../df/d77/struct_options_context.html#a0dd62107607248dc89ed14f7db77182e',1,'OptionsContext::autoscale()'],['../db/dde/struct_output_stream.html#a4aabbeb1e0b98e2211be7f36a3cde2aa',1,'OutputStream::autoscale()']]], + ['av_5flog_5fstderr_87',['AV_LOG_STDERR',['../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1',1,'fftools_cmdutils.h']]], + ['avcodec_5fopts_88',['avcodec_opts',['../d8/d4e/fftools__cmdutils_8h.html#a5b7d57e5b7a108a1f788c92c9bb58d8e',1,'fftools_cmdutils.h']]], + ['avfilter_89',['avfilter',['../db/dde/struct_output_stream.html#ac35ecb04b8b6ca22d10180918de95be4',1,'OutputStream']]], + ['avformat_5fopts_90',['avformat_opts',['../d8/d4e/fftools__cmdutils_8h.html#a4a485ee1ca1f65f58e326ba65cded348',1,'fftools_cmdutils.h']]], + ['avutil_5flog_5fformat_5fline_91',['avutil_log_format_line',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a5a741178aa9707f94a3ed21dc9199563',1,'FFmpegKitConfig.cpp']]], + ['avutil_5flog_5fget_5flevel_5fstr_92',['avutil_log_get_level_str',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#afcbebcb2971b24e9601eb99d5411cb1b',1,'FFmpegKitConfig.cpp']]], + ['avutil_5flog_5fsanitize_93',['avutil_log_sanitize',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a3e0b59121c7142e4d7d1b595754aae47',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/all_10.html b/docs/linux/html/search/all_10.html new file mode 100644 index 0000000..6fd3a4a --- /dev/null +++ b/docs/linux/html/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_10.js b/docs/linux/html/search/all_10.js new file mode 100644 index 0000000..a6792ad --- /dev/null +++ b/docs/linux/html/search/all_10.js @@ -0,0 +1,91 @@ +var searchData= +[ + ['packages_1092',['Packages',['../dd/dee/classffmpegkit_1_1_packages.html',1,'ffmpegkit']]], + ['packages_2ecpp_1093',['Packages.cpp',['../d6/df7/_packages_8cpp.html',1,'']]], + ['packages_2eh_1094',['Packages.h',['../d5/d5f/_packages_8h.html',1,'']]], + ['packets_5fwritten_1095',['packets_written',['../db/dde/struct_output_stream.html#a5a6eb3819ace72b542142a7082ceced3',1,'OutputStream']]], + ['parent_5fcategory_1096',['parent_category',['../dd/d15/struct_log_buffer.html#a3aff058881abaa39e0ad52a188465b09',1,'LogBuffer']]], + ['parent_5fname_1097',['parent_name',['../dd/d15/struct_log_buffer.html#a67849aab90d8b99804199a05790d7945',1,'LogBuffer']]], + ['parse_5fforced_5fkey_5fframes_1098',['parse_forced_key_frames',['../d7/d48/fftools__ffmpeg_8c.html#a64d2227a8af6a247040fc50ab547dc0e',1,'fftools_ffmpeg.c']]], + ['parse_5floglevel_1099',['parse_loglevel',['../d7/dcc/fftools__cmdutils_8c.html#a812390811ecf2673409d4d2191b3696a',1,'parse_loglevel(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a',1,'parse_loglevel(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c']]], + ['parse_5fmatrix_5fcoeffs_1100',['parse_matrix_coeffs',['../d7/db3/fftools__ffmpeg_8h.html#a9324d262380638a863ba421a6905e89b',1,'parse_matrix_coeffs(uint16_t *dest, const char *str): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9324d262380638a863ba421a6905e89b',1,'parse_matrix_coeffs(uint16_t *dest, const char *str): fftools_ffmpeg_opt.c']]], + ['parse_5fmeta_5ftype_1101',['parse_meta_type',['../d7/db3/fftools__ffmpeg_8h.html#a119ac6dfc6c391d979611c6878497fb8',1,'parse_meta_type(char *arg, char *type, int *index, const char **stream_spec): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a119ac6dfc6c391d979611c6878497fb8',1,'parse_meta_type(char *arg, char *type, int *index, const char **stream_spec): fftools_ffmpeg_opt.c']]], + ['parse_5fnumber_5for_5fdie_1102',['parse_number_or_die',['../d7/dcc/fftools__cmdutils_8c.html#aee611299e84dab23d614366f993e96ae',1,'parse_number_or_die(const char *context, const char *numstr, int type, double min, double max): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae',1,'parse_number_or_die(const char *context, const char *numstr, int type, double min, double max): fftools_cmdutils.c']]], + ['parse_5foptgroup_1103',['parse_optgroup',['../d7/dcc/fftools__cmdutils_8c.html#ae0e1bd04fd160c44d7e36623314380e4',1,'parse_optgroup(void *optctx, OptionGroup *g): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4',1,'parse_optgroup(void *optctx, OptionGroup *g): fftools_cmdutils.c']]], + ['parse_5foption_1104',['parse_option',['../d7/dcc/fftools__cmdutils_8c.html#a0f7f4bf6a990541888b7f4ece3456547',1,'parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547',1,'parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options): fftools_cmdutils.c']]], + ['parse_5foptions_1105',['parse_options',['../d7/dcc/fftools__cmdutils_8c.html#a8863e994be95bc81bbedff194aa2842f',1,'parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *)): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a188aa7e7bee8039b9399865cc3507336',1,'parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *)): fftools_cmdutils.h']]], + ['parse_5fread_5finterval_1106',['parse_read_interval',['../d8/d78/fftools__ffprobe_8c.html#a4aaed4c4829ad9d8c7ec29554fd4fbe0',1,'fftools_ffprobe.c']]], + ['parse_5fread_5fintervals_1107',['parse_read_intervals',['../d8/d78/fftools__ffprobe_8c.html#af075be31a1321aa2dba0b2aee1cbb9b7',1,'fftools_ffprobe.c']]], + ['parse_5ftime_5for_5fdie_1108',['parse_time_or_die',['../d7/dcc/fftools__cmdutils_8c.html#aa60d6deab0047c29fc1f6602f812774f',1,'parse_time_or_die(const char *context, const char *timestr, int is_duration): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f',1,'parse_time_or_die(const char *context, const char *timestr, int is_duration): fftools_cmdutils.c']]], + ['parsearguments_1109',['parseArguments',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a34379177499de1479be1150569857b20',1,'ffmpegkit::FFmpegKitConfig']]], + ['pass_1110',['pass',['../df/d77/struct_options_context.html#a1cdd2a22cff6d812f00a5fb06664f134',1,'OptionsContext']]], + ['passlogfiles_1111',['passlogfiles',['../df/d77/struct_options_context.html#a964798ad981fce4fa7f38a4c281a23fa',1,'OptionsContext']]], + ['pict_5ftype_1112',['pict_type',['../db/dde/struct_output_stream.html#a606467e84f8cc1c55a33fe253accc581',1,'OutputStream']]], + ['pipeindexgenerator_1113',['pipeIndexGenerator',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad70c8bb8a0bffa5c70283e7f1cb054c6',1,'FFmpegKitConfig.cpp']]], + ['pix_5ffmt_1114',['pix_fmt',['../df/d37/struct_h_w_accel.html#a379aaf6aad89d4c2036baf423e3bbb5e',1,'HWAccel']]], + ['pkt_1115',['pkt',['../d3/d6e/struct_input_stream.html#a9d7d1e08713e8fb98d18d1ef6367e8e6',1,'InputStream::pkt()'],['../d8/d99/struct_input_file.html#a025ca3ac4d4e6b9ebe7f6a8f548f8ca6',1,'InputFile::pkt()'],['../db/dde/struct_output_stream.html#a34db2d7b3922da876db8ed464d7a5114',1,'OutputStream::pkt()']]], + ['prepare_5fapp_5farguments_1116',['prepare_app_arguments',['../d7/dcc/fftools__cmdutils_8c.html#a0cd6e5cbbafaff05295a751def5d32ad',1,'fftools_cmdutils.c']]], + ['presets_1117',['presets',['../df/d77/struct_options_context.html#ae4626f848474b1ce5648eb4936074020',1,'OptionsContext']]], + ['prev_5fsub_1118',['prev_sub',['../d3/d6e/struct_input_stream.html#a620e4a8547e0bedc99f562539fc30421',1,'InputStream']]], + ['print_5fall_5flibs_5finfo_1119',['print_all_libs_info',['../d7/dcc/fftools__cmdutils_8c.html#a5cbcf8cc28fc02a8789f72b592981816',1,'fftools_cmdutils.c']]], + ['print_5fbuildconf_1120',['print_buildconf',['../d7/dcc/fftools__cmdutils_8c.html#a6cfd6aae52ff802c6ec1fce41c52011a',1,'fftools_cmdutils.c']]], + ['print_5fchroma_5flocation_1121',['print_chroma_location',['../d8/d78/fftools__ffprobe_8c.html#a5f600d819733590331cfb1b8af8ca177',1,'fftools_ffprobe.c']]], + ['print_5fcodec_1122',['print_codec',['../d7/dcc/fftools__cmdutils_8c.html#ac5cf0f0047f2fbb773b73e95919d4821',1,'fftools_cmdutils.c']]], + ['print_5fcodec_5fsupported_1123',['PRINT_CODEC_SUPPORTED',['../d7/dcc/fftools__cmdutils_8c.html#af0ae219da0c0d02b180f9badbb6edb38',1,'fftools_cmdutils.c']]], + ['print_5fcodecs_1124',['print_codecs',['../d7/dcc/fftools__cmdutils_8c.html#a450c5caed499581d5ed96ff54640acb1',1,'fftools_cmdutils.c']]], + ['print_5fcodecs_5ffor_5fid_1125',['print_codecs_for_id',['../d7/dcc/fftools__cmdutils_8c.html#afc1654f711a83402bae9c130fe706b52',1,'fftools_cmdutils.c']]], + ['print_5fcolor_5frange_1126',['print_color_range',['../d8/d78/fftools__ffprobe_8c.html#a3a51210006ca1979e7d49c8170a9a5eb',1,'fftools_ffprobe.c']]], + ['print_5fcolor_5fspace_1127',['print_color_space',['../d8/d78/fftools__ffprobe_8c.html#a564eedd302b706d75fe3e94fc8a1d2b6',1,'fftools_ffprobe.c']]], + ['print_5fcolor_5ftrc_1128',['print_color_trc',['../d8/d78/fftools__ffprobe_8c.html#a9f12e0b749ea8ddfca49e1c2002edbdb',1,'fftools_ffprobe.c']]], + ['print_5fdisposition_1129',['PRINT_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#ae89dbba8c801237ffa79d17b6bd31a1d',1,'fftools_ffprobe.c']]], + ['print_5fduration_5ftime_1130',['print_duration_time',['../d8/d78/fftools__ffprobe_8c.html#ab897cb79fde6bf9963bfcf3c95845307',1,'fftools_ffprobe.c']]], + ['print_5fduration_5fts_1131',['print_duration_ts',['../d8/d78/fftools__ffprobe_8c.html#a75f1eefc6aa23e90b8599dd5da7b2e16',1,'fftools_ffprobe.c']]], + ['print_5fdynamic_5fhdr10_5fplus_1132',['print_dynamic_hdr10_plus',['../d8/d78/fftools__ffprobe_8c.html#afea45f3be2ae6f508c0391ab5e3102fa',1,'fftools_ffprobe.c']]], + ['print_5ferror_1133',['print_error',['../d7/dcc/fftools__cmdutils_8c.html#a2911387e778b01a25f0e65eabadf1b7b',1,'print_error(const char *filename, int err): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b',1,'print_error(const char *filename, int err): fftools_cmdutils.c']]], + ['print_5ffinal_5fstats_1134',['print_final_stats',['../d7/d48/fftools__ffmpeg_8c.html#a379e18554a7d7ecb27d37c0dc6f3ebba',1,'fftools_ffmpeg.c']]], + ['print_5ffmt_1135',['print_fmt',['../d8/d78/fftools__ffprobe_8c.html#afb5a75a925e69bb3c9e45789846bee94',1,'fftools_ffprobe.c']]], + ['print_5fformat_1136',['print_format',['../d8/d78/fftools__ffprobe_8c.html#ae06059755546c6c056d086755a2cb183',1,'fftools_ffprobe.c']]], + ['print_5finput_5ffilename_1137',['print_input_filename',['../d8/d78/fftools__ffprobe_8c.html#a531c7f37d6bd8955feadf5fe43c1b574',1,'fftools_ffprobe.c']]], + ['print_5fint_1138',['print_int',['../d8/d78/fftools__ffprobe_8c.html#a1f90422e06519bc2ea72274f451395a4',1,'fftools_ffprobe.c']]], + ['print_5finteger_1139',['print_integer',['../d6/dff/struct_writer.html#a6b757628daceb0e7d1271086ed4329a7',1,'Writer']]], + ['print_5flib_5finfo_1140',['PRINT_LIB_INFO',['../d7/dcc/fftools__cmdutils_8c.html#a6dbb327ec24eebea72ba8769c68024b3',1,'fftools_cmdutils.c']]], + ['print_5fpix_5ffmt_5fflag_1141',['PRINT_PIX_FMT_FLAG',['../d8/d78/fftools__ffprobe_8c.html#af450d28944707460380b44f51afbe567',1,'fftools_ffprobe.c']]], + ['print_5fpkt_5fside_5fdata_1142',['print_pkt_side_data',['../d8/d78/fftools__ffprobe_8c.html#a871274cbaf46fa6acf28c160345954a3',1,'fftools_ffprobe.c']]], + ['print_5fprimaries_1143',['print_primaries',['../d8/d78/fftools__ffprobe_8c.html#a2845f55225678183230cf8fa93561bc3',1,'fftools_ffprobe.c']]], + ['print_5fprogram_5finfo_1144',['print_program_info',['../d7/dcc/fftools__cmdutils_8c.html#abb783aa7b42b09843a310b93edd9badb',1,'fftools_cmdutils.c']]], + ['print_5fq_1145',['print_q',['../d8/d78/fftools__ffprobe_8c.html#a9c4cb64e61f63461e6a2e9f96bcc08ed',1,'fftools_ffprobe.c']]], + ['print_5frational_1146',['print_rational',['../d6/dff/struct_writer.html#a7e1995fb5f379a4b7c63d0b0464f541b',1,'Writer']]], + ['print_5freport_1147',['print_report',['../d7/d48/fftools__ffmpeg_8c.html#ac639722e5e5a6a26c78eca5e9122909d',1,'fftools_ffmpeg.c']]], + ['print_5fsdp_1148',['print_sdp',['../d7/d48/fftools__ffmpeg_8c.html#a2e002b603f4f756cbe614fb2e5cbb0dd',1,'fftools_ffmpeg.c']]], + ['print_5fsection_1149',['print_section',['../d2/ddd/struct_compact_context.html#af0b37847b18bd84f3d786c7e824356ee',1,'CompactContext::print_section()'],['../d8/d78/fftools__ffprobe_8c.html#aa77d3d730a5abf2f7490fb63c1f56398',1,'print_section(): fftools_ffprobe.c']]], + ['print_5fsection_5ffooter_1150',['print_section_footer',['../d6/dff/struct_writer.html#ab59c327a5f35dc6befaa9275e440bf98',1,'Writer::print_section_footer()'],['../d8/d78/fftools__ffprobe_8c.html#ad54b30ff4585cf06a45b86113c699493',1,'print_section_footer(): fftools_ffprobe.c']]], + ['print_5fsection_5fheader_1151',['print_section_header',['../d6/dff/struct_writer.html#a978214b80ca8a1074b18c057215cb423',1,'Writer::print_section_header()'],['../d8/d78/fftools__ffprobe_8c.html#a56b929d7a49aade17278630a7c20417f',1,'print_section_header(): fftools_ffprobe.c']]], + ['print_5fstats_1152',['print_stats',['../d7/db3/fftools__ffmpeg_8h.html#a2e982c39d1861f0c59ccdd2fb028ec68',1,'print_stats(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2e982c39d1861f0c59ccdd2fb028ec68',1,'print_stats(): fftools_ffmpeg_opt.c']]], + ['print_5fstr_1153',['print_str',['../d8/d78/fftools__ffprobe_8c.html#a71a4323c9d09f2134813214b05b02f21',1,'fftools_ffprobe.c']]], + ['print_5fstr_5fopt_1154',['print_str_opt',['../d8/d78/fftools__ffprobe_8c.html#a86cec82a25b7a8b4b3fcf3a5cd83e0d4',1,'fftools_ffprobe.c']]], + ['print_5fstr_5fvalidate_1155',['print_str_validate',['../d8/d78/fftools__ffprobe_8c.html#a5a79884570405103edc691484f0ca561',1,'fftools_ffprobe.c']]], + ['print_5fstring_1156',['print_string',['../d6/dff/struct_writer.html#a004534de75d5c156c9ad3c5f280a95bd',1,'Writer']]], + ['print_5fstring_5fopt_1157',['PRINT_STRING_OPT',['../d8/d78/fftools__ffprobe_8c.html#a7e877e1650865d2eb640e3248e899ae3',1,'fftools_ffprobe.c']]], + ['print_5fstring_5fvalidate_1158',['PRINT_STRING_VALIDATE',['../d8/d78/fftools__ffprobe_8c.html#ae2c9d9f267fca35b7f16ba714b7e9cb0',1,'fftools_ffprobe.c']]], + ['print_5ftime_1159',['print_time',['../d8/d78/fftools__ffprobe_8c.html#ae44aadacbb049e30ef6fa3598badd931',1,'fftools_ffprobe.c']]], + ['print_5fts_1160',['print_ts',['../d8/d78/fftools__ffprobe_8c.html#a1ada112e892e2c2cb448f91364e87054',1,'fftools_ffprobe.c']]], + ['print_5fval_1161',['print_val',['../d8/d78/fftools__ffprobe_8c.html#a8c00b38ce31cc5680d3ef3c4b86cb47a',1,'fftools_ffprobe.c']]], + ['priv_1162',['priv',['../d1/da2/struct_writer_context.html#a5b071322a7adc4478ba1c381bdc68202',1,'WriterContext']]], + ['priv_5fclass_1163',['priv_class',['../d6/dff/struct_writer.html#a66be370a26c5bf349d83fc61dd584ca0',1,'Writer']]], + ['priv_5fsize_1164',['priv_size',['../d6/dff/struct_writer.html#a648833a5a5c772b6b2141559ab7be92a',1,'Writer']]], + ['probe_5ffile_1165',['probe_file',['../d8/d78/fftools__ffprobe_8c.html#a5af59ba6f6680dfaeb2ab6ad323e3fc0',1,'fftools_ffprobe.c']]], + ['process_5fframe_1166',['process_frame',['../d8/d78/fftools__ffprobe_8c.html#a3da11c48c949cfc9b67360e5e3b107bc',1,'fftools_ffprobe.c']]], + ['process_5finput_1167',['process_input',['../d7/d48/fftools__ffmpeg_8c.html#a79192afe1e714610704c94cca1e6601b',1,'fftools_ffmpeg.c']]], + ['process_5finput_5fpacket_1168',['process_input_packet',['../d7/d48/fftools__ffmpeg_8c.html#a280fede5cdf5e514980ee8b629303c78',1,'fftools_ffmpeg.c']]], + ['process_5flog_1169',['process_log',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a0d16654c1a9fc809524f5d21772ae0e7',1,'FFmpegKitConfig.cpp']]], + ['process_5fstatistics_1170',['process_statistics',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ac62f4c21473a7259bf05e61832a73012',1,'FFmpegKitConfig.cpp']]], + ['program_1171',['program',['../df/d77/struct_options_context.html#ad5b2e0fb210c4bb546852fc813af0797',1,'OptionsContext']]], + ['program_5fbirth_5fyear_1172',['program_birth_year',['../d7/dcc/fftools__cmdutils_8c.html#a83fbf976c7976ea554e7bda1d266b0a2',1,'program_birth_year(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2',1,'program_birth_year(): fftools_cmdutils.c']]], + ['program_5fexit_1173',['program_exit',['../d7/dcc/fftools__cmdutils_8c.html#a70a33336401e81adb9d98c23ec4e77b7',1,'fftools_cmdutils.c']]], + ['program_5fname_1174',['program_name',['../d7/dcc/fftools__cmdutils_8c.html#a6afce516a5adaeabd7087b767bab5886',1,'program_name(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886',1,'program_name(): fftools_cmdutils.c']]], + ['progress_5favio_1175',['progress_avio',['../d7/d48/fftools__ffmpeg_8c.html#a863888d6549c9004ae0aec0bfa0b6994',1,'progress_avio(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a863888d6549c9004ae0aec0bfa0b6994',1,'progress_avio(): fftools_ffmpeg.c']]], + ['psnr_1176',['psnr',['../d7/d48/fftools__ffmpeg_8c.html#a3da49e34ea9fb9a212c4929d2ba403e2',1,'fftools_ffmpeg.c']]], + ['pthread_5fmutex_5flock_1177',['pthread_mutex_lock',['../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a',1,'fftools_ffprobe.c']]], + ['pthread_5fmutex_5funlock_1178',['pthread_mutex_unlock',['../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8',1,'fftools_ffprobe.c']]], + ['pts_1179',['pts',['../d3/d6e/struct_input_stream.html#a5e77505bdc5afbc6ab5cf613894925b4',1,'InputStream']]] +]; diff --git a/docs/linux/html/search/all_11.html b/docs/linux/html/search/all_11.html new file mode 100644 index 0000000..f78343b --- /dev/null +++ b/docs/linux/html/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_11.js b/docs/linux/html/search/all_11.js new file mode 100644 index 0000000..4ca4afb --- /dev/null +++ b/docs/linux/html/search/all_11.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['qp_5fhist_1180',['qp_hist',['../d7/db3/fftools__ffmpeg_8h.html#ad2242da08cbe3afb277b3be3579935fe',1,'qp_hist(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad2242da08cbe3afb277b3be3579935fe',1,'qp_hist(): fftools_ffmpeg_opt.c']]], + ['qp_5fhistogram_1181',['qp_histogram',['../d7/d48/fftools__ffmpeg_8c.html#a7c5fbe0152e9099ad6dfee42cb2ceb90',1,'fftools_ffmpeg.c']]], + ['qscale_1182',['qscale',['../df/d77/struct_options_context.html#ac2f888221004268627ea9acb47f831e6',1,'OptionsContext']]], + ['qsv_5finit_1183',['qsv_init',['../d7/db3/fftools__ffmpeg_8h.html#ac1583448d7e49fae8d141dbddf267ff4',1,'fftools_ffmpeg.h']]], + ['quality_1184',['quality',['../db/dde/struct_output_stream.html#a8a3c873067ba39a2d4f310d2e4a06d54',1,'OutputStream']]] +]; diff --git a/docs/linux/html/search/all_12.html b/docs/linux/html/search/all_12.html new file mode 100644 index 0000000..dd9ff1d --- /dev/null +++ b/docs/linux/html/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_12.js b/docs/linux/html/search/all_12.js new file mode 100644 index 0000000..856ba9e --- /dev/null +++ b/docs/linux/html/search/all_12.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['rapidjson_5fassert_1185',['RAPIDJSON_ASSERT',['../dc/d8d/_chapter_8h.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): Chapter.h'],['../d1/dbf/_media_information_json_parser_8cpp.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): MediaInformationJsonParser.cpp'],['../d4/df4/_stream_information_8h.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): StreamInformation.h']]], + ['rate_5femu_1186',['rate_emu',['../df/d77/struct_options_context.html#a3132753aec8bcb63437da6a28c8104e2',1,'OptionsContext::rate_emu()'],['../d8/d99/struct_input_file.html#a44943da9b6e2a44ba3951a6203b1acc4',1,'InputFile::rate_emu()']]], + ['rc_5foverrides_1187',['rc_overrides',['../df/d77/struct_options_context.html#acab9897a7ab3fdfb2109e1cc7ed10678',1,'OptionsContext']]], + ['read_5finterval_5fpackets_1188',['read_interval_packets',['../d8/d78/fftools__ffprobe_8c.html#a2c22344a1833d5cabcfb1d378d5c668c',1,'fftools_ffprobe.c']]], + ['read_5fintervals_1189',['read_intervals',['../d8/d78/fftools__ffprobe_8c.html#a5a138c620aa1aa853f8ff5e63227575c',1,'fftools_ffprobe.c']]], + ['read_5fintervals_5fnb_1190',['read_intervals_nb',['../d8/d78/fftools__ffprobe_8c.html#a01876b12bd2535f8d0a4b55fb95e0031',1,'fftools_ffprobe.c']]], + ['read_5fkey_1191',['read_key',['../d7/d48/fftools__ffmpeg_8c.html#a888998656da528d50f125b39dcd1067a',1,'fftools_ffmpeg.c']]], + ['read_5fpackets_1192',['read_packets',['../d8/d78/fftools__ffprobe_8c.html#a240b015b5cfbcc4f34f140701096d992',1,'fftools_ffprobe.c']]], + ['read_5fyesno_1193',['read_yesno',['../d7/dcc/fftools__cmdutils_8c.html#a40394fd5966088e759ce995186773700',1,'read_yesno(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700',1,'read_yesno(void): fftools_cmdutils.c']]], + ['readinterval_1194',['ReadInterval',['../d8/dee/struct_read_interval.html',1,'ReadInterval'],['../d8/d78/fftools__ffprobe_8c.html#a997981f7bca04cb6bb56c29389f993a7',1,'ReadInterval(): fftools_ffprobe.c']]], + ['readrate_1195',['readrate',['../df/d77/struct_options_context.html#a601c608cec57061ad592d4469ee59295',1,'OptionsContext::readrate()'],['../d8/d99/struct_input_file.html#ad14ffedb84d846d902218fca35352270',1,'InputFile::readrate()']]], + ['real_5fusec_1196',['real_usec',['../d5/d8e/struct_benchmark_time_stamps.html#a8639f0bbe9044fc765f4ec5b3968a488',1,'BenchmarkTimeStamps']]], + ['reallocz_5farray_5fstream_1197',['REALLOCZ_ARRAY_STREAM',['../d8/d78/fftools__ffprobe_8c.html#ae74bd2a2deaef10dcb052f912c2b280b',1,'fftools_ffprobe.c']]], + ['reap_5ffilters_1198',['reap_filters',['../d7/d48/fftools__ffmpeg_8c.html#a2fb313e7b4b1ef89bd7e8fff6f85d71e',1,'fftools_ffmpeg.c']]], + ['recast_5fmedia_1199',['recast_media',['../da/d66/fftools__ffmpeg__opt_8c.html#a3cff2fc900e1d019995720f12f7b6bc0',1,'fftools_ffmpeg_opt.c']]], + ['received_5fnb_5fsignals_1200',['received_nb_signals',['../d7/d48/fftools__ffmpeg_8c.html#aa67220b3d47d990ba75e7099f11cfa68',1,'fftools_ffmpeg.c']]], + ['received_5fsigterm_1201',['received_sigterm',['../d7/d48/fftools__ffmpeg_8c.html#a1a9c2c01a83c8bbcd4eb7a8af9a0b160',1,'fftools_ffmpeg.c']]], + ['reconfiguration_1202',['reconfiguration',['../d9/de7/struct_filter_graph.html#a7bc2aac4115ac1a2fc951e5d0a403824',1,'FilterGraph']]], + ['recording_5ftime_1203',['recording_time',['../df/d77/struct_options_context.html#a6e38d08faed408a51e45aaf80938d5d6',1,'OptionsContext::recording_time()'],['../d8/d99/struct_input_file.html#a66ab0bb6b0332c27bb6b51a0b67d1459',1,'InputFile::recording_time()'],['../de/df2/struct_output_file.html#ad160ce6520aad386bead7eb45f6f55a0',1,'OutputFile::recording_time()']]], + ['redirectionenabled_1204',['redirectionEnabled',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aad49c603a65074ce7a5d491ce9a54eb5',1,'FFmpegKitConfig.cpp']]], + ['ref_5fpar_1205',['ref_par',['../db/dde/struct_output_stream.html#a9f511baf1fef17812bf650c35c828382',1,'OutputStream']]], + ['register_5fexit_1206',['register_exit',['../d7/dcc/fftools__cmdutils_8c.html#aa64dcad44f54da335b337154d9e9950f',1,'register_exit(void(*cb)(int ret)): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f',1,'register_exit(void(*cb)(int ret)): fftools_cmdutils.c']]], + ['registered_5fwriters_1207',['registered_writers',['../d8/d78/fftools__ffprobe_8c.html#aea7091c23f35973b98bc9572f6d249ea',1,'fftools_ffprobe.c']]], + ['registernewffmpegpipe_1208',['registerNewFFmpegPipe',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a49bc4b4d70e68a2d358695151909dbda',1,'ffmpegkit::FFmpegKitConfig']]], + ['registersessionid_1209',['registerSessionId',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4a34c1f3a7880e880e6c1faef0d90889',1,'FFmpegKitConfig.cpp']]], + ['reinit_5ffilters_1210',['reinit_filters',['../df/d77/struct_options_context.html#a9350e7c932cffac2c0abb0084f2e01c6',1,'OptionsContext::reinit_filters()'],['../d3/d6e/struct_input_stream.html#a809d93e64e76fe2f142102e58dc82a1e',1,'InputStream::reinit_filters()']]], + ['remove_5favoptions_1211',['remove_avoptions',['../d7/d48/fftools__ffmpeg_8c.html#aa34a84957adf117f712efcb6cbfd834f',1,'remove_avoptions(AVDictionary **a, AVDictionary *b): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#aa34a84957adf117f712efcb6cbfd834f',1,'remove_avoptions(AVDictionary **a, AVDictionary *b): fftools_ffmpeg.c']]], + ['removesession_1212',['removeSession',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ae22999bc0087d61ba7d0bb174bd3804e',1,'FFmpegKitConfig.cpp']]], + ['report_5fcallback_1213',['report_callback',['../d7/dcc/fftools__cmdutils_8c.html#ab144f8d36db79a4fa550cd011f39748a',1,'report_callback(): fftools_ffmpeg.c'],['../d7/d48/fftools__ffmpeg_8c.html#ab144f8d36db79a4fa550cd011f39748a',1,'report_callback(): fftools_ffmpeg.c']]], + ['report_5ffile_1214',['report_file',['../d7/dcc/fftools__cmdutils_8c.html#a573c884451d6e0ad896ccffbb322be1a',1,'fftools_cmdutils.c']]], + ['report_5ffile_5flevel_1215',['report_file_level',['../d7/dcc/fftools__cmdutils_8c.html#a416cc137d25668a65eab016aa74562e7',1,'fftools_cmdutils.c']]], + ['report_5fnew_5fstream_1216',['report_new_stream',['../d7/d48/fftools__ffmpeg_8c.html#ab19f077af44d4caa16ecad4d9532715a',1,'fftools_ffmpeg.c']]], + ['resample_5fopts_1217',['resample_opts',['../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9',1,'OptionGroup::resample_opts()'],['../db/dde/struct_output_stream.html#a84762af19c6801936fd49d53170a3682',1,'OutputStream::resample_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a63b299e1c6a109e847bc2416887ce3d6',1,'resample_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6',1,'resample_opts(): fftools_cmdutils.h']]], + ['reset_5feagain_1218',['reset_eagain',['../d7/d48/fftools__ffmpeg_8c.html#a5e7569f8c8012ff719b112431b1df091',1,'fftools_ffmpeg.c']]], + ['reset_5foptions_1219',['reset_options',['../d7/db3/fftools__ffmpeg_8h.html#a1801147c99b95a1ae99138795e7cec52',1,'fftools_ffmpeg.h']]], + ['resetmessagesintransmit_1220',['resetMessagesInTransmit',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7e5b2db08ff912047fbd1a132db68e2b',1,'FFmpegKitConfig.cpp']]], + ['ret_1221',['ret',['../d3/d6e/struct_input_stream.html#a6ae65382f22317b94b7ccfe00024d31a',1,'InputStream']]], + ['return_1222',['return',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9717e7bbecb906637e86cef6da3d83c2',1,'fftools_ffmpeg_filter.c']]], + ['returncode_1223',['ReturnCode',['../d4/dcf/classffmpegkit_1_1_return_code.html',1,'ffmpegkit::ReturnCode'],['../d4/dcf/classffmpegkit_1_1_return_code.html#ae3e6fc55d40a5837e4962105ed3ad1ab',1,'ffmpegkit::ReturnCode::ReturnCode()']]], + ['returncode_2ecpp_1224',['ReturnCode.cpp',['../d9/d21/_return_code_8cpp.html',1,'']]], + ['returncode_2eh_1225',['ReturnCode.h',['../d0/d19/_return_code_8h.html',1,'']]], + ['rotate_5foverridden_1226',['rotate_overridden',['../db/dde/struct_output_stream.html#ae27ba6d2051d62f704c5693133b58b11',1,'OutputStream']]], + ['rotate_5foverride_5fvalue_1227',['rotate_override_value',['../db/dde/struct_output_stream.html#a3752b3243f9a089543bc1dc67b3de3fc',1,'OutputStream']]], + ['run_5fas_5fdaemon_1228',['run_as_daemon',['../d7/d48/fftools__ffmpeg_8c.html#a17041c631bc79b0997f251ba11dcebc9',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/all_13.html b/docs/linux/html/search/all_13.html new file mode 100644 index 0000000..2611a10 --- /dev/null +++ b/docs/linux/html/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_13.js b/docs/linux/html/search/all_13.js new file mode 100644 index 0000000..68f9f12 --- /dev/null +++ b/docs/linux/html/search/all_13.js @@ -0,0 +1,235 @@ +var searchData= +[ + ['sample_5faspect_5fratio_1229',['sample_aspect_ratio',['../d7/d0c/struct_input_filter.html#abbd8721ddcadbfb453a4f5cdf6301c25',1,'InputFilter']]], + ['sample_5ffmts_1230',['sample_fmts',['../df/d77/struct_options_context.html#a8bc8d11aba421af1826e6ec27aaa5e3d',1,'OptionsContext']]], + ['sample_5frate_1231',['sample_rate',['../d7/d0c/struct_input_filter.html#a1c8870375203b3594e67e632119bbc10',1,'InputFilter::sample_rate()'],['../d0/d0f/struct_output_filter.html#ab0be1ec413ca98912667f1bf76fd2588',1,'OutputFilter::sample_rate()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a9feef5270e0e54f103868362df0cd27a',1,'sample_rate(): fftools_ffmpeg_filter.c']]], + ['sample_5frates_1232',['sample_rates',['../d0/d0f/struct_output_filter.html#a9f66eff9402b2790dfcea63a0010aecc',1,'OutputFilter::sample_rates()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a12ee30995b3ac94a573f01870d1289e8',1,'sample_rates(): fftools_ffmpeg_filter.c']]], + ['samples_5fdecoded_1233',['samples_decoded',['../d3/d6e/struct_input_stream.html#aa8aa609acb39eb21da43f02cdfb036eb',1,'InputStream']]], + ['samples_5fencoded_1234',['samples_encoded',['../db/dde/struct_output_stream.html#acb999bb958bdd5ba3d55d5063ebaa5b0',1,'OutputStream']]], + ['saw_5ffirst_5fts_1235',['saw_first_ts',['../d3/d6e/struct_input_stream.html#a09d78f4795c4ff17dd54204450f2d394',1,'InputStream']]], + ['sdp_5ffilename_1236',['sdp_filename',['../d7/db3/fftools__ffmpeg_8h.html#a23afba338ad9fc8a6e65ba0f6400ebc3',1,'sdp_filename(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a23afba338ad9fc8a6e65ba0f6400ebc3',1,'sdp_filename(): fftools_ffmpeg_opt.c']]], + ['section_1237',['section',['../d9/d11/structsection.html',1,'section'],['../d1/da2/struct_writer_context.html#a1a3764eca79f01c7935f6b00fb703ae9',1,'WriterContext::section()']]], + ['section_5fflag_5fhas_5fvariable_5ffields_1238',['SECTION_FLAG_HAS_VARIABLE_FIELDS',['../d8/d78/fftools__ffprobe_8c.html#a5e46058932a89f773c66c8e04f6bfb17',1,'fftools_ffprobe.c']]], + ['section_5fflag_5fis_5farray_1239',['SECTION_FLAG_IS_ARRAY',['../d8/d78/fftools__ffprobe_8c.html#a36f5a16a863ce58ae9b90a16055a9605',1,'fftools_ffprobe.c']]], + ['section_5fflag_5fis_5fwrapper_1240',['SECTION_FLAG_IS_WRAPPER',['../d8/d78/fftools__ffprobe_8c.html#a249ee7cc2f1ff6f732f5da1ccf991f19',1,'fftools_ffprobe.c']]], + ['section_5fid_5fchapter_1241',['SECTION_ID_CHAPTER',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87af187a8756c3474f623af619cc2cecfab',1,'fftools_ffprobe.c']]], + ['section_5fid_5fchapter_5ftags_1242',['SECTION_ID_CHAPTER_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab9179256b632e7322c34c975aba60113',1,'fftools_ffprobe.c']]], + ['section_5fid_5fchapters_1243',['SECTION_ID_CHAPTERS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a94a57f7e213e6a570c5f5e4f9a908d89',1,'fftools_ffprobe.c']]], + ['section_5fid_5ferror_1244',['SECTION_ID_ERROR',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ac32869779beedd9c1869d830c03a37c2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fformat_1245',['SECTION_ID_FORMAT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9b5c997bea74161e77fe05dc3cd7a779',1,'fftools_ffprobe.c']]], + ['section_5fid_5fformat_5ftags_1246',['SECTION_ID_FORMAT_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9433f18a6e6ba1bba68e0275d8bf0e74',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_1247',['SECTION_ID_FRAME',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ad4e46308a57402696fa5a21ebc338c1c',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5flog_1248',['SECTION_ID_FRAME_LOG',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87acc19cde74c4156449dcabd4b837d6f25',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5flogs_1249',['SECTION_ID_FRAME_LOGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a958eca9d2ef84ad2b4c8f55a8995d5e4',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_1250',['SECTION_ID_FRAME_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a013501a003479933f5e22ccf9cc295a2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5flist_1251',['SECTION_ID_FRAME_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab4519d828e00418e59c8d92e710888f0',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5ftimecode_1252',['SECTION_ID_FRAME_SIDE_DATA_TIMECODE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a94e4dfea50ed9b4c13031c2400d7866b',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5ftimecode_5flist_1253',['SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a70958bc75a8b30b4ab96c4e26ea3c6a5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5ftags_1254',['SECTION_ID_FRAME_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a7c3290bb56ce048615e3b1a3238d3eb3',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframes_1255',['SECTION_ID_FRAMES',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a5a185d40892663db87930b18ab0b9226',1,'fftools_ffprobe.c']]], + ['section_5fid_5flibrary_5fversion_1256',['SECTION_ID_LIBRARY_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a4a9900b4c8544c11b4304bc0bfce20ef',1,'fftools_ffprobe.c']]], + ['section_5fid_5flibrary_5fversions_1257',['SECTION_ID_LIBRARY_VERSIONS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a7fa306c8c71213e6892a5f3535bef2bf',1,'fftools_ffprobe.c']]], + ['section_5fid_5fnone_1258',['SECTION_ID_NONE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a51a45bd669c8cb0343cf24886199a6a5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_1259',['SECTION_ID_PACKET',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1327df87967051e9e978aabab0cb4a90',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5fside_5fdata_1260',['SECTION_ID_PACKET_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ad8f94f6062593c785d7371a0d3ee9d40',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5fside_5fdata_5flist_1261',['SECTION_ID_PACKET_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a67bc62da5163caee4ae23a543d6ea9e4',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5ftags_1262',['SECTION_ID_PACKET_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa08b5f0ea8e91f53fa8eec87b184ebc8',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpackets_1263',['SECTION_ID_PACKETS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a78b6824d29ade7371aa9020036417b41',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpackets_5fand_5fframes_1264',['SECTION_ID_PACKETS_AND_FRAMES',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a636fba702359c857ab96a876baa0fd4f',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_1265',['SECTION_ID_PIXEL_FORMAT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aaf38924f26d48b2cf2feb1e8b2e2d092',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fcomponent_1266',['SECTION_ID_PIXEL_FORMAT_COMPONENT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa3d0c705bf37bcade987e8fa419bfdd5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fcomponents_1267',['SECTION_ID_PIXEL_FORMAT_COMPONENTS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9a6ae92ac20c7735461b82fee1fcd97a',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fflags_1268',['SECTION_ID_PIXEL_FORMAT_FLAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1e353a85a62878b235ffa20aa61744d2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformats_1269',['SECTION_ID_PIXEL_FORMATS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a3dd3f4afeef5f66862f678d2f659c280',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_1270',['SECTION_ID_PROGRAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87afd775e0dbc9a91f88d7657bbd8538cdb',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_1271',['SECTION_ID_PROGRAM_STREAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1216e3263722e0f7c66e0730e28740e8',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_5fdisposition_1272',['SECTION_ID_PROGRAM_STREAM_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a6b92f3ea49c3a50a1e7666d4ddfec199',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_5ftags_1273',['SECTION_ID_PROGRAM_STREAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a8c200ada1596bb835ffaaca423f20d71',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstreams_1274',['SECTION_ID_PROGRAM_STREAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87afc683f9f23abefd14a76e47dc9ab967f',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5ftags_1275',['SECTION_ID_PROGRAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a3afec05479ad94ca83aa3250f9322814',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fversion_1276',['SECTION_ID_PROGRAM_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a13de341d4057be0947152cdf61bfeb59',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprograms_1277',['SECTION_ID_PROGRAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a84a4abd8361957f44e7dbe57d6e8605a',1,'fftools_ffprobe.c']]], + ['section_5fid_5froot_1278',['SECTION_ID_ROOT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ae0dbb54a5ec2846f0dadeceedc716a81',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_1279',['SECTION_ID_STREAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a46fc13ad34edec55db958e5528352be0',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fdisposition_1280',['SECTION_ID_STREAM_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ae00cff65bbe6d5e5d66939b333e5ec30',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fside_5fdata_1281',['SECTION_ID_STREAM_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a5ceec07a4d07b35257da65555b0d1f05',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fside_5fdata_5flist_1282',['SECTION_ID_STREAM_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a830316339c38d1c6118ebc60646c7460',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5ftags_1283',['SECTION_ID_STREAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a0314ca90cd7661d814ea0363a1b8d077',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstreams_1284',['SECTION_ID_STREAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab6fd8dfcd18f1fa7b6b67cb57753b293',1,'fftools_ffprobe.c']]], + ['section_5fid_5fsubtitle_1285',['SECTION_ID_SUBTITLE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa5648764c12e65a0f65d4d78ea157261',1,'fftools_ffprobe.c']]], + ['section_5fmax_5fnb_5fchildren_1286',['SECTION_MAX_NB_CHILDREN',['../d8/d78/fftools__ffprobe_8c.html#a366798580b5ade9ac72659d8f4e21872',1,'fftools_ffprobe.c']]], + ['section_5fmax_5fnb_5flevels_1287',['SECTION_MAX_NB_LEVELS',['../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93',1,'fftools_ffprobe.c']]], + ['section_5fpbuf_1288',['section_pbuf',['../d1/da2/struct_writer_context.html#a5c4e2da0240ebfea6358065cfc923e4e',1,'WriterContext']]], + ['sectionid_1289',['SectionID',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87',1,'fftools_ffprobe.c']]], + ['sections_1290',['sections',['../d1/da2/struct_writer_context.html#aa7cd84605a2d2d861d6540e07fa8dd73',1,'WriterContext::sections()'],['../d8/d78/fftools__ffprobe_8c.html#a3c91feaf7e473df8ac146d0728af4647',1,'sections(): fftools_ffprobe.c']]], + ['seek_5ftimestamp_1291',['seek_timestamp',['../df/d77/struct_options_context.html#af81d53f595b3e6793b44515fe556eedb',1,'OptionsContext::seek_timestamp()'],['../d8/d99/struct_input_file.html#a586cfcb259a3a1641d1ed073f6bd4fe5',1,'InputFile::seek_timestamp()']]], + ['seek_5fto_5fstart_1292',['seek_to_start',['../d7/d48/fftools__ffmpeg_8c.html#a7a6c1b83340f00304d8ed06364edfa60',1,'fftools_ffmpeg.c']]], + ['selected_5fstreams_1293',['selected_streams',['../d8/d78/fftools__ffprobe_8c.html#a6f14a8b07b51a4a2fb96ffbabd345f99',1,'fftools_ffprobe.c']]], + ['send_5ffilter_5feof_1294',['send_filter_eof',['../d7/d48/fftools__ffmpeg_8c.html#a9b8d7a73907fc2dd36f4bd0cce4f2f0d',1,'fftools_ffmpeg.c']]], + ['send_5fframe_5fto_5ffilters_1295',['send_frame_to_filters',['../d7/d48/fftools__ffmpeg_8c.html#a4981f23e6d794110daa5408fc9a9f0fb',1,'fftools_ffmpeg.c']]], + ['sep_1296',['sep',['../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028',1,'OptionGroupDef::sep()'],['../d3/db7/struct_flat_context.html#a529baa5a1cba47d2eb62f49b0a4fd03b',1,'FlatContext::sep()']]], + ['sep_5fstr_1297',['sep_str',['../d3/db7/struct_flat_context.html#a509af19cca73c04f13342034fee165c7',1,'FlatContext']]], + ['session_1298',['Session',['../d5/d0e/classffmpegkit_1_1_session.html',1,'ffmpegkit']]], + ['session_2eh_1299',['Session.h',['../d0/d5a/_session_8h.html',1,'']]], + ['session_5fmap_5fsize_1300',['SESSION_MAP_SIZE',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1e14f8bbb8b53e71afdb9ebffb74ee23',1,'FFmpegKitConfig.cpp']]], + ['sessionhistorylist_1301',['sessionHistoryList',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a91279b41a9623a8794c9791189b4c605',1,'FFmpegKitConfig.cpp']]], + ['sessionhistorymap_1302',['sessionHistoryMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a92a7aa53e0c1e139b5af39b15d55f0fb',1,'FFmpegKitConfig.cpp']]], + ['sessionhistorysize_1303',['sessionHistorySize',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a24cad55e657bdaad060a621460d029f6',1,'FFmpegKitConfig.cpp']]], + ['sessionidgenerator_1304',['sessionIdGenerator',['../da/dfd/_abstract_session_8cpp.html#a24a0fc32c617a4268ef9dcd78c580fd8',1,'AbstractSession.cpp']]], + ['sessionintransitmessagecountmap_1305',['sessionInTransitMessageCountMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a53e4ea34fef452476a41ab0da78798a6',1,'FFmpegKitConfig.cpp']]], + ['sessionmap_1306',['sessionMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7ac6ebfd0f3870da834f75c028660b79',1,'FFmpegKitConfig.cpp']]], + ['sessionmutex_1307',['sessionMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a5e72e0487e678b8e5bd78285460f1ae2',1,'FFmpegKitConfig.cpp']]], + ['sessionstate_1308',['SessionState',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8f',1,'ffmpegkit']]], + ['sessionstate_2eh_1309',['SessionState.h',['../df/d13/_session_state_8h.html',1,'']]], + ['sessionstatecompleted_1310',['SessionStateCompleted',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fae395077a2a757c691699536f02cc264f',1,'ffmpegkit']]], + ['sessionstatecreated_1311',['SessionStateCreated',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8faa2b60da11090d170819db698df90f4a2',1,'ffmpegkit']]], + ['sessionstatefailed_1312',['SessionStateFailed',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fa4e355211ff575fe9e53b5cac1989473e',1,'ffmpegkit']]], + ['sessionstaterunning_1313',['SessionStateRunning',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fa384cde9cd29cfe4e94fb4b8f5d3719c1',1,'ffmpegkit']]], + ['sessionstatetostring_1314',['sessionStateToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ac5f8efcf9ed49fa0ba29819c3ea3489e',1,'ffmpegkit::FFmpegKitConfig']]], + ['set_5fdict_1315',['SET_DICT',['../da/d66/fftools__ffmpeg__opt_8c.html#a0116f637ab1a81dd3079aaba28d280eb',1,'fftools_ffmpeg_opt.c']]], + ['set_5fdo_5fshow_1316',['SET_DO_SHOW',['../d8/d78/fftools__ffprobe_8c.html#a9c3593df862d13354794209c1e423966',1,'fftools_ffprobe.c']]], + ['set_5fencoder_5fid_1317',['set_encoder_id',['../d7/d48/fftools__ffmpeg_8c.html#a861b24f5520382037a477a313641b1cf',1,'fftools_ffmpeg.c']]], + ['set_5freport_5fcallback_1318',['set_report_callback',['../d7/d48/fftools__ffmpeg_8c.html#a4dd17285e4049bfb915b75d39ff9971e',1,'set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double)): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4dd17285e4049bfb915b75d39ff9971e',1,'set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double)): fftools_ffmpeg.c']]], + ['set_5ftty_5fecho_1319',['set_tty_echo',['../d7/d48/fftools__ffmpeg_8c.html#a12f098a569b8925e9a2bc92aba7bae96',1,'fftools_ffmpeg.c']]], + ['setenvironmentvariable_1320',['setEnvironmentVariable',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a7cb6aee82f88285debb3e4d9e84e27a5',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontconfigconfigurationpath_1321',['setFontconfigConfigurationPath',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ad720fc314fc5e1f76a44c1fa84b32502',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontdirectory_1322',['setFontDirectory',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa689f44d8d82b47a84bd5ef255123524',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontdirectorylist_1323',['setFontDirectoryList',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#adae003c1060e0adbe24f8f50859e9bd9',1,'ffmpegkit::FFmpegKitConfig']]], + ['setloglevel_1324',['setLogLevel',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa5b9e278c61dfa54d14fd34b35782cd8',1,'ffmpegkit::FFmpegKitConfig']]], + ['setlogredirectionstrategy_1325',['setLogRedirectionStrategy',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a79c409a7341213cbd3e19c51da962748',1,'ffmpegkit::FFmpegKitConfig']]], + ['setmediainformation_1326',['setMediaInformation',['../df/db7/classffmpegkit_1_1_media_information_session.html#aa44504230bc7f3b8983a238a64b49775',1,'ffmpegkit::MediaInformationSession']]], + ['setsessionhistorysize_1327',['setSessionHistorySize',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a9938ad34e545fb78ba5ae502c05e05b2',1,'ffmpegkit::FFmpegKitConfig']]], + ['setup_5ffind_5fstream_5finfo_5fopts_1328',['setup_find_stream_info_opts',['../d7/dcc/fftools__cmdutils_8c.html#a6246f47f8e3ef9a3e99e5d1457c7d197',1,'setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6246f47f8e3ef9a3e99e5d1457c7d197',1,'setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts): fftools_cmdutils.c']]], + ['shortest_1329',['shortest',['../df/d77/struct_options_context.html#ae2d67d4b8daf3a4900bef1db8882b163',1,'OptionsContext::shortest()'],['../de/df2/struct_output_file.html#acfef99893985d28ae7f7f6a92e6d1bd7',1,'OutputFile::shortest()']]], + ['show_5fall_5fentries_1330',['show_all_entries',['../d9/d11/structsection.html#a19d0aa8f9d7128239086ceb8212ee518',1,'section']]], + ['show_5fbanner_1331',['show_banner',['../d7/dcc/fftools__cmdutils_8c.html#a976c7dc9afeb4b0f6ec009a7a084e701',1,'show_banner(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701',1,'show_banner(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c']]], + ['show_5fbsfs_1332',['show_bsfs',['../d7/dcc/fftools__cmdutils_8c.html#a53fb409434bc59eeabbfc52f67a1c641',1,'show_bsfs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a53fb409434bc59eeabbfc52f67a1c641',1,'show_bsfs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fbuildconf_1333',['show_buildconf',['../d7/dcc/fftools__cmdutils_8c.html#a9f7a57bae796faca3c46ba0894f0b7bf',1,'show_buildconf(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf',1,'show_buildconf(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fchapters_1334',['show_chapters',['../d8/d78/fftools__ffprobe_8c.html#af6912c431c5c74bce83c3f2ddb4ba407',1,'fftools_ffprobe.c']]], + ['show_5fcodecs_1335',['show_codecs',['../d7/dcc/fftools__cmdutils_8c.html#a9d32ed47a0ec2bdf5a11b9ec477af632',1,'show_codecs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632',1,'show_codecs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fcolors_1336',['show_colors',['../d7/dcc/fftools__cmdutils_8c.html#aed7606e2d2a9218a50ecbbc75a76aab7',1,'show_colors(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7',1,'show_colors(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fconfig_1337',['SHOW_CONFIG',['../d7/dcc/fftools__cmdutils_8c.html#a348446b4b7f51ff008d04c9c6a4a6e0b',1,'fftools_cmdutils.c']]], + ['show_5fcopyright_1338',['SHOW_COPYRIGHT',['../d7/dcc/fftools__cmdutils_8c.html#abd0ec713b97008fc3cf59d1e62f8d414',1,'fftools_cmdutils.c']]], + ['show_5fdata_5fhash_1339',['show_data_hash',['../d8/d78/fftools__ffprobe_8c.html#a454d7e55cf5de7faad0b735f68e0bc61',1,'fftools_ffprobe.c']]], + ['show_5fdecoders_1340',['show_decoders',['../d7/dcc/fftools__cmdutils_8c.html#a051c87d97a1dfd644a97f965dfaa18dc',1,'show_decoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a051c87d97a1dfd644a97f965dfaa18dc',1,'show_decoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fdefault_1341',['SHOW_DEFAULT',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeaeeb1148063806a7a85366e9b1921b984',1,'fftools_cmdutils.c']]], + ['show_5fdemuxers_1342',['show_demuxers',['../d7/dcc/fftools__cmdutils_8c.html#af99b4b78c2355c81ff66ae146b92bc7b',1,'show_demuxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#af99b4b78c2355c81ff66ae146b92bc7b',1,'show_demuxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeaf3c0cb36f3000f24e0a1bfa6babd475b',1,'SHOW_DEMUXERS(): fftools_cmdutils.c']]], + ['show_5fdevices_1343',['show_devices',['../d7/dcc/fftools__cmdutils_8c.html#aaf26a4937c16d8b7cb22a6542ebb46a5',1,'show_devices(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5',1,'show_devices(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fencoders_1344',['show_encoders',['../d7/dcc/fftools__cmdutils_8c.html#a7271f609adb83bed31f8ef0eb8ee2b79',1,'show_encoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79',1,'show_encoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5ferror_1345',['show_error',['../d8/d78/fftools__ffprobe_8c.html#a58566dc96e5f78ee644a357be290721c',1,'fftools_ffprobe.c']]], + ['show_5ffilters_1346',['show_filters',['../d7/dcc/fftools__cmdutils_8c.html#a2cad88ee81ff905e2309375818c89020',1,'show_filters(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a2cad88ee81ff905e2309375818c89020',1,'show_filters(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fformat_1347',['show_format',['../d8/d78/fftools__ffprobe_8c.html#a9008ead641eac60c907a92bd4777c004',1,'fftools_ffprobe.c']]], + ['show_5fformats_1348',['show_formats',['../d7/dcc/fftools__cmdutils_8c.html#ac64f66a36c4ca887741fe28475a99b01',1,'show_formats(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ac64f66a36c4ca887741fe28475a99b01',1,'show_formats(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fformats_5fdevices_1349',['show_formats_devices',['../d7/dcc/fftools__cmdutils_8c.html#aaa2a298d176efd261eff7ab69544e3c1',1,'fftools_cmdutils.c']]], + ['show_5fframe_1350',['show_frame',['../d8/d78/fftools__ffprobe_8c.html#a3419ed5491473c016f58fb364c86ee57',1,'fftools_ffprobe.c']]], + ['show_5fhelp_1351',['show_help',['../d7/dcc/fftools__cmdutils_8c.html#a0ff9db0d178a0397441c0269cea9e48a',1,'show_help(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0ff9db0d178a0397441c0269cea9e48a',1,'show_help(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fhelp_5fbsf_1352',['show_help_bsf',['../d7/dcc/fftools__cmdutils_8c.html#a1b212a540413b4bc35b1890d820c09bd',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fchildren_1353',['show_help_children',['../d7/dcc/fftools__cmdutils_8c.html#afcfb53678ed4b7414cab4aa77ab6b9b7',1,'show_help_children(const AVClass *avClass, int flags): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#afcfb53678ed4b7414cab4aa77ab6b9b7',1,'show_help_children(const AVClass *avClass, int flags): fftools_cmdutils.c']]], + ['show_5fhelp_5fcodec_1354',['show_help_codec',['../d7/dcc/fftools__cmdutils_8c.html#a293203f7329cb121372ad2b25bf4a469',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fdefault_5fffmpeg_1355',['show_help_default_ffmpeg',['../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f',1,'show_help_default_ffmpeg(const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aefe49155ac108fa47eee131a07fd856f',1,'show_help_default_ffmpeg(const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['show_5fhelp_5fdefault_5fffprobe_1356',['show_help_default_ffprobe',['../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e',1,'show_help_default_ffprobe(const char *opt, const char *arg): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#acbabca98e694fea5c1b539b475e8cc6e',1,'show_help_default_ffprobe(const char *opt, const char *arg): fftools_ffprobe.c']]], + ['show_5fhelp_5fdemuxer_1357',['show_help_demuxer',['../d7/dcc/fftools__cmdutils_8c.html#a2dc49c905db1728061191263171c85a6',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fmuxer_1358',['show_help_muxer',['../d7/dcc/fftools__cmdutils_8c.html#a97ca920c0d7e3e23447ac571d9387730',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5foptions_1359',['show_help_options',['../d7/dcc/fftools__cmdutils_8c.html#a13fba56a5674556e879f5733f9b1dd55',1,'show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55',1,'show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags): fftools_cmdutils.c']]], + ['show_5fhelp_5fprotocol_1360',['show_help_protocol',['../d7/dcc/fftools__cmdutils_8c.html#a833f8e0860472a33496c5343a8b39638',1,'fftools_cmdutils.c']]], + ['show_5fhwaccels_1361',['show_hwaccels',['../d7/d48/fftools__ffmpeg_8c.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['show_5flayouts_1362',['show_layouts',['../d7/dcc/fftools__cmdutils_8c.html#a6fea7aab2873df1439a71f12e0f1afd8',1,'show_layouts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6fea7aab2873df1439a71f12e0f1afd8',1,'show_layouts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5flib_5fversion_1363',['SHOW_LIB_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a16e228e4fdb113e965dea1e72c179f1c',1,'fftools_ffprobe.c']]], + ['show_5flicense_1364',['show_license',['../d7/dcc/fftools__cmdutils_8c.html#a9ac5f2397cd42cd32e4b3cb199739b35',1,'show_license(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35',1,'show_license(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5flog_1365',['show_log',['../d8/d78/fftools__ffprobe_8c.html#a9cb5a5dfc17ddb950501a01d1a9876d1',1,'fftools_ffprobe.c']]], + ['show_5fmuxdemuxers_1366',['show_muxdemuxers',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755ade',1,'fftools_cmdutils.c']]], + ['show_5fmuxers_1367',['show_muxers',['../d7/dcc/fftools__cmdutils_8c.html#a4c35b5b42d01e850824bc0af1016e71f',1,'show_muxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4c35b5b42d01e850824bc0af1016e71f',1,'show_muxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeafef841d0a183fe1a1af343725defda34',1,'SHOW_MUXERS(): fftools_cmdutils.c']]], + ['show_5foptional_5ffields_1368',['show_optional_fields',['../d8/d78/fftools__ffprobe_8c.html#ae7dd9fc2d0b5d24a9a95c4c97c9c2222',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5falways_1369',['SHOW_OPTIONAL_FIELDS_ALWAYS',['../d8/d78/fftools__ffprobe_8c.html#ade3ed491fed4531b440d871e0dff4bde',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5fauto_1370',['SHOW_OPTIONAL_FIELDS_AUTO',['../d8/d78/fftools__ffprobe_8c.html#a2c7ac0254fa058475012d6f1450a3782',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5fnever_1371',['SHOW_OPTIONAL_FIELDS_NEVER',['../d8/d78/fftools__ffprobe_8c.html#affaaa0eef7838fc760516ae079cd7e74',1,'fftools_ffprobe.c']]], + ['show_5fpacket_1372',['show_packet',['../d8/d78/fftools__ffprobe_8c.html#af6af4a54afc670e0607a0da059fe8daa',1,'fftools_ffprobe.c']]], + ['show_5fpix_5ffmts_1373',['show_pix_fmts',['../d7/dcc/fftools__cmdutils_8c.html#af34c982b84b7c76d45edc5a7715a4fed',1,'show_pix_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#af34c982b84b7c76d45edc5a7715a4fed',1,'show_pix_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fprivate_5fdata_1374',['show_private_data',['../d8/d78/fftools__ffprobe_8c.html#a8eaf692f904fdf199ae0ebe0f19613e6',1,'fftools_ffprobe.c']]], + ['show_5fprogram_1375',['show_program',['../d8/d78/fftools__ffprobe_8c.html#a25821f092045a6f2dfc700497763ba89',1,'fftools_ffprobe.c']]], + ['show_5fprograms_1376',['show_programs',['../d8/d78/fftools__ffprobe_8c.html#ada0a8b59db2597b60004dc59898b7ae1',1,'fftools_ffprobe.c']]], + ['show_5fprotocols_1377',['show_protocols',['../d7/dcc/fftools__cmdutils_8c.html#addb6306dc020aa290075bed9b1f42a3a',1,'show_protocols(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#addb6306dc020aa290075bed9b1f42a3a',1,'show_protocols(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fsample_5ffmts_1378',['show_sample_fmts',['../d7/dcc/fftools__cmdutils_8c.html#a3359dc295afcfd0ee6f592dd37f03080',1,'show_sample_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a3359dc295afcfd0ee6f592dd37f03080',1,'show_sample_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fstream_1379',['show_stream',['../d8/d78/fftools__ffprobe_8c.html#ab7837239b3246d61dba00525fb4eb764',1,'fftools_ffprobe.c']]], + ['show_5fstreams_1380',['show_streams',['../d8/d78/fftools__ffprobe_8c.html#a5680e712ead5f447314b5e625b048beb',1,'fftools_ffprobe.c']]], + ['show_5fsubtitle_1381',['show_subtitle',['../d8/d78/fftools__ffprobe_8c.html#a20cde645b3a859bb60164167d8b2a1c8',1,'fftools_ffprobe.c']]], + ['show_5ftags_1382',['show_tags',['../d8/d78/fftools__ffprobe_8c.html#ab426fcc8ce712c547967f5b77ee73fc7',1,'fftools_ffprobe.c']]], + ['show_5fusage_1383',['show_usage',['../d7/db3/fftools__ffmpeg_8h.html#a5ca4ba3ead2e600e7a6bada7396a5e4d',1,'show_usage(void): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5ca4ba3ead2e600e7a6bada7396a5e4d',1,'show_usage(void): fftools_ffmpeg_opt.c'],['../d8/d78/fftools__ffprobe_8c.html#a017a6f5b075277289cca0b4158a0b7a6',1,'show_usage(void): fftools_ffprobe.c']]], + ['show_5fvalue_5funit_1384',['show_value_unit',['../d8/d78/fftools__ffprobe_8c.html#aa358f32c4225e2f89e6001798b6da3f1',1,'fftools_ffprobe.c']]], + ['show_5fversion_1385',['SHOW_VERSION',['../d7/dcc/fftools__cmdutils_8c.html#a49df5947a3d9f779aa05b8d55aa09e06',1,'SHOW_VERSION(): fftools_cmdutils.c'],['../d7/dcc/fftools__cmdutils_8c.html#a79c0ae205603f7f83f15171ba3413f26',1,'show_version(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a79c0ae205603f7f83f15171ba3413f26',1,'show_version(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['si_5fprefixes_1386',['si_prefixes',['../d8/d78/fftools__ffprobe_8c.html#aa5019d8f947a814648461266ef1a5476',1,'fftools_ffprobe.c']]], + ['signal_1387',['SIGNAL',['../d7/d48/fftools__ffmpeg_8c.html#a8d2175ad5ec10cdaff3fd386b27eeebf',1,'SIGNAL(): fftools_ffmpeg.c'],['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2',1,'ffmpegkit::Signal()']]], + ['signal_2eh_1388',['Signal.h',['../d5/dce/_signal_8h.html',1,'']]], + ['signalint_1389',['SignalInt',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a5b4b088da6cf903093a8d7789cee04f9',1,'ffmpegkit']]], + ['signalpipe_1390',['SignalPipe',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2ae1349a4dbeee5769723ceb0b6ce0efee',1,'ffmpegkit']]], + ['signalquit_1391',['SignalQuit',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a45dced6df666a601d492885399b63a82',1,'ffmpegkit']]], + ['signalterm_1392',['SignalTerm',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a7a9761ba37058f9235355143ef34deaa',1,'ffmpegkit']]], + ['signalxcpu_1393',['SignalXcpu',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a253eff2aef02dedda7967818ea2f0639',1,'ffmpegkit']]], + ['sigterm_5fhandler_1394',['sigterm_handler',['../d7/d48/fftools__ffmpeg_8c.html#af80faacdb2157777c247deee29765d79',1,'fftools_ffmpeg.c']]], + ['source_5findex_1395',['source_index',['../db/dde/struct_output_stream.html#a2a77c9bd86203478143c85e26e67df3d',1,'OutputStream']]], + ['specifier_1396',['specifier',['../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81',1,'SpecifierOpt']]], + ['specifier_5fopt_5ffmt_5fdbl_1397',['SPECIFIER_OPT_FMT_dbl',['../da/d66/fftools__ffmpeg__opt_8c.html#a5b3cf8984eccd7698241ded4b9831d9a',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5ff_1398',['SPECIFIER_OPT_FMT_f',['../da/d66/fftools__ffmpeg__opt_8c.html#a1d7b961f27b365f8a55021c37c3ae42b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fi_1399',['SPECIFIER_OPT_FMT_i',['../da/d66/fftools__ffmpeg__opt_8c.html#ab53f2d7a3313a58027a14edbb6b3371b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fi64_1400',['SPECIFIER_OPT_FMT_i64',['../da/d66/fftools__ffmpeg__opt_8c.html#a55e9ec369c28568761890322f01f0fc9',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fstr_1401',['SPECIFIER_OPT_FMT_str',['../da/d66/fftools__ffmpeg__opt_8c.html#a05dcbce260f33ed79d9e12b29df5c81b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fui64_1402',['SPECIFIER_OPT_FMT_ui64',['../da/d66/fftools__ffmpeg__opt_8c.html#affa82eeddb5b77ea255732edc8cacda2',1,'fftools_ffmpeg_opt.c']]], + ['specifieropt_1403',['SpecifierOpt',['../dd/da5/struct_specifier_opt.html',1,'SpecifierOpt'],['../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a',1,'SpecifierOpt(): fftools_cmdutils.h']]], + ['split_5fcommandline_1404',['split_commandline',['../d7/dcc/fftools__cmdutils_8c.html#a8dbe23ab7c8099a82806ae9beb9d4306',1,'split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306',1,'split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups): fftools_cmdutils.c']]], + ['st_1405',['st',['../d3/d6e/struct_input_stream.html#acf438e2a33238676cb3f68b39ae18049',1,'InputStream::st()'],['../db/dde/struct_output_stream.html#ac11510a2eeed3e6a14f0fbc85db2e088',1,'OutputStream::st()']]], + ['start_1406',['start',['../d3/d6e/struct_input_stream.html#a6718f5f7b2206b2848af5e35ae3a9186',1,'InputStream::start()'],['../d8/dee/struct_read_interval.html#a5b03e4fa1bae4e8fcc11c8d07076b07a',1,'ReadInterval::start()']]], + ['start_5fat_5fzero_1407',['start_at_zero',['../d7/db3/fftools__ffmpeg_8h.html#a9133815d152568ea1d45114b7866253a',1,'start_at_zero(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9133815d152568ea1d45114b7866253a',1,'start_at_zero(): fftools_ffmpeg_opt.c']]], + ['start_5fis_5foffset_1408',['start_is_offset',['../d8/dee/struct_read_interval.html#af0ab0e88c32d4fc333a3561b9bca21f9',1,'ReadInterval']]], + ['start_5ftime_1409',['start_time',['../df/d77/struct_options_context.html#a279a94fdf145188a7999ec4620fa83d6',1,'OptionsContext::start_time()'],['../d8/d99/struct_input_file.html#af29c0dd6f71cb1454c23abebca06f604',1,'InputFile::start_time()'],['../de/df2/struct_output_file.html#aa4fee66db612c26276b5de30d834d5e0',1,'OutputFile::start_time()']]], + ['start_5ftime_5feof_1410',['start_time_eof',['../df/d77/struct_options_context.html#a91cbd517481a882c0e2ae831e40b1585',1,'OptionsContext']]], + ['startrunning_1411',['startRunning',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a8f6474fffd31aab725847249432bf659',1,'ffmpegkit::AbstractSession::startRunning()'],['../d5/d0e/classffmpegkit_1_1_session.html#aae1197238a848be3de55c3d38a070ebd',1,'ffmpegkit::Session::startRunning()']]], + ['statistics_1412',['Statistics',['../d0/de7/classffmpegkit_1_1_statistics.html',1,'ffmpegkit::Statistics'],['../d0/de7/classffmpegkit_1_1_statistics.html#ab653f8e5f02fb4c175d7cb61ebdeeb25',1,'ffmpegkit::Statistics::Statistics()']]], + ['statistics_2ecpp_1413',['Statistics.cpp',['../d3/d3f/_statistics_8cpp.html',1,'']]], + ['statistics_2eh_1414',['Statistics.h',['../da/df2/_statistics_8h.html',1,'']]], + ['statisticscallback_1415',['statisticsCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a94447b62a78f7c737729ced2596527d2',1,'statisticsCallback(): FFmpegKitConfig.cpp'],['../d2/d25/namespaceffmpegkit.html#a250a65ad52e13fa88362845eb4b848ef',1,'ffmpegkit::StatisticsCallback()']]], + ['statisticscallback_2eh_1416',['StatisticsCallback.h',['../d6/df1/_statistics_callback_8h.html',1,'']]], + ['statisticscallbackdataadd_1417',['statisticsCallbackDataAdd',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1a397886b2afb9c740d5d7321eeee19d',1,'FFmpegKitConfig.cpp']]], + ['statisticstype_1418',['StatisticsType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318ae6b6c0f8a115b1b9552df5bd5ad0936a',1,'FFmpegKitConfig.cpp']]], + ['stats_5fperiod_1419',['stats_period',['../d7/db3/fftools__ffmpeg_8h.html#a18d8c3bcec71d962707be76f1bb8f05e',1,'stats_period(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a18d8c3bcec71d962707be76f1bb8f05e',1,'stats_period(): fftools_ffmpeg_opt.c']]], + ['stdin_5finteraction_1420',['stdin_interaction',['../d7/db3/fftools__ffmpeg_8h.html#a48480a652b5966f72dc167d6bb44b061',1,'stdin_interaction(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a48480a652b5966f72dc167d6bb44b061',1,'stdin_interaction(): fftools_ffmpeg_opt.c']]], + ['stop_5ftime_1421',['stop_time',['../df/d77/struct_options_context.html#ac73bbf437507775263f8ea53b17f05c6',1,'OptionsContext']]], + ['str_1422',['str',['../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4',1,'SpecifierOpt']]], + ['stream_5fcopy_1423',['stream_copy',['../db/dde/struct_output_stream.html#a9ac0b71747fe93f498224dacf1b0b674',1,'OutputStream']]], + ['stream_5fidx_1424',['stream_idx',['../d6/d2c/struct_audio_channel_map.html#a32f90014a8e83a47c8ef3893bc1c100e',1,'AudioChannelMap']]], + ['stream_5findex_1425',['stream_index',['../db/d60/struct_stream_map.html#a2982108d57751e19c308fe338361b066',1,'StreamMap']]], + ['stream_5fmaps_1426',['stream_maps',['../df/d77/struct_options_context.html#a4675becf36ed5d3e6510b3e9c9ac4d77',1,'OptionsContext']]], + ['stream_5fspecifier_1427',['stream_specifier',['../d8/d78/fftools__ffprobe_8c.html#a5082290e1ad8a823c88862ddae6d135c',1,'fftools_ffprobe.c']]], + ['streamid_5fmap_1428',['streamid_map',['../df/d77/struct_options_context.html#a9c7cad5690796e35bc68e5a931cee22c',1,'OptionsContext']]], + ['streaminformation_1429',['StreamInformation',['../d7/d9e/classffmpegkit_1_1_stream_information.html',1,'ffmpegkit::StreamInformation'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ae8a0202dcf4e9347116a0755d9654bbc',1,'ffmpegkit::StreamInformation::StreamInformation()']]], + ['streaminformation_2ecpp_1430',['StreamInformation.cpp',['../d7/d2d/_stream_information_8cpp.html',1,'']]], + ['streaminformation_2eh_1431',['StreamInformation.h',['../d4/df4/_stream_information_8h.html',1,'']]], + ['streammap_1432',['StreamMap',['../db/d60/struct_stream_map.html',1,'StreamMap'],['../d7/db3/fftools__ffmpeg_8h.html#ab186ed6c2bbe1ddb9f0da92e20d05018',1,'StreamMap(): fftools_ffmpeg.h']]], + ['streams_1433',['streams',['../d8/d99/struct_input_file.html#a2253004c4ad8d6cb3256821c656bcf19',1,'InputFile']]], + ['string_5fvalidation_1434',['string_validation',['../d1/da2/struct_writer_context.html#ae4d434ae00d70b9f03be447b7c8fc02b',1,'WriterContext']]], + ['string_5fvalidation_5freplacement_1435',['string_validation_replacement',['../d1/da2/struct_writer_context.html#a347ccaf7bdb45104accb665cab1b093f',1,'WriterContext']]], + ['string_5fvalidation_5futf8_5fflags_1436',['string_validation_utf8_flags',['../d1/da2/struct_writer_context.html#ac2b79828ee0384f432182d1a03bf0083',1,'WriterContext']]], + ['stringvalidation_1437',['StringValidation',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6b',1,'fftools_ffprobe.c']]], + ['strip_5fspecifiers_1438',['strip_specifiers',['../d7/db3/fftools__ffmpeg_8h.html#ab1f22665dffd8f63fb4f4bce3a1b5b6c',1,'strip_specifiers(AVDictionary *dict): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab1f22665dffd8f63fb4f4bce3a1b5b6c',1,'strip_specifiers(AVDictionary *dict): fftools_ffmpeg_opt.c']]], + ['sub2video_1439',['sub2video',['../d4/dfd/struct_input_stream_1_1sub2video.html',1,'InputStream::sub2video'],['../d3/d6e/struct_input_stream.html#acc9fee6e45ff302a2c1a06a053cbaa22',1,'InputStream::sub2video()']]], + ['sub2video_5fcopy_5frect_1440',['sub2video_copy_rect',['../d7/d48/fftools__ffmpeg_8c.html#aa2e51f604857d33adbb56b536f4d7718',1,'fftools_ffmpeg.c']]], + ['sub2video_5fflush_1441',['sub2video_flush',['../d7/d48/fftools__ffmpeg_8c.html#aa1b7dcf7df1f398b1e33d121695b79c7',1,'fftools_ffmpeg.c']]], + ['sub2video_5fget_5fblank_5fframe_1442',['sub2video_get_blank_frame',['../d7/d48/fftools__ffmpeg_8c.html#adf36095ece065987e766e291e863f0d6',1,'fftools_ffmpeg.c']]], + ['sub2video_5fheartbeat_1443',['sub2video_heartbeat',['../d7/d48/fftools__ffmpeg_8c.html#a738eb950f81407f6fd85fee223606fd4',1,'fftools_ffmpeg.c']]], + ['sub2video_5fprepare_1444',['sub2video_prepare',['../d2/d36/fftools__ffmpeg__filter_8c.html#a175b3d698e81a2781fddebdbf7209d8f',1,'fftools_ffmpeg_filter.c']]], + ['sub2video_5fpush_5fref_1445',['sub2video_push_ref',['../d7/d48/fftools__ffmpeg_8c.html#a2c1506f84f74e9af9fabdf8cc1f86b89',1,'fftools_ffmpeg.c']]], + ['sub2video_5fupdate_1446',['sub2video_update',['../d7/d48/fftools__ffmpeg_8c.html#a8d9e8224d0a2f354635fcaacce63acd4',1,'sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8d9e8224d0a2f354635fcaacce63acd4',1,'sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub): fftools_ffmpeg.c']]], + ['sub_5fqueue_1447',['sub_queue',['../d4/dfd/struct_input_stream_1_1sub2video.html#ad2b2360342940822238e5ba6c1f48718',1,'InputStream::sub2video']]], + ['subtitle_1448',['subtitle',['../d3/d6e/struct_input_stream.html#ae37fb0410a65c6b2e5a38614f4481f07',1,'InputStream']]], + ['subtitle_5fdisable_1449',['subtitle_disable',['../df/d77/struct_options_context.html#af54b258dc24371896f1278cc2652472e',1,'OptionsContext']]], + ['subtitle_5fout_1450',['subtitle_out',['../d7/d48/fftools__ffmpeg_8c.html#ade129f2073eabef96dbc06850238cef6',1,'fftools_ffmpeg.c']]], + ['success_1451',['Success',['../d4/dcf/classffmpegkit_1_1_return_code.html#a4c6517c8495a3ee52afd849a77440105',1,'ffmpegkit::ReturnCode']]], + ['swr_5fopts_1452',['swr_opts',['../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d',1,'OptionGroup::swr_opts()'],['../db/dde/struct_output_stream.html#a0c7606649d3fd916e9eaf19e12fd92c7',1,'OutputStream::swr_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a011fa5c3ecc237f646a56085659f53f3',1,'swr_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3',1,'swr_opts(): fftools_cmdutils.c']]], + ['sws_5fdict_1453',['sws_dict',['../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b',1,'OptionGroup::sws_dict()'],['../db/dde/struct_output_stream.html#ad55eb675077dc7b468f15f02a03ded5a',1,'OutputStream::sws_dict()'],['../d7/dcc/fftools__cmdutils_8c.html#a8c8028bff4ba308f54869748db9f692d',1,'sws_dict(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d',1,'sws_dict(): fftools_cmdutils.c']]], + ['sws_5fissupportedinput_1454',['sws_isSupportedInput',['../d7/dcc/fftools__cmdutils_8c.html#af9e1a5468e1c3cc5eaf3d3a7ce599455',1,'fftools_cmdutils.c']]], + ['sws_5fissupportedoutput_1455',['sws_isSupportedOutput',['../d7/dcc/fftools__cmdutils_8c.html#ad561d6413e65da885fb1e7a90da4f0c2',1,'fftools_cmdutils.c']]], + ['sync_5ffile_5findex_1456',['sync_file_index',['../db/d60/struct_stream_map.html#aebf79dd4732117dab9f6b88ffe0d6fb0',1,'StreamMap']]], + ['sync_5fist_1457',['sync_ist',['../db/dde/struct_output_stream.html#abc0329cada4c47662e2777d392a38efb',1,'OutputStream']]], + ['sync_5fopts_1458',['sync_opts',['../db/dde/struct_output_stream.html#a50f00c2ce0091c940779ac59227ad934',1,'OutputStream']]], + ['sync_5fstream_5findex_1459',['sync_stream_index',['../db/d60/struct_stream_map.html#a8839b093e6e8ae59892cfe68d9dc99c6',1,'StreamMap']]], + ['sys_5fusec_1460',['sys_usec',['../d5/d8e/struct_benchmark_time_stamps.html#a06a44cae9b837e8481ba86a648cbcc95',1,'BenchmarkTimeStamps']]] +]; diff --git a/docs/linux/html/search/all_14.html b/docs/linux/html/search/all_14.html new file mode 100644 index 0000000..72d12e9 --- /dev/null +++ b/docs/linux/html/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_14.js b/docs/linux/html/search/all_14.js new file mode 100644 index 0000000..f019e37 --- /dev/null +++ b/docs/linux/html/search/all_14.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['term_5fexit_1461',['term_exit',['../d7/d48/fftools__ffmpeg_8c.html#a19c97d7729be97389faaf4aaac8c3e88',1,'term_exit(void): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a19c97d7729be97389faaf4aaac8c3e88',1,'term_exit(void): fftools_ffmpeg.c']]], + ['term_5fexit_5fsigsafe_1462',['term_exit_sigsafe',['../d7/d48/fftools__ffmpeg_8c.html#a9ff329d05aff252a944b937bb80d16e1',1,'fftools_ffmpeg.c']]], + ['term_5finit_1463',['term_init',['../d7/d48/fftools__ffmpeg_8c.html#ac7072b9c76dd77ce9900197d0133b0ba',1,'term_init(void): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac7072b9c76dd77ce9900197d0133b0ba',1,'term_init(void): fftools_ffmpeg.c']]], + ['terminate_5fline_1464',['terminate_line',['../d2/ddd/struct_compact_context.html#a14c571b1a684a9d550b5649fcbaa93f8',1,'CompactContext']]], + ['thereareasynchronousmessagesintransmit_1465',['thereAreAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ac9a016f249e55408155bc4961329e788',1,'ffmpegkit::AbstractSession::thereAreAsynchronousMessagesInTransmit()'],['../d5/d0e/classffmpegkit_1_1_session.html#a336e447eeb089650b5d31cb655e1e74f',1,'ffmpegkit::Session::thereAreAsynchronousMessagesInTransmit()']]], + ['thread_5fqueue_5fsize_1466',['thread_queue_size',['../df/d77/struct_options_context.html#a937b3c7359909e3119e2c2e293f6d484',1,'OptionsContext']]], + ['time_5fbase_1467',['time_base',['../d8/d99/struct_input_file.html#a6b5d8ebb8e444603bd2c35f683b2790b',1,'InputFile']]], + ['time_5fbases_1468',['time_bases',['../df/d77/struct_options_context.html#ae02058128d0e80f1bdb47dfaa4480264',1,'OptionsContext']]], + ['top_5ffield_5ffirst_1469',['top_field_first',['../df/d77/struct_options_context.html#aaffc2f112ebe3fe324aa61e61c5388b6',1,'OptionsContext::top_field_first()'],['../d3/d6e/struct_input_stream.html#abc71c343e0ade7e102adb45badfc6243',1,'InputStream::top_field_first()'],['../db/dde/struct_output_stream.html#a236bf5647b00c43936bda537db39ec26',1,'OutputStream::top_field_first()']]], + ['transcode_1470',['transcode',['../d7/d48/fftools__ffmpeg_8c.html#a0bbbd61fe097505cf12be11e60f07ca8',1,'fftools_ffmpeg.c']]], + ['transcode_5ffrom_5ffilter_1471',['transcode_from_filter',['../d7/d48/fftools__ffmpeg_8c.html#a38de3252b4bb6ea13e22238efe42c015',1,'fftools_ffmpeg.c']]], + ['transcode_5finit_1472',['transcode_init',['../d7/d48/fftools__ffmpeg_8c.html#aa4af1fda1a5fc33ec74e4ae2c0dbc122',1,'fftools_ffmpeg.c']]], + ['transcode_5finit_5fdone_1473',['transcode_init_done',['../d7/d48/fftools__ffmpeg_8c.html#a72854b6777d538ea0fb18d2552741072',1,'fftools_ffmpeg.c']]], + ['transcode_5fstep_1474',['transcode_step',['../d7/d48/fftools__ffmpeg_8c.html#abd1ff9b1a508070a11a26c9c3f3f455b',1,'fftools_ffmpeg.c']]], + ['transcode_5fsubtitles_1475',['transcode_subtitles',['../d7/d48/fftools__ffmpeg_8c.html#a0c4f43b9ed5f99a30210c6ef7191a89e',1,'fftools_ffmpeg.c']]], + ['ts_5foffset_1476',['ts_offset',['../d8/d99/struct_input_file.html#a098fa89f90be39e95d5e42041e8cebfb',1,'InputFile']]], + ['ts_5fscale_1477',['ts_scale',['../df/d77/struct_options_context.html#ae68be6f99547b37890753351e7a41b10',1,'OptionsContext::ts_scale()'],['../d3/d6e/struct_input_stream.html#a0dae26daa277d99147113de4ea449bc1',1,'InputStream::ts_scale()']]], + ['type_1478',['type',['../de/dc7/struct_h_w_device.html#ad5294ac2b414deacbe2aac7b9c8ba987',1,'HWDevice::type()'],['../d7/d0c/struct_input_filter.html#aa033b48aa4612dc26aa8e66e83f932bc',1,'InputFilter::type()'],['../d0/d0f/struct_output_filter.html#aed4c46a5df26ff71f3f718a0056af294',1,'OutputFilter::type()']]] +]; diff --git a/docs/linux/html/search/all_15.html b/docs/linux/html/search/all_15.html new file mode 100644 index 0000000..767aec3 --- /dev/null +++ b/docs/linux/html/search/all_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_15.js b/docs/linux/html/search/all_15.js new file mode 100644 index 0000000..730f0bf --- /dev/null +++ b/docs/linux/html/search/all_15.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['u_1479',['u',['../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521',1,'SpecifierOpt::u()'],['../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212',1,'OptionDef::u()']]], + ['ui64_1480',['ui64',['../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d',1,'SpecifierOpt']]], + ['unavailable_1481',['unavailable',['../db/dde/struct_output_stream.html#a4f86ebf7f573017f4010e2ccd07ffa65',1,'OutputStream']]], + ['uninit_1482',['uninit',['../d6/dff/struct_writer.html#adfa6b21c67d1c8eafd448cfd1f1b644a',1,'Writer']]], + ['uninit_5foptions_1483',['uninit_options',['../d7/db3/fftools__ffmpeg_8h.html#a02e475f4040b6a0cb4236447d9263e00',1,'uninit_options(OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a02e475f4040b6a0cb4236447d9263e00',1,'uninit_options(OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['uninit_5fopts_1484',['uninit_opts',['../d7/dcc/fftools__cmdutils_8c.html#ac58552bde3a215ae94a3bd114577cbee',1,'uninit_opts(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee',1,'uninit_opts(void): fftools_cmdutils.c']]], + ['uninit_5fparse_5fcontext_1485',['uninit_parse_context',['../d7/dcc/fftools__cmdutils_8c.html#a8bcd5cd3628e5864fa94431d8eb08fad',1,'uninit_parse_context(OptionParseContext *octx): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad',1,'uninit_parse_context(OptionParseContext *octx): fftools_cmdutils.c']]], + ['unique_5fname_1486',['unique_name',['../d9/d11/structsection.html#a87a965308809cb32330476fbac8ad894',1,'section']]], + ['unit_1487',['unit',['../d9/d6d/structunit__value.html#a318959a4ba5a58de0585e5e95290f04a',1,'unit_value']]], + ['unit_5fbit_5fper_5fsecond_5fstr_1488',['unit_bit_per_second_str',['../d8/d78/fftools__ffprobe_8c.html#a6f91be66e703437cdc2b1773ecb334a5',1,'fftools_ffprobe.c']]], + ['unit_5fbyte_5fstr_1489',['unit_byte_str',['../d8/d78/fftools__ffprobe_8c.html#a250f4947756e7a8ec614472a3d7cd7f8',1,'fftools_ffprobe.c']]], + ['unit_5fhertz_5fstr_1490',['unit_hertz_str',['../d8/d78/fftools__ffprobe_8c.html#a529e1f2a208d7b15cacd0664001d8776',1,'fftools_ffprobe.c']]], + ['unit_5fsecond_5fstr_1491',['unit_second_str',['../d8/d78/fftools__ffprobe_8c.html#a22df03c677e303d34bbadd91b0cc8259',1,'fftools_ffprobe.c']]], + ['unit_5fvalue_1492',['unit_value',['../d9/d6d/structunit__value.html',1,'']]], + ['upcase_5fstring_1493',['upcase_string',['../d8/d78/fftools__ffprobe_8c.html#a59812955b0d1457f68b921edd60beb6b',1,'fftools_ffprobe.c']]], + ['update_5fbenchmark_1494',['update_benchmark',['../d7/d48/fftools__ffmpeg_8c.html#ab8ed239c7a9be61521f08c4adaa9d4f3',1,'fftools_ffmpeg.c']]], + ['use_5fbyte_5fvalue_5fbinary_5fprefix_1495',['use_byte_value_binary_prefix',['../d8/d78/fftools__ffprobe_8c.html#a19c990a79036edf4e40bd8a21381895d',1,'fftools_ffprobe.c']]], + ['use_5fvalue_5fprefix_1496',['use_value_prefix',['../d8/d78/fftools__ffprobe_8c.html#ad362e718f93320491ed082eb1a6075ab',1,'fftools_ffprobe.c']]], + ['use_5fvalue_5fsexagesimal_5fformat_1497',['use_value_sexagesimal_format',['../d8/d78/fftools__ffprobe_8c.html#ace811d67e33a26ad25d9ad46199c9c64',1,'fftools_ffprobe.c']]], + ['user_5fset_5fdiscard_1498',['user_set_discard',['../d3/d6e/struct_input_stream.html#a86b730f87f0f8ebd088f94af51d91b96',1,'InputStream']]], + ['user_5fusec_1499',['user_usec',['../d5/d8e/struct_benchmark_time_stamps.html#ad0f18c644b145f2ef6c7bd37c22d7cd6',1,'BenchmarkTimeStamps']]] +]; diff --git a/docs/linux/html/search/all_16.html b/docs/linux/html/search/all_16.html new file mode 100644 index 0000000..7bd7afe --- /dev/null +++ b/docs/linux/html/search/all_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_16.js b/docs/linux/html/search/all_16.js new file mode 100644 index 0000000..0376a19 --- /dev/null +++ b/docs/linux/html/search/all_16.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['val_1500',['val',['../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236',1,'Option::val()'],['../d9/d6d/structunit__value.html#aa6f21618a8e5c2349c473b8de34dca09',1,'unit_value::val()']]], + ['validate_5fstring_1501',['validate_string',['../d8/d78/fftools__ffprobe_8c.html#a39e762f469368ec213106a09db8bf524',1,'fftools_ffprobe.c']]], + ['value_5fstring_1502',['value_string',['../d8/d78/fftools__ffprobe_8c.html#a4049c37af782694ed66790b32be6f824',1,'fftools_ffprobe.c']]], + ['video_5fdisable_1503',['video_disable',['../df/d77/struct_options_context.html#a9cef7b5ff74cf5f810d8bae95b516c66',1,'OptionsContext']]], + ['video_5fsync_5fmethod_1504',['video_sync_method',['../d7/db3/fftools__ffmpeg_8h.html#a2f1889d8ac7f17c1a7b5168bb4b32d17',1,'video_sync_method(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2f1889d8ac7f17c1a7b5168bb4b32d17',1,'video_sync_method(): fftools_ffmpeg_opt.c']]], + ['videotoolbox_5finit_1505',['videotoolbox_init',['../d7/db3/fftools__ffmpeg_8h.html#a2aecd4d11bf1f7413cdd45a356e9fa9a',1,'fftools_ffmpeg.h']]], + ['videotoolbox_5fpixfmt_1506',['videotoolbox_pixfmt',['../d7/db3/fftools__ffmpeg_8h.html#ae8d49a71f90c4ef48c8666d8ea86b445',1,'fftools_ffmpeg.h']]], + ['vstats_5ffile_1507',['vstats_file',['../d7/d48/fftools__ffmpeg_8c.html#aadf678a3a88dfccc1dc85f2fee5842fc',1,'fftools_ffmpeg.c']]], + ['vstats_5ffilename_1508',['vstats_filename',['../d7/db3/fftools__ffmpeg_8h.html#a767f4348992f8faeaf443a3b0292d87a',1,'vstats_filename(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a767f4348992f8faeaf443a3b0292d87a',1,'vstats_filename(): fftools_ffmpeg_opt.c']]], + ['vstats_5fversion_1509',['vstats_version',['../d7/db3/fftools__ffmpeg_8h.html#a71ada39e51376d4fa3efbc6ed705d39b',1,'vstats_version(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a71ada39e51376d4fa3efbc6ed705d39b',1,'vstats_version(): fftools_ffmpeg_opt.c']]], + ['vsync_5fauto_1510',['VSYNC_AUTO',['../d7/db3/fftools__ffmpeg_8h.html#a7a29c56248090da0d5fb37a87b9a695d',1,'fftools_ffmpeg.h']]], + ['vsync_5fcfr_1511',['VSYNC_CFR',['../d7/db3/fftools__ffmpeg_8h.html#a55f456dcb9eef4dae3472d86039ab92e',1,'fftools_ffmpeg.h']]], + ['vsync_5fdrop_1512',['VSYNC_DROP',['../d7/db3/fftools__ffmpeg_8h.html#a16386b3f2344042c2a72b9143f09fcfa',1,'fftools_ffmpeg.h']]], + ['vsync_5fpassthrough_1513',['VSYNC_PASSTHROUGH',['../d7/db3/fftools__ffmpeg_8h.html#ad997d298e58562365e7011c3d2fdd811',1,'fftools_ffmpeg.h']]], + ['vsync_5fvfr_1514',['VSYNC_VFR',['../d7/db3/fftools__ffmpeg_8h.html#ae4d5327ac60265779027253e0f6ca4dc',1,'fftools_ffmpeg.h']]], + ['vsync_5fvscfr_1515',['VSYNC_VSCFR',['../d7/db3/fftools__ffmpeg_8h.html#ad58e98727fde6229cee5d33aaec6d787',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/all_17.html b/docs/linux/html/search/all_17.html new file mode 100644 index 0000000..35702ec --- /dev/null +++ b/docs/linux/html/search/all_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_17.js b/docs/linux/html/search/all_17.js new file mode 100644 index 0000000..3e0dcbe --- /dev/null +++ b/docs/linux/html/search/all_17.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['w_1516',['w',['../d4/dfd/struct_input_stream_1_1sub2video.html#a0bd83c4ad9f5301d63e49a9f94b8cf7d',1,'InputStream::sub2video']]], + ['waitforasynchronousmessagesintransmit_1517',['waitForAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a832b37343ce2013ed93720b341cf3563',1,'ffmpegkit::AbstractSession']]], + ['want_5fsdp_1518',['want_sdp',['../d7/d48/fftools__ffmpeg_8c.html#aee22300aab0a785e62da0d08de0c20d2',1,'fftools_ffmpeg.c']]], + ['warn_5fmultiple_5fopt_5fusage_1519',['WARN_MULTIPLE_OPT_USAGE',['../da/d66/fftools__ffmpeg__opt_8c.html#a61f51ca9f5bb864a0a84e319e5049578',1,'fftools_ffmpeg_opt.c']]], + ['warned_5fcfg_1520',['warned_cfg',['../d7/dcc/fftools__cmdutils_8c.html#a84ffa6a1f128e14278d2e604e325a730',1,'fftools_cmdutils.c']]], + ['width_1521',['width',['../d7/d0c/struct_input_filter.html#af86da4dd2e5092c08e8b171b52c6fa66',1,'InputFilter::width()'],['../d0/d0f/struct_output_filter.html#a0a621d752f3ab33e67f0a8f22bee4118',1,'OutputFilter::width()']]], + ['within_5ftag_1522',['within_tag',['../d7/db2/struct_x_m_l_context.html#ae41c7821d5808844d337094fd2d7537f',1,'XMLContext']]], + ['wrap_5fcorrection_5fdone_1523',['wrap_correction_done',['../d3/d6e/struct_input_stream.html#a8ee44633b600f2b31541b213f0a4b322',1,'InputStream']]], + ['write_5foption_1524',['write_option',['../d7/dcc/fftools__cmdutils_8c.html#a5ca363d9d3e4d401719d9e2e27fd5e21',1,'fftools_cmdutils.c']]], + ['write_5fpacket_1525',['write_packet',['../d7/d48/fftools__ffmpeg_8c.html#a8507683cee9accbbda79588659abcea8',1,'fftools_ffmpeg.c']]], + ['writer_1526',['Writer',['../d6/dff/struct_writer.html',1,'Writer'],['../d1/da2/struct_writer_context.html#ae5665d3128f57b9024da5d5d029c83a4',1,'WriterContext::writer()'],['../d8/d78/fftools__ffprobe_8c.html#af51bd880557b9b7f3af54512f3351a86',1,'Writer(): fftools_ffprobe.c']]], + ['writer_5fchild_5fnext_1527',['writer_child_next',['../d8/d78/fftools__ffprobe_8c.html#aa0f43dc00221e3e30afd2fbdc13e90c0',1,'fftools_ffprobe.c']]], + ['writer_5fclass_1528',['writer_class',['../d8/d78/fftools__ffprobe_8c.html#aeada6140ff6d151ac2cf6519c673bb8b',1,'fftools_ffprobe.c']]], + ['writer_5fclose_1529',['writer_close',['../d8/d78/fftools__ffprobe_8c.html#aa1ee26bedcca97a195f9d10f16e6e2ef',1,'fftools_ffprobe.c']]], + ['writer_5fflag_5fdisplay_5foptional_5ffields_1530',['WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS',['../d8/d78/fftools__ffprobe_8c.html#a079beb6b4d87613d204e4ab83908949b',1,'fftools_ffprobe.c']]], + ['writer_5fflag_5fput_5fpackets_5fand_5fframes_5fin_5fsame_5fchapter_1531',['WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER',['../d8/d78/fftools__ffprobe_8c.html#a210133177091ed3fdf629fd6ffc7832b',1,'fftools_ffprobe.c']]], + ['writer_5fget_5fby_5fname_1532',['writer_get_by_name',['../d8/d78/fftools__ffprobe_8c.html#abfbae06d55ce24a4fe2e1943a346bc2f',1,'fftools_ffprobe.c']]], + ['writer_5fget_5fname_1533',['writer_get_name',['../d8/d78/fftools__ffprobe_8c.html#ad708fa8a3af6ddd2f44f20c258df5f11',1,'fftools_ffprobe.c']]], + ['writer_5fopen_1534',['writer_open',['../d8/d78/fftools__ffprobe_8c.html#a02c38b351de5ed69212a230a156c9381',1,'fftools_ffprobe.c']]], + ['writer_5foptions_1535',['writer_options',['../d8/d78/fftools__ffprobe_8c.html#a99b4a3e44b880281d305859ff21bf452',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fdata_1536',['writer_print_data',['../d8/d78/fftools__ffprobe_8c.html#a762997c6713f70a805a05e5e2ff02c96',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fdata_5fhash_1537',['writer_print_data_hash',['../d8/d78/fftools__ffprobe_8c.html#aae3d3cf3507a0867ddc8f8d5553a473d',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5finteger_1538',['writer_print_integer',['../d8/d78/fftools__ffprobe_8c.html#a794266cdb6ddeaa21520e52cd62ffca7',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fintegers_1539',['writer_print_integers',['../d8/d78/fftools__ffprobe_8c.html#a440fbc5321a186b58b6e21f1274c952e',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5frational_1540',['writer_print_rational',['../d8/d78/fftools__ffprobe_8c.html#a9f874d9c47a9e3395480addb3268c3f8',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fsection_5ffooter_1541',['writer_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a4cf81a183add107880e89f63945215b4',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fsection_5fheader_1542',['writer_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#ad5ec9784eb70b474333c85851c02283d',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fstring_1543',['writer_print_string',['../d8/d78/fftools__ffprobe_8c.html#a900da5c87d04643f413c13eecba3a2f3',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5ftime_1544',['writer_print_time',['../d8/d78/fftools__ffprobe_8c.html#ae194f5d65d40cf6abb50586ae775977a',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fts_1545',['writer_print_ts',['../d8/d78/fftools__ffprobe_8c.html#aeb55c0421d82804ec72ca7f54e604ae7',1,'fftools_ffprobe.c']]], + ['writer_5fregister_1546',['writer_register',['../d8/d78/fftools__ffprobe_8c.html#ae43874ec7b3d5abe0ee5aa67e9141cfc',1,'fftools_ffprobe.c']]], + ['writer_5fregister_5fall_1547',['writer_register_all',['../d8/d78/fftools__ffprobe_8c.html#a9ebb74427ab0bb38df3403a1cb810a2e',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5ffail_1548',['WRITER_STRING_VALIDATION_FAIL',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6baa41eec7a3281f6cfff5b826841e8bd9b',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5fignore_1549',['WRITER_STRING_VALIDATION_IGNORE',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba8cd20ec2d52073e7dc34feb95ec745c0',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5fnb_1550',['WRITER_STRING_VALIDATION_NB',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba0fcb753d2c12e44cb706781b992f922d',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5freplace_1551',['WRITER_STRING_VALIDATION_REPLACE',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba22f213b86465149d32d24570e5ed4681',1,'fftools_ffprobe.c']]], + ['writercontext_1552',['WriterContext',['../d1/da2/struct_writer_context.html',1,'WriterContext'],['../d8/d78/fftools__ffprobe_8c.html#a07a5981333df2c8291714a3cabbf5722',1,'WriterContext(): fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/all_18.html b/docs/linux/html/search/all_18.html new file mode 100644 index 0000000..540cdb6 --- /dev/null +++ b/docs/linux/html/search/all_18.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_18.js b/docs/linux/html/search/all_18.js new file mode 100644 index 0000000..0fba480 --- /dev/null +++ b/docs/linux/html/search/all_18.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['xml_5findent_1553',['XML_INDENT',['../d8/d78/fftools__ffprobe_8c.html#a493c803b896d5c1f6ea7e753e94ae040',1,'fftools_ffprobe.c']]], + ['xml_5finit_1554',['xml_init',['../d8/d78/fftools__ffprobe_8c.html#a4ed4e5eceda7d8f562e0683bc12f80f9',1,'fftools_ffprobe.c']]], + ['xml_5foptions_1555',['xml_options',['../d8/d78/fftools__ffprobe_8c.html#a46b2fdfc02184988ee512a9286623950',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fint_1556',['xml_print_int',['../d8/d78/fftools__ffprobe_8c.html#acbfae1e3a3210f0f141345e9861e3ec9',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fsection_5ffooter_1557',['xml_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a7b60c79dfdeb21ecf6b25397264af0df',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fsection_5fheader_1558',['xml_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a8e019d316907af6a521d8973dbd52a5c',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fstr_1559',['xml_print_str',['../d8/d78/fftools__ffprobe_8c.html#a81f2de898d3fc197d00c4297957c706c',1,'fftools_ffprobe.c']]], + ['xml_5fwriter_1560',['xml_writer',['../d8/d78/fftools__ffprobe_8c.html#af6e3a7af3f399c18f51e228fd5e1d55b',1,'fftools_ffprobe.c']]], + ['xmlcontext_1561',['XMLContext',['../d7/db2/struct_x_m_l_context.html',1,'XMLContext'],['../d8/d78/fftools__ffprobe_8c.html#a5c7587eca2fb75fa09310bf9c0e755db',1,'XMLContext(): fftools_ffprobe.c']]], + ['xsd_5fstrict_1562',['xsd_strict',['../d7/db2/struct_x_m_l_context.html#a1db2a42cba43c5bd67bf41836350e28a',1,'XMLContext']]] +]; diff --git a/docs/linux/html/search/all_2.html b/docs/linux/html/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/docs/linux/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_2.js b/docs/linux/html/search/all_2.js new file mode 100644 index 0000000..cd1ff11 --- /dev/null +++ b/docs/linux/html/search/all_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['benchmarktimestamps_94',['BenchmarkTimeStamps',['../d5/d8e/struct_benchmark_time_stamps.html',1,'BenchmarkTimeStamps'],['../d7/d48/fftools__ffmpeg_8c.html#a556ba3dffaac6f6e98a41a843baf898b',1,'BenchmarkTimeStamps(): fftools_ffmpeg.c']]], + ['bin_5fstr_95',['bin_str',['../d8/d78/fftools__ffprobe_8c.html#abb7465ed8c0c9af5cf6babf5e228fa15',1,'fftools_ffprobe.c']]], + ['bin_5fval_96',['bin_val',['../d8/d78/fftools__ffprobe_8c.html#abe26d15b985a069bc10d6d6ce66276ad',1,'fftools_ffprobe.c']]], + ['bitexact_97',['bitexact',['../df/d77/struct_options_context.html#a1da3f7560a0c9e44cfd8293a5d3d88ab',1,'OptionsContext']]], + ['bitstream_5ffilters_98',['bitstream_filters',['../df/d77/struct_options_context.html#af81dac28de42b072acb1fa1a4f6f5186',1,'OptionsContext']]], + ['bprint_5fbytes_99',['bprint_bytes',['../d8/d78/fftools__ffprobe_8c.html#a16b83cfdcd3e76932542ea596ab500c2',1,'fftools_ffprobe.c']]], + ['bsf_5fctx_100',['bsf_ctx',['../db/dde/struct_output_stream.html#acbf75f011ccbdcad1b3b3e4c3f028b5e',1,'OutputStream']]] +]; diff --git a/docs/linux/html/search/all_3.html b/docs/linux/html/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/docs/linux/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_3.js b/docs/linux/html/search/all_3.js new file mode 100644 index 0000000..14140ef --- /dev/null +++ b/docs/linux/html/search/all_3.js @@ -0,0 +1,97 @@ +var searchData= +[ + ['c_5fescape_5fstr_101',['c_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a5c0c7666a8ee9c688470f5ab8555fef1',1,'fftools_ffprobe.c']]], + ['callbackdata_102',['CallbackData',['../d5/d18/class_callback_data.html',1,'CallbackData'],['../d5/d18/class_callback_data.html#a96a32d40a1b8223cb615e69633505032',1,'CallbackData::CallbackData(const long sessionId, const int logLevel, const AVBPrint *data)'],['../d5/d18/class_callback_data.html#a43d14a2b585457e353cdce9d82d9548b',1,'CallbackData::CallbackData(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)']]], + ['callbackdatalist_103',['callbackDataList',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a29384fb01e2fec31549a7606ba4ddaa6',1,'FFmpegKitConfig.cpp']]], + ['callbackdatamutex_104',['callbackDataMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2fe28290abcdf0328092c99c3d404c49',1,'FFmpegKitConfig.cpp']]], + ['callbackdataremove_105',['callbackDataRemove',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8dfd8530623b2c0fbcdee69c3d5347cf',1,'FFmpegKitConfig.cpp']]], + ['callbackmonitor_106',['callbackMonitor',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8fed644d8f39e3aeee05401e6a3e9b65',1,'FFmpegKitConfig.cpp']]], + ['callbackmutex_107',['callbackMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a066fd3d99930bcb327e0f7c510cdacd0',1,'FFmpegKitConfig.cpp']]], + ['callbacknotify_108',['callbackNotify',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a88a250dc7348be9a0182a5dd5e000037',1,'FFmpegKitConfig.cpp']]], + ['callbackthread_109',['callbackThread',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8e98224bd935d38a24a6b1ed48adcc66',1,'FFmpegKitConfig.cpp']]], + ['callbackthreadfunction_110',['callbackThreadFunction',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9adc5fd0374ff5eb6966ddd9e28e5b21',1,'FFmpegKitConfig.cpp']]], + ['callbacktype_111',['CallbackType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318',1,'FFmpegKitConfig.cpp']]], + ['callbackwait_112',['callbackWait',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#abdbf4016440c88dd0d19e83c5f0273d1',1,'FFmpegKitConfig.cpp']]], + ['cancel_113',['Cancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a940730ed7b2be7e89596e6be219c0425',1,'ffmpegkit::ReturnCode::Cancel()'],['../d2/d41/classffmpegkit_1_1_abstract_session.html#af67c25c9ba25ec224c70cfffe69e88be',1,'ffmpegkit::AbstractSession::cancel()'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#adffdb985f9d0d0c62e5258719eb16e95',1,'ffmpegkit::FFmpegKit::cancel()'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a15bd5828787355c192b68ab594f02175',1,'ffmpegkit::FFmpegKit::cancel(const long sessionId)'],['../d5/d0e/classffmpegkit_1_1_session.html#ab6e3e93db2042cc25796ca4d3e4135c7',1,'ffmpegkit::Session::cancel()']]], + ['cancel_5foperation_114',['cancel_operation',['../d7/d48/fftools__ffmpeg_8c.html#a85d242f177c5dc68d5808adc5e594b92',1,'cancel_operation(long id): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a85d242f177c5dc68d5808adc5e594b92',1,'cancel_operation(long id): fftools_ffmpeg.c']]], + ['cancelrequested_115',['cancelRequested',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#acbe59dcf013b4b50c53ecbc4c6e0bcbc',1,'cancelRequested(long sessionId): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#acbe59dcf013b4b50c53ecbc4c6e0bcbc',1,'cancelRequested(long sessionId): FFmpegKitConfig.cpp']]], + ['cancelsession_116',['cancelSession',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1d345dc080c3a4b1ee30f23d8066ce72',1,'cancelSession(long sessionId): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a1d345dc080c3a4b1ee30f23d8066ce72',1,'cancelSession(long sessionId): FFmpegKitConfig.cpp']]], + ['canvas_5fsizes_117',['canvas_sizes',['../df/d77/struct_options_context.html#a934768eaa162665ae2142a36c92febd6',1,'OptionsContext']]], + ['category_118',['category',['../dd/d15/struct_log_buffer.html#a44eb12f4d282804c1fae1335a9206685',1,'LogBuffer']]], + ['cfr_5fnext_5fpts_119',['cfr_next_pts',['../d3/d6e/struct_input_stream.html#a3a0034bb2959a06111810d2813975b24',1,'InputStream']]], + ['channel_5fidx_120',['channel_idx',['../d6/d2c/struct_audio_channel_map.html#a8f4845075e76274d0c577c258b24d0bf',1,'AudioChannelMap']]], + ['channel_5flayout_121',['channel_layout',['../d7/d0c/struct_input_filter.html#aaf4487a0c41b756199c9dde4ea8962b8',1,'InputFilter::channel_layout()'],['../d0/d0f/struct_output_filter.html#ae591539feb7f41d19236244a0dcf3896',1,'OutputFilter::channel_layout()']]], + ['channel_5flayouts_122',['channel_layouts',['../d0/d0f/struct_output_filter.html#a4f141db3516fc737c8876f817a68b16b',1,'OutputFilter']]], + ['channels_123',['channels',['../d7/d0c/struct_input_filter.html#ae65ce297679c894d4536e8eaaf623b84',1,'InputFilter']]], + ['chapter_124',['Chapter',['../d9/d9f/classffmpegkit_1_1_chapter.html',1,'ffmpegkit::Chapter'],['../d9/d9f/classffmpegkit_1_1_chapter.html#a616c81b7dcd7d0f0a68671d3dd92c335',1,'ffmpegkit::Chapter::Chapter()']]], + ['chapter_2ecpp_125',['Chapter.cpp',['../d1/d8a/_chapter_8cpp.html',1,'']]], + ['chapter_2eh_126',['Chapter.h',['../dc/d8d/_chapter_8h.html',1,'']]], + ['chapters_5finput_5ffile_127',['chapters_input_file',['../df/d77/struct_options_context.html#a9aa6d216666ea426199e6abd0a79d6cb',1,'OptionsContext']]], + ['check_5fcompliance_128',['CHECK_COMPLIANCE',['../d8/d78/fftools__ffprobe_8c.html#a1a76606b559e0d41ea55758f602110e8',1,'fftools_ffprobe.c']]], + ['check_5fdecode_5fresult_129',['check_decode_result',['../d7/d48/fftools__ffmpeg_8c.html#a733571df1f9d2cdd5aca9e933919a237',1,'fftools_ffmpeg.c']]], + ['check_5fend_130',['CHECK_END',['../d8/d78/fftools__ffprobe_8c.html#a135244e9f0a34effa490e5de3ea62fc9',1,'fftools_ffprobe.c']]], + ['check_5ffilter_5foutputs_131',['check_filter_outputs',['../d7/db3/fftools__ffmpeg_8h.html#ad7582860b219ad64ec003d5924747d20',1,'check_filter_outputs(void): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ad7582860b219ad64ec003d5924747d20',1,'check_filter_outputs(void): fftools_ffmpeg_filter.c']]], + ['check_5finit_5foutput_5ffile_132',['check_init_output_file',['../d7/d48/fftools__ffmpeg_8c.html#a88ac1fa670df56643b51e4face274d51',1,'fftools_ffmpeg.c']]], + ['check_5fkeyboard_5finteraction_133',['check_keyboard_interaction',['../d7/d48/fftools__ffmpeg_8c.html#a17f085393f3e2cd51d665ab899282b81',1,'fftools_ffmpeg.c']]], + ['check_5foptions_134',['check_options',['../d7/dcc/fftools__cmdutils_8c.html#ae40b9746b06af788a13286f6b74dd1a1',1,'fftools_cmdutils.c']]], + ['check_5foutput_5fconstraints_135',['check_output_constraints',['../d7/d48/fftools__ffmpeg_8c.html#a8058514ce4db47327793e924526a39ed',1,'fftools_ffmpeg.c']]], + ['check_5frecording_5ftime_136',['check_recording_time',['../d7/d48/fftools__ffmpeg_8c.html#a2fc10262dc3c90f4c4d0cdac1fdd8991',1,'fftools_ffmpeg.c']]], + ['check_5fsection_5fshow_5fentries_137',['check_section_show_entries',['../d8/d78/fftools__ffprobe_8c.html#a967fae793b47910f2618a2facf923c50',1,'fftools_ffprobe.c']]], + ['check_5fstream_5fspecifier_138',['check_stream_specifier',['../d7/dcc/fftools__cmdutils_8c.html#a632b71e4b56c5ee8556a407bbecbcef8',1,'check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8',1,'check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec): fftools_cmdutils.c']]], + ['check_5fstreamcopy_5ffilters_139',['check_streamcopy_filters',['../d7/db3/fftools__ffmpeg_8h.html#a7cddc701ff06bdb72d4fc4e9d58fef18',1,'check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7cddc701ff06bdb72d4fc4e9d58fef18',1,'check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type): fftools_ffmpeg_opt.c']]], + ['children_5fids_140',['children_ids',['../d9/d11/structsection.html#af05c5da5dcb097efe6afa4976a11f48b',1,'section']]], + ['choose_5fdecoder_141',['choose_decoder',['../d7/db3/fftools__ffmpeg_8h.html#ac258c2749058533c1bdcc9a939a0c8d5',1,'choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ac258c2749058533c1bdcc9a939a0c8d5',1,'choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st): fftools_ffmpeg_opt.c']]], + ['choose_5fencoder_142',['choose_encoder',['../d7/db3/fftools__ffmpeg_8h.html#a03a47e17a0b8a46a12a209c7448b2ac6',1,'choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a03a47e17a0b8a46a12a209c7448b2ac6',1,'choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost): fftools_ffmpeg_opt.c']]], + ['choose_5foutput_143',['choose_output',['../d7/d48/fftools__ffmpeg_8c.html#a677a37d7ea296c85c36f131210edd44b',1,'fftools_ffmpeg.c']]], + ['choose_5fpix_5ffmts_144',['choose_pix_fmts',['../d2/d36/fftools__ffmpeg__filter_8c.html#a42a6b4647cc1c8326bb4db65d1b463e6',1,'fftools_ffmpeg_filter.c']]], + ['choose_5fpixel_5ffmt_145',['choose_pixel_fmt',['../d7/db3/fftools__ffmpeg_8h.html#a60393ab9e563b128bc563267db21ab66',1,'choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a46fd7d3ff0e63394a14c329d0249e0d4',1,'choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target): fftools_ffmpeg_filter.c']]], + ['choose_5fsample_5ffmt_146',['choose_sample_fmt',['../d7/db3/fftools__ffmpeg_8h.html#aa5dbb63410f51797ec2bcfeff8615975',1,'fftools_ffmpeg.h']]], + ['chroma_5fintra_5fmatrices_147',['chroma_intra_matrices',['../df/d77/struct_options_context.html#aaaa76e6545226073e088cd8cb4530175',1,'OptionsContext']]], + ['class_148',['class',['../d1/da2/struct_writer_context.html#a9a134275e24f0ed7ceb2108e144b031d',1,'WriterContext::class()'],['../d4/da0/struct_default_context.html#afa8e41a1d7f3eb5e48102d58da4c7db3',1,'DefaultContext::class()'],['../d2/ddd/struct_compact_context.html#a8e0108669bebe76f67bb8ae4869f4843',1,'CompactContext::class()'],['../d3/db7/struct_flat_context.html#acad059863d0d81b605f384b447e49734',1,'FlatContext::class()'],['../da/d4f/struct_i_n_i_context.html#afac90343e8f73c96248fc98ca62606ce',1,'INIContext::class()'],['../d6/d53/struct_j_s_o_n_context.html#a9eab88f84786f4e69f9aaf2e34048b70',1,'JSONContext::class()'],['../d7/db2/struct_x_m_l_context.html#ad6cc91ff4b9016b87e2d7ab9ad6c1a4b',1,'XMLContext::class()']]], + ['cleanup_5ffiltergraph_149',['cleanup_filtergraph',['../d2/d36/fftools__ffmpeg__filter_8c.html#a027d310ab49f2b105fc3b980a6b6c340',1,'fftools_ffmpeg_filter.c']]], + ['clear_5flog_150',['clear_log',['../d8/d78/fftools__ffprobe_8c.html#aeb0789c94a1dfc090088d771352299c4',1,'fftools_ffprobe.c']]], + ['clearsessions_151',['clearSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ab31911c60354b18e1b94be058bcead76',1,'ffmpegkit::FFmpegKitConfig']]], + ['close_5fall_5foutput_5fstreams_152',['close_all_output_streams',['../d7/d48/fftools__ffmpeg_8c.html#ac237321f98a7041c9f6004d2ce8a425c',1,'fftools_ffmpeg.c']]], + ['close_5finput_5ffile_153',['close_input_file',['../d8/d78/fftools__ffprobe_8c.html#aa5f1f5a901a3e59f1841d21c03a61eba',1,'fftools_ffprobe.c']]], + ['close_5foutput_5fstream_154',['close_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a89c049f6683542b855326a6c2d5c3d7d',1,'fftools_ffmpeg.c']]], + ['closeffmpegpipe_155',['closeFFmpegPipe',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a5b33b1d74216a6b23281184b5a8b5701',1,'ffmpegkit::FFmpegKitConfig']]], + ['codec_5fnames_156',['codec_names',['../df/d77/struct_options_context.html#a8e23612186bced64639c9f43cc01cbbd',1,'OptionsContext']]], + ['codec_5fopts_157',['codec_opts',['../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910',1,'OptionGroup::codec_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a08b59fb8c12cbc6db2dd68a367ae49d9',1,'codec_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9',1,'codec_opts(): fftools_cmdutils.h']]], + ['codec_5ftags_158',['codec_tags',['../df/d77/struct_options_context.html#adff2612c6649f43ac5566b0fb9ba06a0',1,'OptionsContext']]], + ['compact_159',['compact',['../d6/d53/struct_j_s_o_n_context.html#a1986ad1d679d913fb573ddde03fb83b2',1,'JSONContext']]], + ['compact_5finit_160',['compact_init',['../d8/d78/fftools__ffprobe_8c.html#ab59ed846cadb912de8ed34126529bd4e',1,'fftools_ffprobe.c']]], + ['compact_5foptions_161',['compact_options',['../d8/d78/fftools__ffprobe_8c.html#a6035c166e9fff3d1d65fc8315f0552c2',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fint_162',['compact_print_int',['../d8/d78/fftools__ffprobe_8c.html#a829211c72e47e8a159f8b6e5b5ea4976',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fsection_5ffooter_163',['compact_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a457295f949f80a2806e624db57e5a046',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fsection_5fheader_164',['compact_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a5f0203a31c33090c1cd79fa9cfb5f7d0',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fstr_165',['compact_print_str',['../d8/d78/fftools__ffprobe_8c.html#af9df6c99a699348fc0ea0b68d304f735',1,'fftools_ffprobe.c']]], + ['compact_5fwriter_166',['compact_writer',['../d8/d78/fftools__ffprobe_8c.html#a4eb0f77e10a79498e7aa43f3be460452',1,'fftools_ffprobe.c']]], + ['compactcontext_167',['CompactContext',['../d2/ddd/struct_compact_context.html',1,'CompactContext'],['../d8/d78/fftools__ffprobe_8c.html#ac2e50d024b5343b7ae1b50a04b41e6b8',1,'CompactContext(): fftools_ffprobe.c']]], + ['compare_5fcodec_5fdesc_168',['compare_codec_desc',['../d7/dcc/fftools__cmdutils_8c.html#a50fec3b5f83e8f355a640dafbf4d2189',1,'fftools_cmdutils.c']]], + ['compare_5fint64_169',['compare_int64',['../d7/d48/fftools__ffmpeg_8c.html#a69b0f920b4d91360bd5cd5da5842e282',1,'fftools_ffmpeg.c']]], + ['complete_170',['complete',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a9d5be42b5576ee247627d113f74ec851',1,'ffmpegkit::AbstractSession::complete()'],['../d5/d0e/classffmpegkit_1_1_session.html#a4ee68d280a2a15dc654e547273b91116',1,'ffmpegkit::Session::complete()']]], + ['configure_5ffiltergraph_171',['configure_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#adfc4727f627c5abd0aa843206d046ec6',1,'configure_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#adfc4727f627c5abd0aa843206d046ec6',1,'configure_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['configure_5finput_5faudio_5ffilter_172',['configure_input_audio_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#abd040cc1f24edd0ee72c1bdfaa5599c2',1,'fftools_ffmpeg_filter.c']]], + ['configure_5finput_5ffilter_173',['configure_input_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a8866c5d369968e1f79743e44ad4b8169',1,'fftools_ffmpeg_filter.c']]], + ['configure_5finput_5fvideo_5ffilter_174',['configure_input_video_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9f383c04c76d00cb7fbe0c561fc54aba',1,'fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5faudio_5ffilter_175',['configure_output_audio_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a57f643dc94cbbbb752e2943a7457a668',1,'fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5ffilter_176',['configure_output_filter',['../d7/db3/fftools__ffmpeg_8h.html#a045cee5da7d7a2926a5351a4938ef056',1,'configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a045cee5da7d7a2926a5351a4938ef056',1,'configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out): fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5fvideo_5ffilter_177',['configure_output_video_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a1aff0805d8ea5d89a1dbf1fb1e460113',1,'fftools_ffmpeg_filter.c']]], + ['configuredloglevel_178',['configuredLogLevel',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aefb40225eb03b1329a1fe7931c312eb8',1,'FFmpegKitConfig.cpp']]], + ['contains_5fext_5flib_179',['contains_ext_lib',['../d6/df7/_packages_8cpp.html#acedb637eba1e411f0111d3ccff24466e',1,'Packages.cpp']]], + ['context_5fname_180',['context_name',['../dd/d15/struct_log_buffer.html#a28b55b034abd862b1b7451c1ca369650',1,'LogBuffer']]], + ['copy_5fchapters_181',['copy_chapters',['../d7/db3/fftools__ffmpeg_8h.html#a15ce1619315986c72f387e9b41a0ff10',1,'copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a15ce1619315986c72f387e9b41a0ff10',1,'copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata): fftools_ffmpeg_opt.c']]], + ['copy_5finitial_5fnonkeyframes_182',['copy_initial_nonkeyframes',['../df/d77/struct_options_context.html#a261f0aff75b3e2453a2b6780f452028e',1,'OptionsContext::copy_initial_nonkeyframes()'],['../db/dde/struct_output_stream.html#a1c371db7f52c96799a042c70ed85ce2a',1,'OutputStream::copy_initial_nonkeyframes()']]], + ['copy_5fprior_5fstart_183',['copy_prior_start',['../df/d77/struct_options_context.html#ac333752e0247882de17d4f3faf3511f7',1,'OptionsContext::copy_prior_start()'],['../db/dde/struct_output_stream.html#ab60bee90a33577cbdbb82e9c5fb2cf08',1,'OutputStream::copy_prior_start()']]], + ['copy_5ftb_184',['copy_tb',['../d7/db3/fftools__ffmpeg_8h.html#a06714cf243e224ec6ebc2340c322d33f',1,'copy_tb(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a06714cf243e224ec6ebc2340c322d33f',1,'copy_tb(): fftools_ffmpeg_opt.c']]], + ['copy_5fts_185',['copy_ts',['../d7/db3/fftools__ffmpeg_8h.html#a4840dc6953824a08972501cff95620e5',1,'copy_ts(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4840dc6953824a08972501cff95620e5',1,'copy_ts(): fftools_ffmpeg_opt.c']]], + ['copy_5fts_5ffirst_5fpts_186',['copy_ts_first_pts',['../d7/d48/fftools__ffmpeg_8c.html#a87a4deed57fa61c241031e35789e85b0',1,'fftools_ffmpeg.c']]], + ['copy_5funknown_5fstreams_187',['copy_unknown_streams',['../d7/d48/fftools__ffmpeg_8c.html#a5ea9613c6b24f9f9aec20afde671ad3a',1,'copy_unknown_streams(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5ea9613c6b24f9f9aec20afde671ad3a',1,'copy_unknown_streams(): fftools_ffmpeg_opt.c']]], + ['create_188',['create',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ac1d40d264ef1f3cb21d959356ede7988',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ad194942fd5f96f548005a592df797958',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a2441745e7775987b5add238a75bc1e13',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a3d31e6e9987df4c4fde9b11506269891',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a46f24220e7b4fd5e8d3d22fc30ec84e7',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a2146cf8fcaedb0e0e6b933f5492024d5',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#aab8a5855848f5abe7be5da1c2ff3d7f2',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a662f5350943761e6c198976c90653f1e',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a32370e8cea864e856f7bc997d412d5d0',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a6b645aa7d119f9ef9f0e15453a192ce7',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#abff9ff8cd8de5e35f55596ebdb33ed94',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['csv_5fescape_5fstr_189',['csv_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a85a9d21c0c58783a87c5b26c04e785c0',1,'fftools_ffprobe.c']]], + ['csv_5foptions_190',['csv_options',['../d8/d78/fftools__ffprobe_8c.html#a4de3ef1fed73794735a0a34d60e3667c',1,'fftools_ffprobe.c']]], + ['csv_5fwriter_191',['csv_writer',['../d8/d78/fftools__ffprobe_8c.html#a802dcbf96298836d8e34a3aeef3e9877',1,'fftools_ffprobe.c']]], + ['ctx_192',['ctx',['../d8/d99/struct_input_file.html#a4062ac530db413964aa76090995b85cd',1,'InputFile::ctx()'],['../de/df2/struct_output_file.html#a6bfbcb8e4d6564ae0c488d58c0fb0d5f',1,'OutputFile::ctx()']]], + ['cur_5fgroup_193',['cur_group',['../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13',1,'OptionParseContext']]], + ['current_5ftime_194',['current_time',['../d7/d48/fftools__ffmpeg_8c.html#a34e7efb0f3ddef2637d934182e7b4ac6',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/all_4.html b/docs/linux/html/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/docs/linux/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_4.js b/docs/linux/html/search/all_4.js new file mode 100644 index 0000000..cfb4725 --- /dev/null +++ b/docs/linux/html/search/all_4.js @@ -0,0 +1,91 @@ +var searchData= +[ + ['d_195',['d',['../d9/d6d/structunit__value.html#acfae846f0153d85d80ff7f27740b0c61',1,'unit_value::d()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a1aabac6d068eef6a7bad3fdf50a05cc8',1,'d(): fftools_ffmpeg_filter.c']]], + ['data_5fdisable_196',['data_disable',['../df/d77/struct_options_context.html#a98dc9e32a35d8357e85325bf995fc9ac',1,'OptionsContext']]], + ['data_5fsize_197',['data_size',['../d3/d6e/struct_input_stream.html#a6f49309998ba92804b9d16761817811e',1,'InputStream::data_size()'],['../db/dde/struct_output_stream.html#ac0eae8884c54583e58eaa1999b342179',1,'OutputStream::data_size()']]], + ['dbl_198',['dbl',['../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c',1,'SpecifierOpt']]], + ['debug_5fts_199',['debug_ts',['../d7/db3/fftools__ffmpeg_8h.html#ae684cc527fec35feafac738f59a5fb34',1,'debug_ts(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae684cc527fec35feafac738f59a5fb34',1,'debug_ts(): fftools_ffmpeg_opt.c']]], + ['dec_200',['dec',['../d3/d6e/struct_input_stream.html#aec71efef67656157f493555fddbbc1c9',1,'InputStream']]], + ['dec_5fctx_201',['dec_ctx',['../d3/d6e/struct_input_stream.html#a550ceee60cb995b284b52962dcba6597',1,'InputStream']]], + ['dec_5fstr_202',['dec_str',['../d8/d78/fftools__ffprobe_8c.html#a817f5961e80633aea76faadb970001df',1,'fftools_ffprobe.c']]], + ['dec_5fval_203',['dec_val',['../d8/d78/fftools__ffprobe_8c.html#a64cbc6a41a9a16a582ac02e1be7aadd0',1,'fftools_ffprobe.c']]], + ['decode_204',['decode',['../d7/d48/fftools__ffmpeg_8c.html#a22b853326688d8b01baa28b9aad668d8',1,'fftools_ffmpeg.c']]], + ['decode_5faudio_205',['decode_audio',['../d7/d48/fftools__ffmpeg_8c.html#a159db49b7f730d2869253cd4ff0411aa',1,'fftools_ffmpeg.c']]], + ['decode_5ferror_5fstat_206',['decode_error_stat',['../d7/d48/fftools__ffmpeg_8c.html#ab3e87e9160783294fa6cab727ff3bb63',1,'fftools_ffmpeg.c']]], + ['decode_5finterrupt_5fcb_207',['decode_interrupt_cb',['../d7/d48/fftools__ffmpeg_8c.html#a9e363385c841c9b165453f0c7014304a',1,'fftools_ffmpeg.c']]], + ['decode_5fvideo_208',['decode_video',['../d7/d48/fftools__ffmpeg_8c.html#a71dd0984704d7f70065c6b97edc7069e',1,'fftools_ffmpeg.c']]], + ['decoded_5fframe_209',['decoded_frame',['../d3/d6e/struct_input_stream.html#a1492e008c195bbd4e2c84bccbc5ee216',1,'InputStream']]], + ['decoder_5fopts_210',['decoder_opts',['../d3/d6e/struct_input_stream.html#ae73dddf18b49b6660263bc3a73a44290',1,'InputStream']]], + ['decoding_5ffor_5ffilter_211',['DECODING_FOR_FILTER',['../d7/db3/fftools__ffmpeg_8h.html#a69301b0986380d3c18feb65b0ac128c4',1,'fftools_ffmpeg.h']]], + ['decoding_5ffor_5fost_212',['DECODING_FOR_OST',['../d7/db3/fftools__ffmpeg_8h.html#ac19c669906e50a4be81b78eb8777ca8c',1,'fftools_ffmpeg.h']]], + ['decoding_5fneeded_213',['decoding_needed',['../d3/d6e/struct_input_stream.html#ac9fc51324b931c1db5c5c1445fe70c3b',1,'InputStream']]], + ['def_5fchoose_5fformat_214',['DEF_CHOOSE_FORMAT',['../d2/d36/fftools__ffmpeg__filter_8c.html#adf70c3c13bfce09e37627128b7603633',1,'DEF_CHOOSE_FORMAT(): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#aac5586382c09d11ae21736fae565e52f',1,'DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats, AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name) DEF_CHOOSE_FORMAT(sample_rates: fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a6e27af28343fa6ff20dc1ada13d0ecbe',1,'DEF_CHOOSE_FORMAT(channel_layouts, uint64_t, channel_layout, channel_layouts, 0, "0x%"PRIx64,) int init_simple_filtergraph(InputStream *ist: fftools_ffmpeg_filter.c']]], + ['default_5foptions_215',['default_options',['../d8/d78/fftools__ffprobe_8c.html#a39c1a4e90638c39af15fa36cca6061a4',1,'fftools_ffprobe.c']]], + ['default_5fpass_5flogfilename_5fprefix_216',['DEFAULT_PASS_LOGFILENAME_PREFIX',['../da/d66/fftools__ffmpeg__opt_8c.html#a4dd32a1942a804edb22f2e016406db41',1,'fftools_ffmpeg_opt.c']]], + ['default_5fprint_5fint_217',['default_print_int',['../d8/d78/fftools__ffprobe_8c.html#a8ad34de827f79f457b05198aec943f7f',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fsection_5ffooter_218',['default_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a8b5fffa414927909ca667f11ff07897b',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fsection_5fheader_219',['default_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a2ad6ecd4afce09abccf27700c3378fa3',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fstr_220',['default_print_str',['../d8/d78/fftools__ffprobe_8c.html#a925a30e9e3e60e58d5de01ba750fea2a',1,'fftools_ffprobe.c']]], + ['default_5fwriter_221',['default_writer',['../d8/d78/fftools__ffprobe_8c.html#ae6d7c58b98b0387aaf9ef9e0122df0f0',1,'fftools_ffprobe.c']]], + ['defaultcontext_222',['DefaultContext',['../d4/da0/struct_default_context.html',1,'DefaultContext'],['../d8/d78/fftools__ffprobe_8c.html#a2577b2d2c58a9d67e28f594d3c56b795',1,'DefaultContext(): fftools_ffprobe.c']]], + ['defaultgetmediainformationcommandarguments_223',['defaultGetMediaInformationCommandArguments',['../d0/dc3/_f_fprobe_kit_8cpp.html#ac1aeaa5736f8a6cd1c67b76cef8d82be',1,'FFprobeKit.cpp']]], + ['defaulttimeoutforasynchronousmessagesintransmit_224',['DefaultTimeoutForAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aeb2c6594ab8cb5c6a186911716e7ce19',1,'ffmpegkit::AbstractSession']]], + ['define_5fopt_5fshow_5fsection_225',['DEFINE_OPT_SHOW_SECTION',['../d8/d78/fftools__ffprobe_8c.html#a92643af322bef24e375211104ee4a0ad',1,'fftools_ffprobe.c']]], + ['define_5fwriter_5fclass_226',['DEFINE_WRITER_CLASS',['../d8/d78/fftools__ffprobe_8c.html#a7c81a9930943facb1612498469e99d7e',1,'DEFINE_WRITER_CLASS(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#acd163907511a8a8c63fe25dfae436b1a',1,'DEFINE_WRITER_CLASS(default): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#afc3839b016a920d539a4234a046c5f86',1,'DEFINE_WRITER_CLASS(compact): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a43e14b8756f345cbac4fda5e390c14c7',1,'DEFINE_WRITER_CLASS(csv): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a5cb7a0a84921b1764c24dd2dc46ae066',1,'DEFINE_WRITER_CLASS(flat): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a12b11e312dd3cf8e012411a0c89ea003',1,'DEFINE_WRITER_CLASS(ini): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a81e607cf71ec28f145a2b25486ad5c82',1,'DEFINE_WRITER_CLASS(json): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a546e7d12c92973be42a67d4d05636f83',1,'DEFINE_WRITER_CLASS(xml): fftools_ffprobe.c']]], + ['describe_5ffilter_5flink_227',['describe_filter_link',['../d2/d36/fftools__ffmpeg__filter_8c.html#a899fd519426902067f15c45b628b601e',1,'fftools_ffmpeg_filter.c']]], + ['device_5fref_228',['device_ref',['../de/dc7/struct_h_w_device.html#ac1615b160aa7dc0f2e314e04cea6aaf9',1,'HWDevice']]], + ['disabled_229',['disabled',['../db/d60/struct_stream_map.html#a4b146ee6da0df9d55d435d9153636504',1,'StreamMap']]], + ['disableredirection_230',['disableRedirection',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a0f689e39aeed46117bccbd88cb825b9b',1,'ffmpegkit::FFmpegKitConfig']]], + ['discard_231',['discard',['../df/d77/struct_options_context.html#a529c61a5ef7c199d9d118c18abb88e86',1,'OptionsContext::discard()'],['../d3/d6e/struct_input_stream.html#ac39249a26eeec2ed084fcc433ec9825e',1,'InputStream::discard()']]], + ['disposition_232',['disposition',['../df/d77/struct_options_context.html#a6ef7bc766a94c671d3e9ffbe3ddaa744',1,'OptionsContext::disposition()'],['../db/dde/struct_output_stream.html#add36114220f77c320ff544748163a15d',1,'OutputStream::disposition()']]], + ['do_5faudio_5fout_233',['do_audio_out',['../d7/d48/fftools__ffmpeg_8c.html#a18033581df001bc68ef11676eb7040bd',1,'fftools_ffmpeg.c']]], + ['do_5fbenchmark_234',['do_benchmark',['../d7/db3/fftools__ffmpeg_8h.html#a6df30d0ba964de54d8050a9b46a45332',1,'do_benchmark(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6df30d0ba964de54d8050a9b46a45332',1,'do_benchmark(): fftools_ffmpeg_opt.c']]], + ['do_5fbenchmark_5fall_235',['do_benchmark_all',['../d7/db3/fftools__ffmpeg_8h.html#a8f4c866b64b4928d5f63a1a4570b6137',1,'do_benchmark_all(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f4c866b64b4928d5f63a1a4570b6137',1,'do_benchmark_all(): fftools_ffmpeg_opt.c']]], + ['do_5fbitexact_236',['do_bitexact',['../d8/d78/fftools__ffprobe_8c.html#a8b70297e3d3efc93b389122fb7ca6995',1,'fftools_ffprobe.c']]], + ['do_5fcount_5fframes_237',['do_count_frames',['../d8/d78/fftools__ffprobe_8c.html#a101f705921555301cd428289479f7bbf',1,'fftools_ffprobe.c']]], + ['do_5fcount_5fpackets_238',['do_count_packets',['../d8/d78/fftools__ffprobe_8c.html#a71724456b8c33b24bce9aa4d7208a333',1,'fftools_ffprobe.c']]], + ['do_5fdeinterlace_239',['do_deinterlace',['../d7/db3/fftools__ffmpeg_8h.html#a7713e7604e1b50d8f1ba5c3c445dde28',1,'do_deinterlace(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7713e7604e1b50d8f1ba5c3c445dde28',1,'do_deinterlace(): fftools_ffmpeg_opt.c']]], + ['do_5fhex_5fdump_240',['do_hex_dump',['../d7/db3/fftools__ffmpeg_8h.html#ae2acfe3d539b3a25ffa72f4143215c13',1,'do_hex_dump(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae2acfe3d539b3a25ffa72f4143215c13',1,'do_hex_dump(): fftools_ffmpeg_opt.c']]], + ['do_5fpkt_5fdump_241',['do_pkt_dump',['../d7/db3/fftools__ffmpeg_8h.html#ae3dab0dd8f469bd52011cfdaa0370ce3',1,'do_pkt_dump(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae3dab0dd8f469bd52011cfdaa0370ce3',1,'do_pkt_dump(): fftools_ffmpeg_opt.c']]], + ['do_5fpsnr_242',['do_psnr',['../d7/d48/fftools__ffmpeg_8c.html#ae1a832e0aee85dbc82c89e7f91b94619',1,'do_psnr(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae1a832e0aee85dbc82c89e7f91b94619',1,'do_psnr(): fftools_ffmpeg_opt.c']]], + ['do_5fread_5fframes_243',['do_read_frames',['../d8/d78/fftools__ffprobe_8c.html#a72107ea93b998775aefd899fb86ea859',1,'fftools_ffprobe.c']]], + ['do_5fread_5fpackets_244',['do_read_packets',['../d8/d78/fftools__ffprobe_8c.html#ad2ba5c9626635585950d178cecf099be',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fchapter_5ftags_245',['do_show_chapter_tags',['../d8/d78/fftools__ffprobe_8c.html#a45603793f8b6b712dcda6d54b14b93f6',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fchapters_246',['do_show_chapters',['../d8/d78/fftools__ffprobe_8c.html#ab7e87e361c2b72fcfacf9f13429b91fe',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fdata_247',['do_show_data',['../d8/d78/fftools__ffprobe_8c.html#a37b47af072408bc43afe922c8e822188',1,'fftools_ffprobe.c']]], + ['do_5fshow_5ferror_248',['do_show_error',['../d8/d78/fftools__ffprobe_8c.html#a8557f26b7d5a87f4b98564854346071e',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fformat_249',['do_show_format',['../d8/d78/fftools__ffprobe_8c.html#ae74750d9edd486d94900ae8ed948f8fc',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fformat_5ftags_250',['do_show_format_tags',['../d8/d78/fftools__ffprobe_8c.html#a8de6748a7ccccc2a063f9cce143f502d',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fframe_5ftags_251',['do_show_frame_tags',['../d8/d78/fftools__ffprobe_8c.html#a18ae30295af9e885d908eb00aaaeb11a',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fframes_252',['do_show_frames',['../d8/d78/fftools__ffprobe_8c.html#a45f35fcf4d72e5712b31512d3f9313b3',1,'fftools_ffprobe.c']]], + ['do_5fshow_5flibrary_5fversions_253',['do_show_library_versions',['../d8/d78/fftools__ffprobe_8c.html#a063a15902c1a19d16d3a0a2f34564a89',1,'fftools_ffprobe.c']]], + ['do_5fshow_5flog_254',['do_show_log',['../d8/d78/fftools__ffprobe_8c.html#a60c7149ca790a7c212e5b86678c329ff',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpacket_5ftags_255',['do_show_packet_tags',['../d8/d78/fftools__ffprobe_8c.html#aa1e54e909ba61cc9b0c17aacc2504770',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpackets_256',['do_show_packets',['../d8/d78/fftools__ffprobe_8c.html#ae248d98e04b3bbff4c99a9b0ec16ca06',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformat_5fcomponents_257',['do_show_pixel_format_components',['../d8/d78/fftools__ffprobe_8c.html#ae55cd9039f968121e3461d267ae9a467',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformat_5fflags_258',['do_show_pixel_format_flags',['../d8/d78/fftools__ffprobe_8c.html#acf0b4c15d6ede5fd83a6dd350e62c35f',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformats_259',['do_show_pixel_formats',['../d8/d78/fftools__ffprobe_8c.html#ad8cb8d629e36d9097b9a6c7cf99d721c',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprogram_5ftags_260',['do_show_program_tags',['../d8/d78/fftools__ffprobe_8c.html#a70499b948b662d89f4df2b968f3396ab',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprogram_5fversion_261',['do_show_program_version',['../d8/d78/fftools__ffprobe_8c.html#a12c5a4db9bcae300f4429e645b4ce9b7',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprograms_262',['do_show_programs',['../d8/d78/fftools__ffprobe_8c.html#ac29ad3c7e980bb73fd83139dd5471645',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstream_5fdisposition_263',['do_show_stream_disposition',['../d8/d78/fftools__ffprobe_8c.html#aeafdf757209145c96327b834a90a6b95',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstream_5ftags_264',['do_show_stream_tags',['../d8/d78/fftools__ffprobe_8c.html#a306720f0599c4d5cb4579b94c83c0bd0',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstreams_265',['do_show_streams',['../d8/d78/fftools__ffprobe_8c.html#a15b9639183dd080969af7a84cce5963b',1,'fftools_ffprobe.c']]], + ['do_5fstreamcopy_266',['do_streamcopy',['../d7/d48/fftools__ffmpeg_8c.html#adb98afa9c4922dc9f61b7130c3beb183',1,'fftools_ffmpeg.c']]], + ['do_5fsubtitle_5fout_267',['do_subtitle_out',['../d7/d48/fftools__ffmpeg_8c.html#a2af61470284cfd849344d6a5fdd3257c',1,'fftools_ffmpeg.c']]], + ['do_5fvideo_5fout_268',['do_video_out',['../d7/d48/fftools__ffmpeg_8c.html#a33a912b98c7c73e52a0ab9cc4e11b995',1,'fftools_ffmpeg.c']]], + ['do_5fvideo_5fstats_269',['do_video_stats',['../d7/d48/fftools__ffmpeg_8c.html#ad97d709b57b2a391fedb2890e6e317d2',1,'fftools_ffmpeg.c']]], + ['dr1_270',['dr1',['../d3/d6e/struct_input_stream.html#a68e82e58b21bef725bb85f96ede7cc63',1,'InputStream']]], + ['dropped_5fkeyframe_271',['dropped_keyframe',['../db/dde/struct_output_stream.html#a7cef8bf1f8b74df86df7de26110aae41',1,'OutputStream']]], + ['dst_5fptr_272',['dst_ptr',['../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c',1,'OptionDef']]], + ['dts_273',['dts',['../d3/d6e/struct_input_stream.html#a1e7893cdf661d9ad7c24fdccc60fa05e',1,'InputStream']]], + ['dts_5fbuffer_274',['dts_buffer',['../d3/d6e/struct_input_stream.html#a1690691cd9bdc598717be8aa911b01ad',1,'InputStream']]], + ['dts_5fdelta_5fthreshold_275',['dts_delta_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a00548df187333420b3e42a9aa05391bd',1,'dts_delta_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a00548df187333420b3e42a9aa05391bd',1,'dts_delta_threshold(): fftools_ffmpeg_opt.c']]], + ['dts_5ferror_5fthreshold_276',['dts_error_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a4d87d507b1382b2b4204e77a528ea679',1,'dts_error_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4d87d507b1382b2b4204e77a528ea679',1,'dts_error_threshold(): fftools_ffmpeg_opt.c']]], + ['dump_5fargument_277',['dump_argument',['../d7/dcc/fftools__cmdutils_8c.html#a71385b26c42379eabd572d72994c1a9a',1,'fftools_cmdutils.c']]], + ['dump_5fattachment_278',['dump_attachment',['../df/d77/struct_options_context.html#a0cb98e36b0f4ceaa7700573f3f99a820',1,'OptionsContext::dump_attachment()'],['../d7/db3/fftools__ffmpeg_8h.html#ae5e3335eee688ea6d2fbe00ae4fcefb6',1,'dump_attachment(AVStream *st, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae5e3335eee688ea6d2fbe00ae4fcefb6',1,'dump_attachment(AVStream *st, const char *filename): fftools_ffmpeg_opt.c']]], + ['dup_5fwarning_279',['dup_warning',['../d7/d48/fftools__ffmpeg_8c.html#a02e5c9a7118413b350add8ebd900e979',1,'fftools_ffmpeg.c']]], + ['duration_280',['duration',['../d8/d99/struct_input_file.html#a0d245cef00bdb0fa9a365ab8480ade2f',1,'InputFile']]], + ['duration_5fframes_281',['duration_frames',['../d8/dee/struct_read_interval.html#a52b6de627c13619efc00610edb25bd1c',1,'ReadInterval']]], + ['duration_5fmax_282',['duration_max',['../d7/d48/fftools__ffmpeg_8c.html#ab98f0ee465a0b23b09ba22ac22f359b7',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/all_5.html b/docs/linux/html/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/docs/linux/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_5.js b/docs/linux/html/search/all_5.js new file mode 100644 index 0000000..77509f9 --- /dev/null +++ b/docs/linux/html/search/all_5.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['eagain_283',['eagain',['../d8/d99/struct_input_file.html#a03da9ae2de14fd2c6ccc0f09e7b8de84',1,'InputFile']]], + ['element_5fname_284',['element_name',['../d9/d11/structsection.html#a58bd0139901401c6d581fc4f0b5418b3',1,'section']]], + ['enableffmpegsessioncompletecallback_285',['enableFFmpegSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a225d7cf6f7b0a5aac42574bdf9e724b1',1,'ffmpegkit::FFmpegKitConfig']]], + ['enableffprobesessioncompletecallback_286',['enableFFprobeSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#add75c3a9c394e7d131bdfe2e6ad04ef7',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablelogcallback_287',['enableLogCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a3a444dfeb55593778d8119840945adaf',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablemediainformationsessioncompletecallback_288',['enableMediaInformationSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#adc32e1a727ed730ae5e0d11830817b7f',1,'ffmpegkit::FFmpegKitConfig']]], + ['enableredirection_289',['enableRedirection',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a38276361e645da189554ab37bc9a7b82',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablestatisticscallback_290',['enableStatisticsCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a8522a259ad9b91f2e4dedc94626866ca',1,'ffmpegkit::FFmpegKitConfig']]], + ['enc_291',['enc',['../db/dde/struct_output_stream.html#a4d5a255030b41edd953fc89973d22ce5',1,'OutputStream']]], + ['enc_5fctx_292',['enc_ctx',['../db/dde/struct_output_stream.html#ab7b674f9a0c60e3e02526d560a83f583',1,'OutputStream']]], + ['enc_5ftime_5fbases_293',['enc_time_bases',['../df/d77/struct_options_context.html#a2b954d5a0ba4320df0e7058f6211fa73',1,'OptionsContext']]], + ['enc_5ftimebase_294',['enc_timebase',['../db/dde/struct_output_stream.html#a8fe39b5fa1ad275e6d11dd5affaee68d',1,'OutputStream']]], + ['encoder_5ffinished_295',['ENCODER_FINISHED',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31acd6c6d4f0864009dfe2fb65c496f39a7',1,'fftools_ffmpeg.h']]], + ['encoder_5fopts_296',['encoder_opts',['../db/dde/struct_output_stream.html#abf222748d6af0fb0c72fa6b77fe2294e',1,'OutputStream']]], + ['encoding_5fneeded_297',['encoding_needed',['../db/dde/struct_output_stream.html#abd0357b7272cdb232e2db73eb458329e',1,'OutputStream']]], + ['end_298',['end',['../d8/dee/struct_read_interval.html#a002ba75702c43b2daba8119d75cdaf48',1,'ReadInterval']]], + ['end_5fis_5foffset_299',['end_is_offset',['../d8/dee/struct_read_interval.html#abf5325eace097eeaeb30ca7eee8ab629',1,'ReadInterval']]], + ['end_5fpts_300',['end_pts',['../d4/dfd/struct_input_stream_1_1sub2video.html#aaf500e3a36c6e6a6920a8e18c6478a8e',1,'InputStream::sub2video']]], + ['entries_5fto_5fshow_301',['entries_to_show',['../d9/d11/structsection.html#a210120b400652c449b2b20db474c2305',1,'section']]], + ['eof_302',['eof',['../d7/d0c/struct_input_filter.html#ad3e4e5041c3312bb70cc4d1f0bbd4726',1,'InputFilter']]], + ['eof_5freached_303',['eof_reached',['../d8/d99/struct_input_file.html#a94be560ca078155d0948bbd1343cf33a',1,'InputFile']]], + ['error_304',['error',['../db/dde/struct_output_stream.html#a578414f8337f6eaf2b88bd62dbfd9be9',1,'OutputStream']]], + ['escape_5fmode_5fstr_305',['escape_mode_str',['../d2/ddd/struct_compact_context.html#ad9d56249a5965a5ec47f3a1241ce6b1e',1,'CompactContext']]], + ['escape_5fstr_306',['escape_str',['../d2/ddd/struct_compact_context.html#aca6e0530af4ddb5ed96f8198e57c7250',1,'CompactContext']]], + ['ex_5fbuf_5f_5f_307',['ex_buf__',['../df/d40/ffmpegkit__exception_8cpp.html#a602bfc62417fcbda9f5e3e6604917b3c',1,'ex_buf__(): ffmpegkit_exception.cpp'],['../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c',1,'ex_buf__(): ffmpegkit_exception.cpp']]], + ['execute_308',['execute',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#ae91e5f7c4e3fa29b02c8b06ae7855353',1,'ffmpegkit::FFmpegKit::execute()'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afbc72f1fbafb91a5e8f8d5ddfd4cba7e',1,'ffmpegkit::FFprobeKit::execute()']]], + ['executeasync_309',['executeAsync',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a9e37e134521dfe25070b7525cd2cacd4',1,'ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback)'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a7b51d19c3ff1ec7955eb40661e6fa7d9',1,'ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#ac71efc2144fdcd99b3daf5abf886e317',1,'ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aed95fef44b783eda6141c64d389a7bce',1,'ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['executeffmpeg_310',['executeFFmpeg',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ae11ffd23ffb96c2f1c982284c7da8d32',1,'FFmpegKitConfig.cpp']]], + ['executeffprobe_311',['executeFFprobe',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a18aca1259cc13fd0030507628aab3982',1,'FFmpegKitConfig.cpp']]], + ['executewitharguments_312',['executeWithArguments',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#acdd2bf847eb2ac707123e30ae0122f7d',1,'ffmpegkit::FFmpegKit::executeWithArguments()'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a25af0c454209a0a40f1b9254be25d429',1,'ffmpegkit::FFprobeKit::executeWithArguments()']]], + ['executewithargumentsasync_313',['executeWithArgumentsAsync',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#aebbcef6767331a8e71bbc44021265b53',1,'ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback)'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a4d60c1563a9262b209cc31a22475c56e',1,'ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afe2fec9021b0bb8cb523d587d170545c',1,'ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aeab0cfb5df1ecf8ef4fb9c1feed8ce94',1,'ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['exit_5fon_5ferror_314',['exit_on_error',['../d7/db3/fftools__ffmpeg_8h.html#aa30902db873df385e004b04e2ecf7f6f',1,'exit_on_error(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa30902db873df385e004b04e2ecf7f6f',1,'exit_on_error(): fftools_ffmpeg_opt.c']]], + ['exit_5fprogram_315',['exit_program',['../d7/dcc/fftools__cmdutils_8c.html#a00fcf983c7dd20dd65568b3ebc20ed44',1,'exit_program(int ret): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16',1,'exit_program(int ret) av_noreturn: fftools_cmdutils.c']]], + ['expand_5ffilename_5ftemplate_316',['expand_filename_template',['../d7/dcc/fftools__cmdutils_8c.html#a7ba283df692ef6c663ed34d968e796c6',1,'fftools_cmdutils.c']]] +]; diff --git a/docs/linux/html/search/all_6.html b/docs/linux/html/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/docs/linux/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_6.js b/docs/linux/html/search/all_6.js new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/docs/linux/html/search/all_6.js @@ -0,0 +1,137 @@ +var searchData= +[ + ['f_317',['f',['../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7',1,'SpecifierOpt']]], + ['fail_318',['fail',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a028bdf7bd5506d9a9c574db0970bf0c2',1,'ffmpegkit::AbstractSession::fail()'],['../d5/d0e/classffmpegkit_1_1_session.html#a0437449324dc9c28a6abbee57b97b478',1,'ffmpegkit::Session::fail()']]], + ['ffmpeg_5fcleanup_319',['ffmpeg_cleanup',['../d7/d48/fftools__ffmpeg_8c.html#aba1cc9fe65233e8e346f8da1a6a59fa8',1,'fftools_ffmpeg.c']]], + ['ffmpeg_5fexecute_320',['ffmpeg_execute',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af42fc9da8015a216f63c1c993d5c1571',1,'ffmpeg_execute(int argc, char **argv): fftools_ffmpeg.c'],['../d7/d48/fftools__ffmpeg_8c.html#af42fc9da8015a216f63c1c993d5c1571',1,'ffmpeg_execute(int argc, char **argv): fftools_ffmpeg.c']]], + ['ffmpeg_5fexited_321',['ffmpeg_exited',['../d7/d48/fftools__ffmpeg_8c.html#a6d1a3c26248469cd3aa5ae35bde51df9',1,'fftools_ffmpeg.c']]], + ['ffmpeg_5foptions_322',['ffmpeg_options',['../d7/d48/fftools__ffmpeg_8c.html#a0e80e44ada7d1ec867ccdad51129ef46',1,'ffmpeg_options(): fftools_ffmpeg.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0e80e44ada7d1ec867ccdad51129ef46',1,'ffmpeg_options(): fftools_ffmpeg.c']]], + ['ffmpeg_5fparse_5foptions_323',['ffmpeg_parse_options',['../d7/db3/fftools__ffmpeg_8h.html#aaaf7c2b3f63972f1f87face8f73cfdd6',1,'fftools_ffmpeg.h']]], + ['ffmpeg_5fvar_5fcleanup_324',['ffmpeg_var_cleanup',['../d7/d48/fftools__ffmpeg_8c.html#af10f17795c85dc03132596d99e76abeb',1,'fftools_ffmpeg.c']]], + ['ffmpegexecute_325',['ffmpegExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#af3040a062ee719588c806685940e7d9e',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegkit_326',['FFmpegKit',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html',1,'ffmpegkit::FFmpegKit'],['../d2/d25/namespaceffmpegkit.html',1,'ffmpegkit']]], + ['ffmpegkit_2ecpp_327',['FFmpegKit.cpp',['../d8/d78/_f_fmpeg_kit_8cpp.html',1,'']]], + ['ffmpegkit_2eh_328',['FFmpegKit.h',['../df/d99/_f_fmpeg_kit_8h.html',1,'']]], + ['ffmpegkit_5fexception_2ecpp_329',['ffmpegkit_exception.cpp',['../df/d40/ffmpegkit__exception_8cpp.html',1,'']]], + ['ffmpegkit_5fexception_2eh_330',['ffmpegkit_exception.h',['../d3/dad/ffmpegkit__exception_8h.html',1,'']]], + ['ffmpegkit_5flog_5fcallback_5ffunction_331',['ffmpegkit_log_callback_function',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a0c4f621bbe9aa3ac50c196cabd2e16a2',1,'ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs): FFmpegKitConfig.cpp'],['../d7/dcc/fftools__cmdutils_8c.html#a0c4f621bbe9aa3ac50c196cabd2e16a2',1,'ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs): FFmpegKitConfig.cpp']]], + ['ffmpegkit_5fstatistics_5fcallback_5ffunction_332',['ffmpegkit_statistics_callback_function',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a58f020191bb344e3ba08e1301aeeb715',1,'FFmpegKitConfig.cpp']]], + ['ffmpegkitconfig_333',['FFmpegKitConfig',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html',1,'ffmpegkit']]], + ['ffmpegkitconfig_2ecpp_334',['FFmpegKitConfig.cpp',['../d8/d45/_f_fmpeg_kit_config_8cpp.html',1,'']]], + ['ffmpegkitconfig_2eh_335',['FFmpegKitConfig.h',['../df/d48/_f_fmpeg_kit_config_8h.html',1,'']]], + ['ffmpegkitinitialize_336',['ffmpegKitInitialize',['../d7/dc8/_arch_detect_8cpp.html#aa061971a1537d94184b8e552df340e9b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d8/d78/_f_fmpeg_kit_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d0/dc3/_f_fprobe_kit_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp']]], + ['ffmpegkitinitializerflag_337',['ffmpegKitInitializerFlag',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9b1c4cadb70f7472665f37c876d06642',1,'FFmpegKitConfig.cpp']]], + ['ffmpegkitnamedpipeprefix_338',['FFmpegKitNamedPipePrefix',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a38d4506d418b9c33105c59a6976e0594',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegkitversion_339',['FFmpegKitVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4af42a82381a735af4c6f55955254d41',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegsession_340',['FFmpegSession',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html',1,'ffmpegkit::FFmpegSession'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8319192eb11eb897dce15a6cf25220a1',1,'ffmpegkit::FFmpegSession::FFmpegSession()']]], + ['ffmpegsession_2ecpp_341',['FFmpegSession.cpp',['../df/d2b/_f_fmpeg_session_8cpp.html',1,'']]], + ['ffmpegsession_2eh_342',['FFmpegSession.h',['../d2/def/_f_fmpeg_session_8h.html',1,'']]], + ['ffmpegsessioncompletecallback_343',['ffmpegSessionCompleteCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4e3022cc16f205a5d2f0e4a7b3896d9b',1,'ffmpegSessionCompleteCallback(): FFmpegKitConfig.cpp'],['../d2/d25/namespaceffmpegkit.html#afc007c369cdeebeca5cbf663ab966443',1,'ffmpegkit::FFmpegSessionCompleteCallback()']]], + ['ffmpegsessioncompletecallback_2eh_344',['FFmpegSessionCompleteCallback.h',['../d6/d47/_f_fmpeg_session_complete_callback_8h.html',1,'']]], + ['ffprobe_5fcleanup_345',['ffprobe_cleanup',['../d8/d78/fftools__ffprobe_8c.html#a8b9c5b8f482dcd7f8e80113cad0ad760',1,'fftools_ffprobe.c']]], + ['ffprobe_5fexecute_346',['ffprobe_execute',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4a459d7e4c3cfbf3e3d38eba042a8d53',1,'ffprobe_execute(int argc, char **argv): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53',1,'ffprobe_execute(int argc, char **argv): fftools_ffprobe.c']]], + ['ffprobe_5foptions_347',['ffprobe_options',['../d8/d78/fftools__ffprobe_8c.html#a1d10fae0a2fec2f3976842e6b59fa8ab',1,'fftools_ffprobe.c']]], + ['ffprobe_5fshow_5flibrary_5fversions_348',['ffprobe_show_library_versions',['../d8/d78/fftools__ffprobe_8c.html#a28f0dcb435c2be287ae1c5fa5e31cf03',1,'fftools_ffprobe.c']]], + ['ffprobe_5fshow_5fpixel_5fformats_349',['ffprobe_show_pixel_formats',['../d8/d78/fftools__ffprobe_8c.html#ad1d3de9114ad0f5c2ead6a551a97e071',1,'fftools_ffprobe.c']]], + ['ffprobe_5fshow_5fprogram_5fversion_350',['ffprobe_show_program_version',['../d8/d78/fftools__ffprobe_8c.html#aadcabc31187da0553b167873502f105b',1,'fftools_ffprobe.c']]], + ['ffprobe_5fvar_5fcleanup_351',['ffprobe_var_cleanup',['../d8/d78/fftools__ffprobe_8c.html#a5d50420ae720539a2af54fef56ba2b9c',1,'fftools_ffprobe.c']]], + ['ffprobeexecute_352',['ffprobeExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a8c62c5d0c322e263f9fc926f3f8972b2',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffprobekit_353',['FFprobeKit',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html',1,'ffmpegkit']]], + ['ffprobekit_2ecpp_354',['FFprobeKit.cpp',['../d0/dc3/_f_fprobe_kit_8cpp.html',1,'']]], + ['ffprobekit_2eh_355',['FFprobeKit.h',['../d4/dad/_f_fprobe_kit_8h.html',1,'']]], + ['ffprobesession_356',['FFprobeSession',['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html',1,'ffmpegkit::FFprobeSession'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#aa0bd393bfe05d4e175d4da37fae90052',1,'ffmpegkit::FFprobeSession::FFprobeSession()']]], + ['ffprobesession_2ecpp_357',['FFprobeSession.cpp',['../d9/d8b/_f_fprobe_session_8cpp.html',1,'']]], + ['ffprobesession_2eh_358',['FFprobeSession.h',['../dc/da0/_f_fprobe_session_8h.html',1,'']]], + ['ffprobesessioncompletecallback_359',['ffprobeSessionCompleteCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad89bc3fb67547d7ced4c6072c541fe78',1,'ffprobeSessionCompleteCallback(): FFmpegKitConfig.cpp'],['../d2/d25/namespaceffmpegkit.html#af3f451cbb99c4dc36e2e2141a33cdf38',1,'ffmpegkit::FFprobeSessionCompleteCallback()']]], + ['ffprobesessioncompletecallback_2eh_360',['FFprobeSessionCompleteCallback.h',['../d5/d14/_f_fprobe_session_complete_callback_8h.html',1,'']]], + ['fftools_5fcmdutils_2ec_361',['fftools_cmdutils.c',['../d7/dcc/fftools__cmdutils_8c.html',1,'']]], + ['fftools_5fcmdutils_2eh_362',['fftools_cmdutils.h',['../d8/d4e/fftools__cmdutils_8h.html',1,'']]], + ['fftools_5fcopy_5fmetadata_363',['fftools_copy_metadata',['../d7/db3/fftools__ffmpeg_8h.html#ada7285da9f88d7f0a0b31eaf66a33200',1,'fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ada7285da9f88d7f0a0b31eaf66a33200',1,'fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['fftools_5fffmpeg_2ec_364',['fftools_ffmpeg.c',['../d7/d48/fftools__ffmpeg_8c.html',1,'']]], + ['fftools_5fffmpeg_2eh_365',['fftools_ffmpeg.h',['../d7/db3/fftools__ffmpeg_8h.html',1,'']]], + ['fftools_5fffmpeg_5ffilter_2ec_366',['fftools_ffmpeg_filter.c',['../d2/d36/fftools__ffmpeg__filter_8c.html',1,'']]], + ['fftools_5fffmpeg_5fhw_2ec_367',['fftools_ffmpeg_hw.c',['../d1/dba/fftools__ffmpeg__hw_8c.html',1,'']]], + ['fftools_5fffmpeg_5fopt_2ec_368',['fftools_ffmpeg_opt.c',['../da/d66/fftools__ffmpeg__opt_8c.html',1,'']]], + ['fftools_5fffprobe_2ec_369',['fftools_ffprobe.c',['../d8/d78/fftools__ffprobe_8c.html',1,'']]], + ['fftools_5fread_5ffile_370',['fftools_read_file',['../d7/db3/fftools__ffmpeg_8h.html#a2b7c43b1c753d5dce457b81d54fdad32',1,'fftools_read_file(const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2b7c43b1c753d5dce457b81d54fdad32',1,'fftools_read_file(const char *filename): fftools_ffmpeg_opt.c']]], + ['file_5fidx_371',['file_idx',['../d6/d2c/struct_audio_channel_map.html#a81b4cfad9b7f201c8a0be6a030688839',1,'AudioChannelMap']]], + ['file_5findex_372',['file_index',['../db/d60/struct_stream_map.html#af8b5bac41a8831242ead1441bdca6783',1,'StreamMap::file_index()'],['../d3/d6e/struct_input_stream.html#ad47d834630eee2dca258aa449fb1df47',1,'InputStream::file_index()'],['../db/dde/struct_output_stream.html#af608105788daa4300771669d992ef890',1,'OutputStream::file_index()']]], + ['file_5foverwrite_373',['file_overwrite',['../d7/d48/fftools__ffmpeg_8c.html#a8268b4d228f88edaf9bbb1dff1d1338c',1,'file_overwrite(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8268b4d228f88edaf9bbb1dff1d1338c',1,'file_overwrite(): fftools_ffmpeg_opt.c']]], + ['filter_374',['filter',['../d7/d0c/struct_input_filter.html#a572505eef6ba5714df813d454185019d',1,'InputFilter::filter()'],['../d0/d0f/struct_output_filter.html#a52b3bac2e051f48e5eabbff6a227881c',1,'OutputFilter::filter()'],['../db/dde/struct_output_stream.html#ad8926e7de923b3eeabd66770caacfe1e',1,'OutputStream::filter()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a7736de8e25968f4aa109d4145d046d42',1,'filter(): fftools_ffmpeg_filter.c']]], + ['filter_5fcodec_5fopts_375',['filter_codec_opts',['../d7/dcc/fftools__cmdutils_8c.html#a6e5214136137bdd2bee321d1fe8c2ae8',1,'filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6e5214136137bdd2bee321d1fe8c2ae8',1,'filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec): fftools_cmdutils.c']]], + ['filter_5fcomplex_5fnbthreads_376',['filter_complex_nbthreads',['../d7/db3/fftools__ffmpeg_8h.html#a2f2388cbef2d4d1e46d2f5d768c1e916',1,'filter_complex_nbthreads(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2f2388cbef2d4d1e46d2f5d768c1e916',1,'filter_complex_nbthreads(): fftools_ffmpeg_opt.c']]], + ['filter_5fframe_377',['filter_frame',['../d3/d6e/struct_input_stream.html#aa43597e5120768ad60b4dc1819942907',1,'InputStream']]], + ['filter_5fhw_5fdevice_378',['filter_hw_device',['../d7/db3/fftools__ffmpeg_8h.html#ab91a5aa23dd763d88ff7cfedeadca8a4',1,'filter_hw_device(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab91a5aa23dd763d88ff7cfedeadca8a4',1,'filter_hw_device(): fftools_ffmpeg_opt.c']]], + ['filter_5fin_5frescale_5fdelta_5flast_379',['filter_in_rescale_delta_last',['../d3/d6e/struct_input_stream.html#a7ff433fc7a48e7b58a4b91e8ff05cf25',1,'InputStream']]], + ['filter_5fnbthreads_380',['filter_nbthreads',['../d7/db3/fftools__ffmpeg_8h.html#a5be020cdefd4b772020265e2bb1d256f',1,'filter_nbthreads(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5be020cdefd4b772020265e2bb1d256f',1,'filter_nbthreads(): fftools_ffmpeg_opt.c']]], + ['filter_5fscripts_381',['filter_scripts',['../df/d77/struct_options_context.html#a1f50533a05eff9a22a649895d20a7949',1,'OptionsContext']]], + ['filtered_5fframe_382',['filtered_frame',['../db/dde/struct_output_stream.html#aa4f15da482fbfdf20b41f21481e1ef3f',1,'OutputStream']]], + ['filtergraph_383',['FilterGraph',['../d9/de7/struct_filter_graph.html',1,'FilterGraph'],['../d7/db3/fftools__ffmpeg_8h.html#a6c3bd7b7eadf5174d97374f2e938ed50',1,'FilterGraph(): fftools_ffmpeg.h']]], + ['filtergraph_5fis_5fsimple_384',['filtergraph_is_simple',['../d7/db3/fftools__ffmpeg_8h.html#ad60a50ce02efbab762effbbdd7eda05e',1,'filtergraph_is_simple(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ad60a50ce02efbab762effbbdd7eda05e',1,'filtergraph_is_simple(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['filtergraphs_385',['filtergraphs',['../d7/d48/fftools__ffmpeg_8c.html#a902ed0b2ffc617e274426bc05118f1c3',1,'filtergraphs(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a902ed0b2ffc617e274426bc05118f1c3',1,'filtergraphs(): fftools_ffmpeg.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a82d07f86ee4d2a9e53332f3e87a61870',1,'filtergraphs(): fftools_ffmpeg_filter.c']]], + ['filters_386',['filters',['../df/d77/struct_options_context.html#a5e4157c817934cc247e53311b12bc9b8',1,'OptionsContext::filters()'],['../d3/d6e/struct_input_stream.html#ad76700001c97c3ce465539f0c698e6bc',1,'InputStream::filters()'],['../db/dde/struct_output_stream.html#ac2cdba9dbd9a315fd3ea90cbfb634409',1,'OutputStream::filters()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a4b2f71496fea33042a05947cc80cbaca',1,'filters(): fftools_ffmpeg_filter.c']]], + ['filters_5fscript_387',['filters_script',['../db/dde/struct_output_stream.html#acbe9d7fddd3daaab6e9337099ec824f2',1,'OutputStream']]], + ['find_5fcodec_5for_5fdie_388',['find_codec_or_die',['../d7/db3/fftools__ffmpeg_8h.html#a218998d876650f9f9ea661f30fecad36',1,'find_codec_or_die(const char *name, enum AVMediaType type, int encoder): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a218998d876650f9f9ea661f30fecad36',1,'find_codec_or_die(const char *name, enum AVMediaType type, int encoder): fftools_ffmpeg_opt.c']]], + ['find_5foption_389',['find_option',['../d7/dcc/fftools__cmdutils_8c.html#a15c4349cbdb92f3c9308430c64155880',1,'fftools_cmdutils.c']]], + ['find_5fstream_5finfo_390',['find_stream_info',['../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753',1,'find_stream_info(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a96a58c49cf1904b28615fd1778a12753',1,'find_stream_info(): fftools_ffmpeg_opt.c']]], + ['finish_5fgroup_391',['finish_group',['../d7/dcc/fftools__cmdutils_8c.html#a78b32a226e4f9c879551b61e586d0f29',1,'fftools_cmdutils.c']]], + ['finish_5foutput_5fstream_392',['finish_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a603a43eb595edc7f66cf508c6815d228',1,'fftools_ffmpeg.c']]], + ['finished_393',['finished',['../db/dde/struct_output_stream.html#a2cb215b02eb510c4b19947063a5d5bd8',1,'OutputStream']]], + ['first_5fdts_394',['first_dts',['../d3/d6e/struct_input_stream.html#aa4918133b75f0447192deea8c21f822e',1,'InputStream']]], + ['first_5fpts_395',['first_pts',['../db/dde/struct_output_stream.html#acc5427da4501a44ef0bdb643063dcee3',1,'OutputStream']]], + ['first_5freport_396',['first_report',['../d7/d48/fftools__ffmpeg_8c.html#a3ab3df1526985d6ab0f00e97d4d97887',1,'fftools_ffmpeg.c']]], + ['fix_5fsub_5fduration_397',['fix_sub_duration',['../df/d77/struct_options_context.html#ae9843427ce2cc7b6f52ad689cd3f333b',1,'OptionsContext::fix_sub_duration()'],['../d3/d6e/struct_input_stream.html#a1ed159d9bc9d71428699968505629b38',1,'InputStream::fix_sub_duration()']]], + ['fkf_5fn_398',['FKF_N',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508affb3715058142056c2f602c81e52c15b',1,'fftools_ffmpeg.h']]], + ['fkf_5fn_5fforced_399',['FKF_N_FORCED',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508af7bb0577a3c487398eaf009668f9c531',1,'fftools_ffmpeg.h']]], + ['fkf_5fnb_400',['FKF_NB',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a433ef01f7e501e6a6afbee4980a80ab1',1,'fftools_ffmpeg.h']]], + ['fkf_5fprev_5fforced_5fn_401',['FKF_PREV_FORCED_N',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a522165f39cb8f0acf7c4bdebd1beb18a',1,'fftools_ffmpeg.h']]], + ['fkf_5fprev_5fforced_5ft_402',['FKF_PREV_FORCED_T',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508aa4cb3dbc7a44f39776072f4349d1facc',1,'fftools_ffmpeg.h']]], + ['fkf_5ft_403',['FKF_T',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a7ea9b7f772135312dec60fcf7b0973de',1,'fftools_ffmpeg.h']]], + ['flags_404',['flags',['../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014',1,'OptionDef::flags()'],['../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7',1,'OptionGroupDef::flags()'],['../d9/d11/structsection.html#a641e1f7e65fdba917c295605ef65e667',1,'section::flags()'],['../d6/dff/struct_writer.html#a2d25d61811924a454b85c0bdde04a4e5',1,'Writer::flags()'],['../d7/dcc/fftools__cmdutils_8c.html#a6ccad09b4a2a06ae178418fdccf5940d',1,'FLAGS(): fftools_cmdutils.c']]], + ['flat_5fescape_5fkey_5fstr_405',['flat_escape_key_str',['../d8/d78/fftools__ffprobe_8c.html#ab5f15995534591d673ddcc1c16954a3c',1,'fftools_ffprobe.c']]], + ['flat_5fescape_5fvalue_5fstr_406',['flat_escape_value_str',['../d8/d78/fftools__ffprobe_8c.html#ab1fcff7be2d63a537f30526dbb75e95e',1,'fftools_ffprobe.c']]], + ['flat_5finit_407',['flat_init',['../d8/d78/fftools__ffprobe_8c.html#a769b0eaf8e88b483c3d7c6ff124c6152',1,'fftools_ffprobe.c']]], + ['flat_5foptions_408',['flat_options',['../d8/d78/fftools__ffprobe_8c.html#ac76e8e7b36d79163466489c79e3c2c41',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fint_409',['flat_print_int',['../d8/d78/fftools__ffprobe_8c.html#a3f40008742005be325593118510b0152',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fsection_5fheader_410',['flat_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a6daa840f13c7ffd6f1c80e557ce0a658',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fstr_411',['flat_print_str',['../d8/d78/fftools__ffprobe_8c.html#a97c040dae8caa4ad5db2eef36d041a71',1,'fftools_ffprobe.c']]], + ['flat_5fwriter_412',['flat_writer',['../d8/d78/fftools__ffprobe_8c.html#a295e1affb625f46a3cb08804a8748147',1,'fftools_ffprobe.c']]], + ['flatcontext_413',['FlatContext',['../d3/db7/struct_flat_context.html',1,'FlatContext'],['../d8/d78/fftools__ffprobe_8c.html#aa873e04a40f701a5828f633e88aa62cc',1,'FlatContext(): fftools_ffprobe.c']]], + ['flush_5fencoders_414',['flush_encoders',['../d7/d48/fftools__ffmpeg_8c.html#adfd9959ab0ec5f8d63e3f5b2cc929590',1,'fftools_ffmpeg.c']]], + ['fmt_5fctx_415',['fmt_ctx',['../d8/d99/struct_input_file.html#ae7302d157e70b39a4a8adbf39eb55f02',1,'InputFile']]], + ['force_5ffps_416',['force_fps',['../df/d77/struct_options_context.html#ac0b3c8a367d846468da2731cba79c2a4',1,'OptionsContext::force_fps()'],['../db/dde/struct_output_stream.html#a51858c10bfe635eb784e3651e6d494f8',1,'OutputStream::force_fps()']]], + ['forced_5fkey_5fframes_417',['forced_key_frames',['../df/d77/struct_options_context.html#a5337109c5edebb476d4aa2e3d0c8c3d5',1,'OptionsContext']]], + ['forced_5fkeyframes_418',['forced_keyframes',['../db/dde/struct_output_stream.html#aa2465b9c30830c607e3af293c44317ad',1,'OutputStream']]], + ['forced_5fkeyframes_5fconst_419',['forced_keyframes_const',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508',1,'fftools_ffmpeg.h']]], + ['forced_5fkeyframes_5fconst_5fnames_420',['forced_keyframes_const_names',['../d7/d48/fftools__ffmpeg_8c.html#a1cd18e061e07695c0547d09e3dd4dcce',1,'forced_keyframes_const_names(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1cd18e061e07695c0547d09e3dd4dcce',1,'forced_keyframes_const_names(): fftools_ffmpeg.c']]], + ['forced_5fkeyframes_5fexpr_5fconst_5fvalues_421',['forced_keyframes_expr_const_values',['../db/dde/struct_output_stream.html#a2bb3ca2969fccae4844c2fecc281f2af',1,'OutputStream']]], + ['forced_5fkeyframes_5fpexpr_422',['forced_keyframes_pexpr',['../db/dde/struct_output_stream.html#aed8b5cf7a740d6a369f5da9052679624',1,'OutputStream']]], + ['forced_5fkf_5fcount_423',['forced_kf_count',['../db/dde/struct_output_stream.html#ad637657f407c25840b6d1ed803b026e3',1,'OutputStream']]], + ['forced_5fkf_5findex_424',['forced_kf_index',['../db/dde/struct_output_stream.html#a7286a2f0c752dbd752ac4192f5c3bca8',1,'OutputStream']]], + ['forced_5fkf_5fpts_425',['forced_kf_pts',['../db/dde/struct_output_stream.html#a53f8e114ef0ef477d3d4409568a68ff6',1,'OutputStream']]], + ['forced_5fkf_5fref_5fpts_426',['forced_kf_ref_pts',['../db/dde/struct_output_stream.html#ac99140cc5be4b4ed439d5e4c854189fa',1,'OutputStream']]], + ['format_427',['format',['../df/d77/struct_options_context.html#a295fefa29d7132a93db9110dce6eeab9',1,'OptionsContext::format()'],['../d7/d0c/struct_input_filter.html#ae704ff879704d2ab90dad159526785e2',1,'InputFilter::format()'],['../d0/d0f/struct_output_filter.html#aeba350050d2035d755254154e6551c49',1,'OutputFilter::format()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a8857cf8c553715fc28281bc7e2a70452',1,'format(): fftools_ffmpeg_filter.c']]], + ['format_5fopts_428',['format_opts',['../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb',1,'OptionGroup::format_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a19714c08385a99d977c6d1bcfed4bca5',1,'format_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5',1,'format_opts(): fftools_cmdutils.c']]], + ['formats_429',['formats',['../d0/d0f/struct_output_filter.html#acd4f04cfb3db05beef2507e397aef9aa',1,'OutputFilter']]], + ['forward_5freport_430',['forward_report',['../d7/d48/fftools__ffmpeg_8c.html#a2503e45acfd6573b686e00ce38519051',1,'fftools_ffmpeg.c']]], + ['frame_431',['frame',['../d4/dfd/struct_input_stream_1_1sub2video.html#a0e7ca3e0eebc5db360ae15f2dac3d622',1,'InputStream::sub2video']]], + ['frame_5faspect_5fratio_432',['frame_aspect_ratio',['../db/dde/struct_output_stream.html#a363d95a998c8dffa3a493ccf39f39309',1,'OutputStream']]], + ['frame_5faspect_5fratios_433',['frame_aspect_ratios',['../df/d77/struct_options_context.html#a1b3de44e5a909b2b3727f0d08e728db6',1,'OptionsContext']]], + ['frame_5fbits_5fper_5fraw_5fsample_434',['frame_bits_per_raw_sample',['../d7/db3/fftools__ffmpeg_8h.html#a0d50908e34c08d4fb8de82f0d2ab1281',1,'frame_bits_per_raw_sample(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0d50908e34c08d4fb8de82f0d2ab1281',1,'frame_bits_per_raw_sample(): fftools_ffmpeg_opt.c']]], + ['frame_5fdrop_5fthreshold_435',['frame_drop_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a709d9cd135b22926f3817be99cd98ce9',1,'frame_drop_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a709d9cd135b22926f3817be99cd98ce9',1,'frame_drop_threshold(): fftools_ffmpeg_opt.c']]], + ['frame_5fnumber_436',['frame_number',['../db/dde/struct_output_stream.html#af6a15d8c4ef3b75cdcbc4c9576d62c7d',1,'OutputStream']]], + ['frame_5fpix_5ffmts_437',['frame_pix_fmts',['../df/d77/struct_options_context.html#a0a7993fd78fe99ec2d1819f8ca7e2a56',1,'OptionsContext']]], + ['frame_5fqueue_438',['frame_queue',['../d7/d0c/struct_input_filter.html#aa3127396f27743175651a8d86e7d0770',1,'InputFilter::frame_queue()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a4b2bd760e9ad33249f9485a85ca6c8d1',1,'frame_queue(): fftools_ffmpeg_filter.c']]], + ['frame_5frate_439',['frame_rate',['../d0/d0f/struct_output_filter.html#ad45013a89f85087d03166652a94d1453',1,'OutputFilter::frame_rate()'],['../db/dde/struct_output_stream.html#ab13acc03a389653d882f221141f12ae3',1,'OutputStream::frame_rate()']]], + ['frame_5frates_440',['frame_rates',['../df/d77/struct_options_context.html#a992eda3c4ddcd938885a702e85919cc8',1,'OptionsContext']]], + ['frame_5fsizes_441',['frame_sizes',['../df/d77/struct_options_context.html#a480f12400c3c6da75bf2323d76bc1179',1,'OptionsContext']]], + ['framerate_442',['framerate',['../d3/d6e/struct_input_stream.html#afbaeaac6e0b1fc3095bb90f17d58621d',1,'InputStream']]], + ['frames_5fdecoded_443',['frames_decoded',['../d3/d6e/struct_input_stream.html#ac61e0f854402b58a64e676bdcfa75dfd',1,'InputStream']]], + ['frames_5fencoded_444',['frames_encoded',['../db/dde/struct_output_stream.html#a669f4ed12e518b1179b038eb0c045a78',1,'OutputStream']]], + ['from_445',['from',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html#a400b4bc94371afdec99dcec23b41c3f5',1,'ffmpegkit::MediaInformationJsonParser']]], + ['fromwitherror_446',['fromWithError',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html#abe7288ce093e0ccbb2714592d07fdb7a',1,'ffmpegkit::MediaInformationJsonParser']]], + ['fs_5fcreate_5fdir_447',['fs_create_dir',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aeb01e0d661bdcdd64b4aa00fcec86813',1,'FFmpegKitConfig.cpp']]], + ['fs_5fexists_448',['fs_exists',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a288ebcda2f93938ea373bee836c27568',1,'FFmpegKitConfig.cpp']]], + ['fully_5fqualified_449',['fully_qualified',['../d7/db2/struct_x_m_l_context.html#a2ab2d6c54f5cf43f568fb2595de18575',1,'XMLContext']]], + ['func_5farg_450',['func_arg',['../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841',1,'OptionDef']]] +]; diff --git a/docs/linux/html/search/all_7.html b/docs/linux/html/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/docs/linux/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_7.js b/docs/linux/html/search/all_7.js new file mode 100644 index 0000000..b64e1e6 --- /dev/null +++ b/docs/linux/html/search/all_7.js @@ -0,0 +1,132 @@ +var searchData= +[ + ['g_451',['g',['../df/d77/struct_options_context.html#affab676ea6f867fa622a0a642d8dacf8',1,'OptionsContext']]], + ['get_5farg_452',['GET_ARG',['../d7/dcc/fftools__cmdutils_8c.html#a77359635accb87859b14d66b53002138',1,'fftools_cmdutils.c']]], + ['get_5fbenchmark_5ftime_5fstamps_453',['get_benchmark_time_stamps',['../d7/d48/fftools__ffmpeg_8c.html#a18d3980caddd835d0192f7ff2ed1b9b2',1,'fftools_ffmpeg.c']]], + ['get_5fbuffer_454',['get_buffer',['../d7/d48/fftools__ffmpeg_8c.html#a8aac50e0d8fe8a1bb2d79b56b9e57b0a',1,'fftools_ffmpeg.c']]], + ['get_5fch_5flayout_5fdesc_455',['GET_CH_LAYOUT_DESC',['../d8/d4e/fftools__cmdutils_8h.html#a950a3e73a77345e482e796c305ef25e4',1,'fftools_cmdutils.h']]], + ['get_5fch_5flayout_5fname_456',['GET_CH_LAYOUT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a7b25c6a8e4f3e33fa53837200cbee607',1,'fftools_cmdutils.h']]], + ['get_5fcodec_5fname_457',['GET_CODEC_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a4670d4ad86c74b82961d07ff8532defe',1,'fftools_cmdutils.h']]], + ['get_5fcodecs_5fsorted_458',['get_codecs_sorted',['../d7/dcc/fftools__cmdutils_8c.html#abbde8c2611500387c0dd5fa7851e9395',1,'fftools_cmdutils.c']]], + ['get_5fcompliance_5fnormal_5fpix_5ffmts_459',['get_compliance_normal_pix_fmts',['../d2/d36/fftools__ffmpeg__filter_8c.html#a2019621f4b0b465a1305cec6943e4d26',1,'fftools_ffmpeg_filter.c']]], + ['get_5fformat_460',['get_format',['../d7/d48/fftools__ffmpeg_8c.html#a360baf543db2a3aa9b2a91740eefdbd3',1,'fftools_ffmpeg.c']]], + ['get_5finput_5fpacket_461',['get_input_packet',['../d7/d48/fftools__ffmpeg_8c.html#acd2e6084ff647db5f4e2ca46a1bfcc7a',1,'fftools_ffmpeg.c']]], + ['get_5finput_5fstream_462',['get_input_stream',['../d7/d48/fftools__ffmpeg_8c.html#ae4fb6d6ec74b5529f4cfe5f4f2bddbd9',1,'fftools_ffmpeg.c']]], + ['get_5fline_463',['get_line',['../d7/db3/fftools__ffmpeg_8h.html#a663c23e27b0412e3d67205757114d16b',1,'get_line(AVIOContext *s): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a663c23e27b0412e3d67205757114d16b',1,'get_line(AVIOContext *s): fftools_ffmpeg_opt.c']]], + ['get_5fmedia_5ftype_5fchar_464',['get_media_type_char',['../d7/dcc/fftools__cmdutils_8c.html#a8a10d00329fa22b369c9b36167947c02',1,'fftools_cmdutils.c']]], + ['get_5fost_5ffilters_465',['get_ost_filters',['../d7/db3/fftools__ffmpeg_8h.html#a55e636661397aed6950fd1f4667e3439',1,'get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a55e636661397aed6950fd1f4667e3439',1,'get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost): fftools_ffmpeg_opt.c']]], + ['get_5fpix_5ffmt_5fname_466',['GET_PIX_FMT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a8000828d615667df850114a1d810567f',1,'fftools_cmdutils.h']]], + ['get_5fpreset_5ffile_467',['get_preset_file',['../d7/dcc/fftools__cmdutils_8c.html#a4ba31d95fc6fc14e603fa86e7a007409',1,'get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4ba31d95fc6fc14e603fa86e7a007409',1,'get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name): fftools_cmdutils.c']]], + ['get_5fpreset_5ffile_5f2_468',['get_preset_file_2',['../d7/db3/fftools__ffmpeg_8h.html#aa9e1780c2ce777fc9a0d205b5769324b',1,'get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa9e1780c2ce777fc9a0d205b5769324b',1,'get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s): fftools_ffmpeg_opt.c']]], + ['get_5frotation_469',['get_rotation',['../d7/dcc/fftools__cmdutils_8c.html#a907c42e3f98cc1183a8788033d0aaaf2',1,'get_rotation(AVStream *st): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2',1,'get_rotation(AVStream *st): fftools_cmdutils.c']]], + ['get_5fsample_5ffmt_5fname_470',['GET_SAMPLE_FMT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#ab04427a6bc0201f8f4a95db84104c8ad',1,'fftools_cmdutils.h']]], + ['get_5fsample_5frate_5fname_471',['GET_SAMPLE_RATE_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a0745a3311be303dc4d6d9da67756e1e9',1,'fftools_cmdutils.h']]], + ['getalllogs_472',['getAllLogs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aac9ea68506e6850c61129387e9267f8b',1,'ffmpegkit::AbstractSession::getAllLogs()'],['../d5/d0e/classffmpegkit_1_1_session.html#a5454b0181929ebe18efb4a14a776c396',1,'ffmpegkit::Session::getAllLogs()']]], + ['getalllogsasstring_473',['getAllLogsAsString',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a45ae0bcffbc0941e69b504e8f9597509',1,'ffmpegkit::AbstractSession::getAllLogsAsString()'],['../d5/d0e/classffmpegkit_1_1_session.html#a07cac9cccb5c166fcc62e6f24e66bf81',1,'ffmpegkit::Session::getAllLogsAsString()']]], + ['getalllogsasstringwithtimeout_474',['getAllLogsAsStringWithTimeout',['../d2/d41/classffmpegkit_1_1_abstract_session.html#adff747b9c88db9c08dcdba0998bfd4fd',1,'ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout()'],['../d5/d0e/classffmpegkit_1_1_session.html#a16fb68a703d240c6e0f24cb69e445f27',1,'ffmpegkit::Session::getAllLogsAsStringWithTimeout()']]], + ['getalllogswithtimeout_475',['getAllLogsWithTimeout',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a8956c557d46197a5c9692493d9767039',1,'ffmpegkit::AbstractSession::getAllLogsWithTimeout()'],['../d5/d0e/classffmpegkit_1_1_session.html#a7a67c262c9ed675a12a78bceefa25905',1,'ffmpegkit::Session::getAllLogsWithTimeout()']]], + ['getallproperties_476',['getAllProperties',['../d9/d9f/classffmpegkit_1_1_chapter.html#a170e52ca9bf97eb9aab0adda659962d2',1,'ffmpegkit::Chapter::getAllProperties()'],['../df/d06/classffmpegkit_1_1_media_information.html#a91df7abd5ecd4f5ab0fec89269007868',1,'ffmpegkit::MediaInformation::getAllProperties()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac246ef7534992f755753800f4c45e890',1,'ffmpegkit::StreamInformation::getAllProperties()']]], + ['getallstatistics_477',['getAllStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a6fd4b901a5481bd14884154fdc68d2ba',1,'ffmpegkit::FFmpegSession']]], + ['getallstatisticswithtimeout_478',['getAllStatisticsWithTimeout',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8b32a642cc207cd8c784bff3cb68ec00',1,'ffmpegkit::FFmpegSession']]], + ['getarch_479',['getArch',['../d1/df7/classffmpegkit_1_1_arch_detect.html#aa8ec8ec6da18cda523df453b9fb3530c',1,'ffmpegkit::ArchDetect']]], + ['getarguments_480',['getArguments',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ad64ef04aef27be8ff64610906e3f1a6b',1,'ffmpegkit::AbstractSession::getArguments()'],['../d5/d0e/classffmpegkit_1_1_session.html#ac8c565b60b800c2f53314a3b6ed0d076',1,'ffmpegkit::Session::getArguments()']]], + ['getaverageframerate_481',['getAverageFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac27c84a91d6d06f446ac5f4afb4615aa',1,'ffmpegkit::StreamInformation']]], + ['getbitrate_482',['getBitrate',['../df/d06/classffmpegkit_1_1_media_information.html#a16b41096a7dabcea735917890f11b64a',1,'ffmpegkit::MediaInformation::getBitrate()'],['../d0/de7/classffmpegkit_1_1_statistics.html#ac705739059ba21b388130969bd6716b6',1,'ffmpegkit::Statistics::getBitrate()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#af43fe6809a6703f41760313986f72d74',1,'ffmpegkit::StreamInformation::getBitrate()']]], + ['getbuilddate_483',['getBuildDate',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae81bcfffeb93c5154d4234ba5a449eb8',1,'ffmpegkit::FFmpegKitConfig']]], + ['getchannellayout_484',['getChannelLayout',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af7f8aea6ba889711fed371b6a9875f4b',1,'ffmpegkit::StreamInformation']]], + ['getchapters_485',['getChapters',['../df/d06/classffmpegkit_1_1_media_information.html#a7daefcefb77c0aaead7fc053a73568ba',1,'ffmpegkit::MediaInformation']]], + ['getcodec_486',['getCodec',['../d7/d9e/classffmpegkit_1_1_stream_information.html#afe7dcb620b1fac7770f9395540a6d25b',1,'ffmpegkit::StreamInformation']]], + ['getcodeclong_487',['getCodecLong',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a9aea9264e39e25d72ccabf3ee6c1a06e',1,'ffmpegkit::StreamInformation']]], + ['getcodectimebase_488',['getCodecTimeBase',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aef11514e2d044c1fe8e6518e64140284',1,'ffmpegkit::StreamInformation']]], + ['getcommand_489',['getCommand',['../d2/d41/classffmpegkit_1_1_abstract_session.html#abbff9035abb4be844fdec3c1bb85ad7f',1,'ffmpegkit::AbstractSession::getCommand()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad0335e493390f541b3990955cf58effb',1,'ffmpegkit::Session::getCommand()']]], + ['getcompletecallback_490',['getCompleteCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a72e8226c1f963444f293ca123649ad51',1,'ffmpegkit::FFmpegSession::getCompleteCallback()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a17a851c3339bc21065be607b4e37205c',1,'ffmpegkit::FFprobeSession::getCompleteCallback()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a907e4c65f883904788479e61471863e7',1,'ffmpegkit::MediaInformationSession::getCompleteCallback()']]], + ['getcreatetime_491',['getCreateTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a6275bb3c30d03d2206592278185d42b4',1,'ffmpegkit::AbstractSession::getCreateTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad60dc768bc3ac021109788d699a3c02f',1,'ffmpegkit::Session::getCreateTime()']]], + ['getdisplayaspectratio_492',['getDisplayAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aa2a4d991f5f5c6f0a351eda5c7996081',1,'ffmpegkit::StreamInformation']]], + ['getduration_493',['getDuration',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2e6c6f9f02c25cd8b3094f3fb388a581',1,'ffmpegkit::AbstractSession::getDuration()'],['../df/d06/classffmpegkit_1_1_media_information.html#a1263766d0af68ee5cb518d2ec5f689b6',1,'ffmpegkit::MediaInformation::getDuration()'],['../d5/d0e/classffmpegkit_1_1_session.html#a2c29ba3c1d1e7cf98ad1cd33ccf80496',1,'ffmpegkit::Session::getDuration()']]], + ['getend_494',['getEnd',['../d9/d9f/classffmpegkit_1_1_chapter.html#aa6d603dc178c14733e385e57575310d3',1,'ffmpegkit::Chapter']]], + ['getendtime_495',['getEndTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a42c94094ebb152fd0dee322e28f1c832',1,'ffmpegkit::AbstractSession::getEndTime()'],['../d9/d9f/classffmpegkit_1_1_chapter.html#abe4ba956fd4fa6895e89cf2298a09fa5',1,'ffmpegkit::Chapter::getEndTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#aaf74622e964e402e86f86f2fc51516fd',1,'ffmpegkit::Session::getEndTime()']]], + ['getexternallibraries_496',['getExternalLibraries',['../dd/dee/classffmpegkit_1_1_packages.html#ad4cb7153ab807db7950a740673155540',1,'ffmpegkit::Packages']]], + ['getfailstacktrace_497',['getFailStackTrace',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ab2db6272ef27d49949107f1d7657cadc',1,'ffmpegkit::AbstractSession::getFailStackTrace()'],['../d5/d0e/classffmpegkit_1_1_session.html#a84d46f5c402e5513b73be1a044052894',1,'ffmpegkit::Session::getFailStackTrace()']]], + ['getffmpegsessioncompletecallback_498',['getFFmpegSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa9f1f3590db0b5e86fd4b4677e32077a',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffmpegsessions_499',['getFFmpegSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ad344deabaab4618515cd45a5b24a66c9',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffmpegversion_500',['getFFmpegVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae46ef5e084039fcbba1229a6df01f476',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffprobesessioncompletecallback_501',['getFFprobeSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aac26e5373d4d6b4d01bbf6dd1954c102',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffprobesessions_502',['getFFprobeSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4f18e5d8e6e35cd7cd39298304daf20b',1,'ffmpegkit::FFmpegKitConfig']]], + ['getfilename_503',['getFilename',['../df/d06/classffmpegkit_1_1_media_information.html#accaadfb31a5cdab63c3efe71af492268',1,'ffmpegkit::MediaInformation']]], + ['getformat_504',['getFormat',['../df/d06/classffmpegkit_1_1_media_information.html#ac65be2b19adbc51ff4debe94281e0058',1,'ffmpegkit::MediaInformation::getFormat()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac12d2e1373a24c00686f6481b7c91eac',1,'ffmpegkit::StreamInformation::getFormat()']]], + ['getheight_505',['getHeight',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a4c356504dc80666b204499e493afaaa3',1,'ffmpegkit::StreamInformation']]], + ['getid_506',['getId',['../d9/d9f/classffmpegkit_1_1_chapter.html#ad06d908c0e64bfd2368ed62f257efc43',1,'ffmpegkit::Chapter']]], + ['getindex_507',['getIndex',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a18ef5d6ecef3763d0614a3fc7a8967d9',1,'ffmpegkit::StreamInformation']]], + ['getlastcompletedsession_508',['getLastCompletedSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aae61aa578905dee229d78885f49c4723',1,'ffmpegkit::FFmpegKitConfig']]], + ['getlastreceivedstatistics_509',['getLastReceivedStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8793e8ef7fad7c9652ad067da2b14c58',1,'ffmpegkit::FFmpegSession']]], + ['getlastsession_510',['getLastSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a33d369d906baa4e54f388c37ea0fb833',1,'ffmpegkit::FFmpegKitConfig']]], + ['getlevel_511',['getLevel',['../db/d1c/classffmpegkit_1_1_log.html#a270dab112d0cee844ca0f44e862d6869',1,'ffmpegkit::Log']]], + ['getlogcallback_512',['getLogCallback',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a5c293803198b3a3aa137efc80bcbf7ab',1,'ffmpegkit::AbstractSession::getLogCallback()'],['../d5/d0e/classffmpegkit_1_1_session.html#a8f53bebf7a57af94915b55d0ed843f2e',1,'ffmpegkit::Session::getLogCallback()']]], + ['getlogdata_513',['getLogData',['../d5/d18/class_callback_data.html#a4e28ab4aeffa4b298cf1f5176803de5f',1,'CallbackData']]], + ['getloglevel_514',['getLogLevel',['../d5/d18/class_callback_data.html#acaf74ab1a753455e368d35336601913b',1,'CallbackData::getLogLevel()'],['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a698a6084ff38d14a4b9a05c06240dc61',1,'ffmpegkit::FFmpegKitConfig::getLogLevel()']]], + ['getlogredirectionstrategy_515',['getLogRedirectionStrategy',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae123c336330266b34a01da81c7b9b0bb',1,'ffmpegkit::AbstractSession::getLogRedirectionStrategy()'],['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4dbd1586599e260e97dccffa875872fd',1,'ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()'],['../d5/d0e/classffmpegkit_1_1_session.html#a279d6f2564448ff711d03401fd1e18ba',1,'ffmpegkit::Session::getLogRedirectionStrategy()']]], + ['getlogs_516',['getLogs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#adf48bfff50be8766d896a718ae3c7102',1,'ffmpegkit::AbstractSession::getLogs()'],['../d5/d0e/classffmpegkit_1_1_session.html#a5121d4443a1d5cb048c3433d8743fcd0',1,'ffmpegkit::Session::getLogs()']]], + ['getlogsasstring_517',['getLogsAsString',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2a8031eeb92a9857cc8c8273b80d6d9e',1,'ffmpegkit::AbstractSession::getLogsAsString()'],['../d5/d0e/classffmpegkit_1_1_session.html#ac710f753ff41150e149f30108a6a9902',1,'ffmpegkit::Session::getLogsAsString()']]], + ['getlongformat_518',['getLongFormat',['../df/d06/classffmpegkit_1_1_media_information.html#a65e50fd4b3bdf79a9230ea38f6c6121f',1,'ffmpegkit::MediaInformation']]], + ['getmaxrss_519',['getmaxrss',['../d7/d48/fftools__ffmpeg_8c.html#a5be8624c1f375fb6ad9bd97bcc05f898',1,'fftools_ffmpeg.c']]], + ['getmediainformation_520',['getMediaInformation',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a4209a1e1730019b6e59f6fbd08d5604c',1,'ffmpegkit::FFprobeKit::getMediaInformation(const std::string path)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a71cd562f26f7552685745dd233994483',1,'ffmpegkit::FFprobeKit::getMediaInformation(const std::string path, const int waitTimeout)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a873ee7cac5b463ef1afd5b5c15859033',1,'ffmpegkit::MediaInformationSession::getMediaInformation()']]], + ['getmediainformationasync_521',['getMediaInformationAsync',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afe71f0fd406cca0049f79e92948a281b',1,'ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a5297c7a1732d87a8da9232bbf62cddf4',1,'ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout)']]], + ['getmediainformationexecute_522',['getMediaInformationExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a7a5113b2ea8715b29dfc31d867422f07',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediainformationfromcommand_523',['getMediaInformationFromCommand',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a6854d0a8008dc27f59d02f4b43e753ec',1,'ffmpegkit::FFprobeKit']]], + ['getmediainformationsessioncompletecallback_524',['getMediaInformationSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#afb324ff63f1c7fde24b48f8e150735c5',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediainformationsessions_525',['getMediaInformationSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a145b6d196a005442878be12f003421af',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediaproperties_526',['getMediaProperties',['../df/d06/classffmpegkit_1_1_media_information.html#a3437f117b3a206535730514738d27259',1,'ffmpegkit::MediaInformation']]], + ['getmessage_527',['getMessage',['../db/d1c/classffmpegkit_1_1_log.html#a62537032ac22b577790d0fd65d94229f',1,'ffmpegkit::Log']]], + ['getnumberproperty_528',['getNumberProperty',['../d9/d9f/classffmpegkit_1_1_chapter.html#a1427eb42943904d75f264006798ab1fa',1,'ffmpegkit::Chapter::getNumberProperty()'],['../df/d06/classffmpegkit_1_1_media_information.html#ac720cbde6de30ba47507dea0200bb04e',1,'ffmpegkit::MediaInformation::getNumberProperty()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a19d79ecbcd7eef198a01874854774768',1,'ffmpegkit::StreamInformation::getNumberProperty()']]], + ['getoutput_529',['getOutput',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4c0bf6d0eefd029d9c077dd04b557e20',1,'ffmpegkit::AbstractSession::getOutput()'],['../d5/d0e/classffmpegkit_1_1_session.html#a3132ed21a2856ccea1bc53f13747b9d1',1,'ffmpegkit::Session::getOutput()']]], + ['getpackagename_530',['getPackageName',['../dd/dee/classffmpegkit_1_1_packages.html#a1903c222baa302b49faeccfc8afc0e59',1,'ffmpegkit::Packages']]], + ['getproperties_531',['getProperties',['../d9/d9f/classffmpegkit_1_1_chapter.html#a59a64e4ac36c20bf3869ec42df2cdefe',1,'ffmpegkit::Chapter::getProperties()'],['../df/d06/classffmpegkit_1_1_media_information.html#a175a800908b60d1c2ed5c04aa1eb13f0',1,'ffmpegkit::MediaInformation::getProperties()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a88de2af97e8e28ac01715d10276d1d93',1,'ffmpegkit::StreamInformation::getProperties()']]], + ['getrealframerate_532',['getRealFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aaad42c352be412be5cffe5e5b61fd30e',1,'ffmpegkit::StreamInformation']]], + ['getreturncode_533',['getReturnCode',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a831bba85f9e0f0011e0ef2a5a0416b05',1,'ffmpegkit::AbstractSession::getReturnCode()'],['../d5/d0e/classffmpegkit_1_1_session.html#a6e787ead46a84f3e253aa0254c8c1f3c',1,'ffmpegkit::Session::getReturnCode()']]], + ['getsampleaspectratio_534',['getSampleAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a65524aca33aff405286898b3ad9a552d',1,'ffmpegkit::StreamInformation']]], + ['getsampleformat_535',['getSampleFormat',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a36540718a572460afa0f90eff96abbe1',1,'ffmpegkit::StreamInformation']]], + ['getsamplerate_536',['getSampleRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a78bb76541dea78dab575ce8adc5d0e03',1,'ffmpegkit::StreamInformation']]], + ['getsession_537',['getSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a73cc75ec0760d8937a2e94615576556d',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionhistorysize_538',['getSessionHistorySize',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a2c531daca0d3c849a7c544b3cd846a09',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionid_539',['getSessionId',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a3053747e2f546263d68dbdd698f7234b',1,'ffmpegkit::AbstractSession::getSessionId()'],['../d5/d18/class_callback_data.html#afb7cbdb5349d1ffea250bfc08213514a',1,'CallbackData::getSessionId()'],['../db/d1c/classffmpegkit_1_1_log.html#a4cb644f8a9e4c39e94811d59f4a8e8e8',1,'ffmpegkit::Log::getSessionId()'],['../d5/d0e/classffmpegkit_1_1_session.html#a8cc37ef959603974566a41bf8b350afd',1,'ffmpegkit::Session::getSessionId()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a53301a783bcc852889308575d91b7d6c',1,'ffmpegkit::Statistics::getSessionId()']]], + ['getsessions_540',['getSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae4f3b63d47826b18765517bec9109c3a',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionsbystate_541',['getSessionsByState',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a83149b18d46a1b264c5f2ca3aab802a4',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsize_542',['getSize',['../df/d06/classffmpegkit_1_1_media_information.html#a7b31540e51abbdd9a4138854c4a575ca',1,'ffmpegkit::MediaInformation::getSize()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a420280eb09a90c318e0a2d154a155424',1,'ffmpegkit::Statistics::getSize()']]], + ['getspeed_543',['getSpeed',['../d0/de7/classffmpegkit_1_1_statistics.html#a795fd05741ec99b38ab2bf414a7ce5f5',1,'ffmpegkit::Statistics']]], + ['getstart_544',['getStart',['../d9/d9f/classffmpegkit_1_1_chapter.html#a76874b4f2586039dc9ee7bbea5b547fa',1,'ffmpegkit::Chapter']]], + ['getstarttime_545',['getStartTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aaffadb42d205ff5df0f03e32f190d01d',1,'ffmpegkit::AbstractSession::getStartTime()'],['../d9/d9f/classffmpegkit_1_1_chapter.html#a136f984b2c6e87099986ec37774fffed',1,'ffmpegkit::Chapter::getStartTime()'],['../df/d06/classffmpegkit_1_1_media_information.html#a414c9d22ead16701f3b874b8163719da',1,'ffmpegkit::MediaInformation::getStartTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#a37d0fefa1af768293efbb27cb6f3b963',1,'ffmpegkit::Session::getStartTime()']]], + ['getstate_546',['getState',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ac09abdfa6ca35b9e47c63e91051e2dd6',1,'ffmpegkit::AbstractSession::getState()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad4975f0b84898dbf73a2d735dc9fed41',1,'ffmpegkit::Session::getState()']]], + ['getstatistics_547',['getStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ad4ae61e0493f1f78b409c37eda4839b0',1,'ffmpegkit::FFmpegSession']]], + ['getstatisticsbitrate_548',['getStatisticsBitrate',['../d5/d18/class_callback_data.html#aa8c015ca125f12e88b25c319b8f717a3',1,'CallbackData']]], + ['getstatisticscallback_549',['getStatisticsCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a1d51f396704a25191ce6b9d2f8099e78',1,'ffmpegkit::FFmpegSession']]], + ['getstatisticsfps_550',['getStatisticsFps',['../d5/d18/class_callback_data.html#add9e5cd3ecc037c98d99bdc7ce5c90d0',1,'CallbackData']]], + ['getstatisticsframenumber_551',['getStatisticsFrameNumber',['../d5/d18/class_callback_data.html#a7f3e53ac431208a02a350c083fb725ba',1,'CallbackData']]], + ['getstatisticsquality_552',['getStatisticsQuality',['../d5/d18/class_callback_data.html#a2be0d8fc9397a173bd47694ae766714e',1,'CallbackData']]], + ['getstatisticssize_553',['getStatisticsSize',['../d5/d18/class_callback_data.html#a8c52fa5e18231fc95cc18b29463b236a',1,'CallbackData']]], + ['getstatisticsspeed_554',['getStatisticsSpeed',['../d5/d18/class_callback_data.html#a515dceae6c3219c64c7c329d2a8ac6aa',1,'CallbackData']]], + ['getstatisticstime_555',['getStatisticsTime',['../d5/d18/class_callback_data.html#ab9dbf9c19854fc85f37bd35c6019bf8f',1,'CallbackData']]], + ['getstreams_556',['getStreams',['../df/d06/classffmpegkit_1_1_media_information.html#a527a348cb1a4c937d271674f047bdd3c',1,'ffmpegkit::MediaInformation']]], + ['getstringproperty_557',['getStringProperty',['../d9/d9f/classffmpegkit_1_1_chapter.html#ae7290f1d87ae0e83d7e6ba0bae0a7810',1,'ffmpegkit::Chapter::getStringProperty()'],['../df/d06/classffmpegkit_1_1_media_information.html#a883a9eb9b1869bbac4dacea2cdbae5b0',1,'ffmpegkit::MediaInformation::getStringProperty()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a90c8ddcbf98d3c0114bc970fcec97faf',1,'ffmpegkit::StreamInformation::getStringProperty()']]], + ['gettags_558',['getTags',['../d9/d9f/classffmpegkit_1_1_chapter.html#afd452a2bad4365301caa2f4505021eb9',1,'ffmpegkit::Chapter::getTags()'],['../df/d06/classffmpegkit_1_1_media_information.html#ae2e96b613cb56cfdbfa5ab7ad916cc22',1,'ffmpegkit::MediaInformation::getTags()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a69f85bf5a51df2e9256ab38da05dcb00',1,'ffmpegkit::StreamInformation::getTags()']]], + ['gettime_559',['getTime',['../d0/de7/classffmpegkit_1_1_statistics.html#a0421bb26e547add2f0e757ed41e00dc8',1,'ffmpegkit::Statistics']]], + ['gettimebase_560',['getTimeBase',['../d9/d9f/classffmpegkit_1_1_chapter.html#ae7a7355ceb87873dba1061a4284b40b6',1,'ffmpegkit::Chapter::getTimeBase()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac1e1c074c81d957dd733edf2d4c648ba',1,'ffmpegkit::StreamInformation::getTimeBase()']]], + ['gettype_561',['getType',['../d5/d18/class_callback_data.html#acf586114d95611c797323c3a6da4fb1c',1,'CallbackData::getType()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a14c329ea3d29c8a7fee5f65c1249af47',1,'ffmpegkit::StreamInformation::getType()']]], + ['getvalue_562',['getValue',['../d4/dcf/classffmpegkit_1_1_return_code.html#abff20bc1b0baa824985f648db5a02277',1,'ffmpegkit::ReturnCode']]], + ['getversion_563',['getVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a0c93081c2b97ba3f8440ea1ab28b7953',1,'ffmpegkit::FFmpegKitConfig']]], + ['getvideofps_564',['getVideoFps',['../d0/de7/classffmpegkit_1_1_statistics.html#a716e9a4224e4df7d198c5d823217299f',1,'ffmpegkit::Statistics']]], + ['getvideoframenumber_565',['getVideoFrameNumber',['../d0/de7/classffmpegkit_1_1_statistics.html#a601e49918576def99a353fa6ef465591',1,'ffmpegkit::Statistics']]], + ['getvideoquality_566',['getVideoQuality',['../d0/de7/classffmpegkit_1_1_statistics.html#a7a6b16aec34a2ba318bdb82e8fa8d824',1,'ffmpegkit::Statistics']]], + ['getwidth_567',['getWidth',['../d7/d9e/classffmpegkit_1_1_stream_information.html#abbf574198e5b668db49b9c859bffcad2',1,'ffmpegkit::StreamInformation']]], + ['global_5fopts_568',['global_opts',['../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32',1,'OptionParseContext']]], + ['globallogredirectionstrategy_569',['globalLogRedirectionStrategy',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9a9f99a751b514643cc0b26f49ac7be9',1,'FFmpegKitConfig.cpp']]], + ['globalsessionid_570',['globalSessionId',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af764c3599e5f16ca1cd943b094aa08fc',1,'globalSessionId(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#af764c3599e5f16ca1cd943b094aa08fc',1,'globalSessionId(): FFmpegKitConfig.cpp']]], + ['got_5feagain_571',['got_eagain',['../d7/d48/fftools__ffmpeg_8c.html#a94a52b0309bc05208e547d00c4ad3cba',1,'fftools_ffmpeg.c']]], + ['got_5foutput_572',['got_output',['../d3/d6e/struct_input_stream.html#a408a0502c42d26b196c524812d70a7e8',1,'InputStream']]], + ['graph_573',['graph',['../d7/d0c/struct_input_filter.html#ab1730578ae74132f67d2e847df4cc624',1,'InputFilter::graph()'],['../d0/d0f/struct_output_filter.html#aa1e455271d4a952bc771b9951beded8e',1,'OutputFilter::graph()'],['../d9/de7/struct_filter_graph.html#ae222203d54c99d90f4308f5fd2285ee5',1,'FilterGraph::graph()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a9acab86967d588b55a2305dbf9d9b2ed',1,'graph(): fftools_ffmpeg_filter.c']]], + ['graph_5fdesc_574',['graph_desc',['../d9/de7/struct_filter_graph.html#ad45139bb5ec5c7766be0b216f9c8c2c4',1,'FilterGraph']]], + ['group_5fdef_575',['group_def',['../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd',1,'OptionGroup::group_def()'],['../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64',1,'OptionGroupList::group_def()']]], + ['groups_576',['groups',['../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a',1,'OptionGroupList::groups()'],['../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993',1,'OptionParseContext::groups()']]], + ['grow_5farray_577',['GROW_ARRAY',['../d8/d4e/fftools__cmdutils_8h.html#aa75501e4e249657d5f0df6d7e8645d4f',1,'GROW_ARRAY(): fftools_cmdutils.h'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a524d36d95eb785bd247fc9537eb24df5',1,'GROW_ARRAY(fg->outputs, fg->nb_outputs): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#aacde78ff027dc6373a8306ed6e4ad573',1,'GROW_ARRAY(ist->filters, ist->nb_filters): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a6ed214ceef0ba03c6a2b957381f5c4da',1,'GROW_ARRAY(filtergraphs, nb_filtergraphs): fftools_ffmpeg_filter.c'],['../d7/dcc/fftools__cmdutils_8c.html#a5a234190bf25a47320f57fd5ba9cea6a',1,'grow_array(void *array, int elem_size, int *size, int new_size): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a5a234190bf25a47320f57fd5ba9cea6a',1,'grow_array(void *array, int elem_size, int *size, int new_size): fftools_cmdutils.c']]], + ['guess_5finput_5fchannel_5flayout_578',['guess_input_channel_layout',['../d7/d48/fftools__ffmpeg_8c.html#a2c6d81c909bf3abbf4685cfadd458a87',1,'guess_input_channel_layout(InputStream *ist): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2c6d81c909bf3abbf4685cfadd458a87',1,'guess_input_channel_layout(InputStream *ist): fftools_ffmpeg.c']]], + ['guess_5flayout_5fmax_579',['guess_layout_max',['../df/d77/struct_options_context.html#a26363c520e8afec96cb23631798e02e4',1,'OptionsContext::guess_layout_max()'],['../d3/d6e/struct_input_stream.html#a99e6bf56ec091f8af11744e4b0499327',1,'InputStream::guess_layout_max()']]] +]; diff --git a/docs/linux/html/search/all_8.html b/docs/linux/html/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/docs/linux/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_8.js b/docs/linux/html/search/all_8.js new file mode 100644 index 0000000..d5902de --- /dev/null +++ b/docs/linux/html/search/all_8.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['h_580',['h',['../d4/dfd/struct_input_stream_1_1sub2video.html#aeecdbc3f86c3bcbf9c42ac7a867e91db',1,'InputStream::sub2video']]], + ['handlesigint_581',['handleSIGINT',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a43764cf85b951e6e0d9cc6f74e24c721',1,'handleSIGINT(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721',1,'handleSIGINT(): FFmpegKitConfig.cpp']]], + ['handlesigpipe_582',['handleSIGPIPE',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#acd19ea38bd4b2ebb549ed4630bdca918',1,'handleSIGPIPE(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918',1,'handleSIGPIPE(): FFmpegKitConfig.cpp']]], + ['handlesigquit_583',['handleSIGQUIT',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#afbd89b768ade5ebb57205d8346acaa03',1,'handleSIGQUIT(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03',1,'handleSIGQUIT(): FFmpegKitConfig.cpp']]], + ['handlesigterm_584',['handleSIGTERM',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447',1,'handleSIGTERM(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447',1,'handleSIGTERM(): FFmpegKitConfig.cpp']]], + ['handlesigxcpu_585',['handleSIGXCPU',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad8148e9f47355623f9ad3c1578844cd3',1,'handleSIGXCPU(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3',1,'handleSIGXCPU(): FFmpegKitConfig.cpp']]], + ['has_5farg_586',['HAS_ARG',['../d8/d4e/fftools__cmdutils_8h.html#affec572f11fcba59ce0cd49cbcd0110f',1,'fftools_cmdutils.h']]], + ['has_5fend_587',['has_end',['../d8/dee/struct_read_interval.html#a536c58792665128dd432c3c46b3386dc',1,'ReadInterval']]], + ['has_5fnested_5felems_588',['has_nested_elems',['../d2/ddd/struct_compact_context.html#a2384aee850920cabfaece87e4c368931',1,'CompactContext']]], + ['has_5fstart_589',['has_start',['../d8/dee/struct_read_interval.html#a8eac5edb31716cd10d0ae859ca225525',1,'ReadInterval']]], + ['hash_590',['hash',['../d8/d78/fftools__ffprobe_8c.html#a7cbfb5e70167d6b83df28ca230a98467',1,'fftools_ffprobe.c']]], + ['header_5fwritten_591',['header_written',['../de/df2/struct_output_file.html#a7f831b66ccff154c4e9d880d900e5b3f',1,'OutputFile']]], + ['height_592',['height',['../d7/d0c/struct_input_filter.html#a2ad802636d7a1f6b3be4eaaa21929c3f',1,'InputFilter::height()'],['../d0/d0f/struct_output_filter.html#aaf9223843b6d814783f74c85b38de080',1,'OutputFilter::height()']]], + ['help_593',['help',['../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8',1,'OptionDef']]], + ['hide_5fbanner_594',['hide_banner',['../d7/dcc/fftools__cmdutils_8c.html#ad41fedd149e409656cc5e266493d15d1',1,'hide_banner(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1',1,'hide_banner(): fftools_cmdutils.c']]], + ['hierarchical_595',['hierarchical',['../d3/db7/struct_flat_context.html#aba2cac86faa289090af7543ff4ffcdcc',1,'FlatContext::hierarchical()'],['../da/d4f/struct_i_n_i_context.html#a5d1ae2886afbb896cdbd02fba7c3a373',1,'INIContext::hierarchical()']]], + ['hw_5fdevice_5fadd_596',['hw_device_add',['../d1/dba/fftools__ffmpeg__hw_8c.html#a27d1714061bcef2cc6c6ef59c2b54bd3',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fdefault_5fname_597',['hw_device_default_name',['../d1/dba/fftools__ffmpeg__hw_8c.html#a2ff6a6bf8a6713b6d9218d5ad537e72b',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5ffree_5fall_598',['hw_device_free_all',['../d7/db3/fftools__ffmpeg_8h.html#a7b352c0afc44da703891d7538bbcf737',1,'hw_device_free_all(void): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a7b352c0afc44da703891d7538bbcf737',1,'hw_device_free_all(void): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fget_5fby_5fname_599',['hw_device_get_by_name',['../d7/db3/fftools__ffmpeg_8h.html#ae46735072274c02ae8a17b80b8faa4dd',1,'hw_device_get_by_name(const char *name): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#ae46735072274c02ae8a17b80b8faa4dd',1,'hw_device_get_by_name(const char *name): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fget_5fby_5ftype_600',['hw_device_get_by_type',['../d1/dba/fftools__ffmpeg__hw_8c.html#ae9e48d5142d26822d8e0c5170248df02',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5finit_5ffrom_5fstring_601',['hw_device_init_from_string',['../d7/db3/fftools__ffmpeg_8h.html#ad60c6eadc7b29c15236419760b2e0094',1,'hw_device_init_from_string(const char *arg, HWDevice **dev): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a3fdd5667b2f22f69baa2f711b13537fb',1,'hw_device_init_from_string(const char *arg, HWDevice **dev_out): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5finit_5ffrom_5ftype_602',['hw_device_init_from_type',['../d1/dba/fftools__ffmpeg__hw_8c.html#ac2df78054133e8e90276b1d12af466da',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fmatch_5fby_5fcodec_603',['hw_device_match_by_codec',['../d1/dba/fftools__ffmpeg__hw_8c.html#af9f7b75f708b69b75bf8ca4e980114af',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5fdecode_604',['hw_device_setup_for_decode',['../d7/db3/fftools__ffmpeg_8h.html#a77e8d12a4bdb9110a2d815b9aa5f8d02',1,'hw_device_setup_for_decode(InputStream *ist): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a77e8d12a4bdb9110a2d815b9aa5f8d02',1,'hw_device_setup_for_decode(InputStream *ist): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5fencode_605',['hw_device_setup_for_encode',['../d7/db3/fftools__ffmpeg_8h.html#a01128ebf95f6a3b130f446b13b171c52',1,'hw_device_setup_for_encode(OutputStream *ost): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a01128ebf95f6a3b130f446b13b171c52',1,'hw_device_setup_for_encode(OutputStream *ost): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5ffilter_606',['hw_device_setup_for_filter',['../d7/db3/fftools__ffmpeg_8h.html#a801831a4517a8db980bbf18c6db58cad',1,'hw_device_setup_for_filter(FilterGraph *fg): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a801831a4517a8db980bbf18c6db58cad',1,'hw_device_setup_for_filter(FilterGraph *fg): fftools_ffmpeg_hw.c']]], + ['hw_5fdevices_607',['hw_devices',['../d1/dba/fftools__ffmpeg__hw_8c.html#ad66ab6371d9721a18af13707d8b2735c',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fframes_5fctx_608',['hw_frames_ctx',['../d7/d0c/struct_input_filter.html#a05a22838e8069f8fdabba7686809494c',1,'InputFilter::hw_frames_ctx()'],['../d3/d6e/struct_input_stream.html#a604ca5401ed734e8b1acb1f416f3210f',1,'InputStream::hw_frames_ctx()']]], + ['hwaccel_609',['HWAccel',['../df/d37/struct_h_w_accel.html',1,'HWAccel'],['../d7/db3/fftools__ffmpeg_8h.html#adb2ebe744084bda695b14e4c3def78ae',1,'HWAccel(): fftools_ffmpeg.h']]], + ['hwaccel_5fauto_610',['HWACCEL_AUTO',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205faf30c0c6c4434db4f22346cdcbd909a02',1,'fftools_ffmpeg.h']]], + ['hwaccel_5fctx_611',['hwaccel_ctx',['../d3/d6e/struct_input_stream.html#aa455c67610467c0d79f42b9c2e620d9f',1,'InputStream::hwaccel_ctx()'],['../db/dde/struct_output_stream.html#ad55cf851854249ab2b56564f92a1a419',1,'OutputStream::hwaccel_ctx()']]], + ['hwaccel_5fdecode_5finit_612',['hwaccel_decode_init',['../d7/db3/fftools__ffmpeg_8h.html#a518f7a9a1bd1b5544a39fdbd1d925663',1,'hwaccel_decode_init(AVCodecContext *avctx): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a518f7a9a1bd1b5544a39fdbd1d925663',1,'hwaccel_decode_init(AVCodecContext *avctx): fftools_ffmpeg_hw.c']]], + ['hwaccel_5fdevice_613',['hwaccel_device',['../d3/d6e/struct_input_stream.html#ae48685e82826c6b5922014d47e2cb6bb',1,'InputStream']]], + ['hwaccel_5fdevice_5ftype_614',['hwaccel_device_type',['../d3/d6e/struct_input_stream.html#af577e45cb148e174ef437f3cbaa8b628',1,'InputStream']]], + ['hwaccel_5fdevices_615',['hwaccel_devices',['../df/d77/struct_options_context.html#a575169dff438645d5cacafbbf8933df3',1,'OptionsContext']]], + ['hwaccel_5fgeneric_616',['HWACCEL_GENERIC',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205fab96d67115af909300a442d76232c0362',1,'fftools_ffmpeg.h']]], + ['hwaccel_5fget_5fbuffer_617',['hwaccel_get_buffer',['../d3/d6e/struct_input_stream.html#a7243fc5f2d9fcbb9249c8a036dc4eb1b',1,'InputStream']]], + ['hwaccel_5fid_618',['hwaccel_id',['../d3/d6e/struct_input_stream.html#a6c3473c28e30500adb3fa7886e6d7c3e',1,'InputStream']]], + ['hwaccel_5fnone_619',['HWACCEL_NONE',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205fa293989c77f66e42d7477243815670be6',1,'fftools_ffmpeg.h']]], + ['hwaccel_5foutput_5fformat_620',['hwaccel_output_format',['../d3/d6e/struct_input_stream.html#a252184ceda81f2d65f63f0470b877bd4',1,'InputStream']]], + ['hwaccel_5foutput_5fformats_621',['hwaccel_output_formats',['../df/d77/struct_options_context.html#aea26c178e1957d33b621622c30ba70d4',1,'OptionsContext']]], + ['hwaccel_5fpix_5ffmt_622',['hwaccel_pix_fmt',['../d3/d6e/struct_input_stream.html#a05769ba0518105626a6d64386795b48f',1,'InputStream']]], + ['hwaccel_5fretrieve_5fdata_623',['hwaccel_retrieve_data',['../d3/d6e/struct_input_stream.html#ad983487b3e7c29f53bb3336190f14051',1,'InputStream::hwaccel_retrieve_data()'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a5a881e2fd908765c2df11400a6c0c7d9',1,'hwaccel_retrieve_data(): fftools_ffmpeg_hw.c']]], + ['hwaccel_5fretrieved_5fpix_5ffmt_624',['hwaccel_retrieved_pix_fmt',['../d3/d6e/struct_input_stream.html#a91c6f154cc61c348f644987044423e57',1,'InputStream']]], + ['hwaccel_5funinit_625',['hwaccel_uninit',['../d3/d6e/struct_input_stream.html#a45c7ee6dae692d19ff3d275032aeea94',1,'InputStream']]], + ['hwaccel_5fvideotoolbox_626',['HWACCEL_VIDEOTOOLBOX',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205faf941d724f9c78c4ac3174e2f6da82bd3',1,'fftools_ffmpeg.h']]], + ['hwaccelid_627',['HWAccelID',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205f',1,'fftools_ffmpeg.h']]], + ['hwaccels_628',['hwaccels',['../df/d77/struct_options_context.html#acf02a9af7df5573f1b59f7d7aed0262d',1,'OptionsContext::hwaccels()'],['../d7/db3/fftools__ffmpeg_8h.html#ae4051148bbc3f89a78b6de3f6eddb997',1,'hwaccels(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae4051148bbc3f89a78b6de3f6eddb997',1,'hwaccels(): fftools_ffmpeg_opt.c']]], + ['hwdevice_629',['HWDevice',['../de/dc7/struct_h_w_device.html',1,'HWDevice'],['../d7/db3/fftools__ffmpeg_8h.html#adf4b6ab8e752e62efbc132c2f039d5b5',1,'HWDevice(): fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/all_9.html b/docs/linux/html/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/docs/linux/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_9.js b/docs/linux/html/search/all_9.js new file mode 100644 index 0000000..2b6c376 --- /dev/null +++ b/docs/linux/html/search/all_9.js @@ -0,0 +1,80 @@ +var searchData= +[ + ['i_630',['i',['../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f',1,'SpecifierOpt::i()'],['../d9/d6d/structunit__value.html#aeb4ceca9397c45a4618e4bfc2f7a8516',1,'unit_value::i()']]], + ['i64_631',['i64',['../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3',1,'SpecifierOpt']]], + ['id_632',['id',['../df/d37/struct_h_w_accel.html#a34f08a5231e54a2fb677aa07bfc2f2b8',1,'HWAccel::id()'],['../d8/dee/struct_read_interval.html#ad770e8186af2b225e597f085aa8c48f6',1,'ReadInterval::id()'],['../d9/d11/structsection.html#a5a7d46d81e403d982cdc2e9cf53ac23b',1,'section::id()']]], + ['if_633',['if',['../d2/d36/fftools__ffmpeg__filter_8c.html#ab505e1817b7afc70dafeb97efb0b9b30',1,'if(!fg) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a28f43fe53e0defac04de32a9cdf0fcc7',1,'if(!(fg->outputs[0]=av_mallocz(sizeof(*fg->outputs[0])))) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ac0d3021e0385614141d0102b205f748d',1,'if(!(fg->inputs[0]=av_mallocz(sizeof(*fg->inputs[0])))) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a711f54c589361ec8c3c0ba6a3dac5553',1,'if(!fg->inputs[0]->frame_queue) exit_program(1): fftools_ffmpeg_filter.c']]], + ['ifilter_5fhas_5fall_5finput_5fformats_634',['ifilter_has_all_input_formats',['../d7/d48/fftools__ffmpeg_8c.html#abe27a2d9d065be49e6580984bfe80639',1,'fftools_ffmpeg.c']]], + ['ifilter_5fparameters_5ffrom_5fcodecpar_635',['ifilter_parameters_from_codecpar',['../d7/d48/fftools__ffmpeg_8c.html#af46fcadeb44ca81755a251c59bd3d78f',1,'fftools_ffmpeg.c']]], + ['ifilter_5fparameters_5ffrom_5fframe_636',['ifilter_parameters_from_frame',['../d7/db3/fftools__ffmpeg_8h.html#a0e8b6e753bb0f299b554d18f3589944a',1,'ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a0e8b6e753bb0f299b554d18f3589944a',1,'ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame): fftools_ffmpeg_filter.c']]], + ['ifilter_5fsend_5feof_637',['ifilter_send_eof',['../d7/d48/fftools__ffmpeg_8c.html#af6db4eeaee5d848f75aebb60927cc9d4',1,'fftools_ffmpeg.c']]], + ['ifilter_5fsend_5fframe_638',['ifilter_send_frame',['../d7/d48/fftools__ffmpeg_8c.html#a7327043132cd8fc6043a82eb04a375a1',1,'fftools_ffmpeg.c']]], + ['iformat_639',['iformat',['../d8/d78/fftools__ffprobe_8c.html#addff5f44b2e3c729fe264e5dd5e9a0b6',1,'fftools_ffprobe.c']]], + ['ignore_5funknown_5fstreams_640',['ignore_unknown_streams',['../d7/d48/fftools__ffmpeg_8c.html#af776ea0ed951054185f753d7d255d884',1,'ignore_unknown_streams(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#af776ea0ed951054185f753d7d255d884',1,'ignore_unknown_streams(): fftools_ffmpeg_opt.c']]], + ['ignoresignal_641',['ignoreSignal',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aaa5681c6fbc9ff144f78d0f6d1febcd7',1,'ffmpegkit::FFmpegKitConfig']]], + ['indent_642',['INDENT',['../d7/dcc/fftools__cmdutils_8c.html#a502b06aa5ad25116c775d201326bad52',1,'fftools_cmdutils.c']]], + ['indent_5flevel_643',['indent_level',['../d6/d53/struct_j_s_o_n_context.html#ab9ee5e75f018a7f47e611c7c78d84c7a',1,'JSONContext::indent_level()'],['../d7/db2/struct_x_m_l_context.html#a65afb619ba52f7a7827f170e18affd3e',1,'XMLContext::indent_level()']]], + ['index_644',['index',['../d9/de7/struct_filter_graph.html#a3ec6739834ba482eacc125e05b59b246',1,'FilterGraph::index()'],['../db/dde/struct_output_stream.html#ae22fe6ee1999d45be0d8722d04294a22',1,'OutputStream::index()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a75762f767ce0a6d43ef976af30892a72',1,'index(): fftools_ffmpeg_filter.c']]], + ['ini_5fescape_5fstr_645',['ini_escape_str',['../d8/d78/fftools__ffprobe_8c.html#ad51c8cc0f7f0800595fc06e1a4f96eda',1,'fftools_ffprobe.c']]], + ['ini_5foptions_646',['ini_options',['../d8/d78/fftools__ffprobe_8c.html#a11278d562c5e5ab63bb775f5a4b09b21',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fint_647',['ini_print_int',['../d8/d78/fftools__ffprobe_8c.html#a14b1c0b1907a1585879c8364d79993fd',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fsection_5fheader_648',['ini_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a67b79e7e7cd22f7088d81033d62bca46',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fstr_649',['ini_print_str',['../d8/d78/fftools__ffprobe_8c.html#a0ee2c507882ae31e92c01dff25f14393',1,'fftools_ffprobe.c']]], + ['ini_5fwriter_650',['ini_writer',['../d8/d78/fftools__ffprobe_8c.html#a9ce85dfd87f7f7cc2723c81122909977',1,'fftools_ffprobe.c']]], + ['inicontext_651',['INIContext',['../da/d4f/struct_i_n_i_context.html',1,'INIContext'],['../d8/d78/fftools__ffprobe_8c.html#aecd7ea33fc4176e73b161f87643322c6',1,'INIContext(): fftools_ffprobe.c']]], + ['init_652',['init',['../df/d37/struct_h_w_accel.html#a6524d8c42550b3b71408c216d0c8698a',1,'HWAccel::init()'],['../d6/dff/struct_writer.html#a8f2ad22b58bb3aa55e709f4e1a47846a',1,'Writer::init()']]], + ['init_5fcomplex_5ffiltergraph_653',['init_complex_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#afdeaca7898e15c0cb645228fd5bb9184',1,'init_complex_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#afdeaca7898e15c0cb645228fd5bb9184',1,'init_complex_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['init_5fcomplex_5ffilters_654',['init_complex_filters',['../d7/db3/fftools__ffmpeg_8h.html#a7ff9fc15df210f9a62862e23e6a18d70',1,'init_complex_filters(void): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ff9fc15df210f9a62862e23e6a18d70',1,'init_complex_filters(void): fftools_ffmpeg_opt.c']]], + ['init_5fdynload_655',['init_dynload',['../d7/dcc/fftools__cmdutils_8c.html#a0f4db71e6407040a01316c537db5040c',1,'init_dynload(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c',1,'init_dynload(void): fftools_cmdutils.c']]], + ['init_5fencoder_5ftime_5fbase_656',['init_encoder_time_base',['../d7/d48/fftools__ffmpeg_8c.html#af347e179754a8ebece457e4a9985717b',1,'fftools_ffmpeg.c']]], + ['init_5finput_5ffilter_657',['init_input_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a68aafc55c81956dab85081fbdc12dec6',1,'fftools_ffmpeg_filter.c']]], + ['init_5finput_5fstream_658',['init_input_stream',['../d7/d48/fftools__ffmpeg_8c.html#a2b55a894aa10247fb5d5e065bc1b1655',1,'fftools_ffmpeg.c']]], + ['init_5foptions_659',['init_options',['../d7/db3/fftools__ffmpeg_8h.html#ae65e836132b235a3c7dbc7bd00b35d54',1,'init_options(OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae65e836132b235a3c7dbc7bd00b35d54',1,'init_options(OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['init_5fopts_660',['init_opts',['../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a',1,'fftools_cmdutils.h']]], + ['init_5foutput_5fbsfs_661',['init_output_bsfs',['../d7/d48/fftools__ffmpeg_8c.html#a433b8659111b2f6ae74ab1fa29445f2c',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5ffilter_662',['init_output_filter',['../d7/db3/fftools__ffmpeg_8h.html#aab8ea01d3694d9b0e70b09a5f1f386e4',1,'init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aab8ea01d3694d9b0e70b09a5f1f386e4',1,'init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc): fftools_ffmpeg_opt.c']]], + ['init_5foutput_5fstream_663',['init_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a906f8498cdec75ab84457f6b929115c6',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fencode_664',['init_output_stream_encode',['../d7/d48/fftools__ffmpeg_8c.html#a44476e48d5e06f4ee53c6e2fdbb62ca0',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fstreamcopy_665',['init_output_stream_streamcopy',['../d7/d48/fftools__ffmpeg_8c.html#ac6e13f95a03d441765f0e4645cc8cf7e',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fwrapper_666',['init_output_stream_wrapper',['../d7/d48/fftools__ffmpeg_8c.html#a6fed1803386760e0d661709f2d199673',1,'fftools_ffmpeg.c']]], + ['init_5fparse_5fcontext_667',['init_parse_context',['../d7/dcc/fftools__cmdutils_8c.html#a64b3f85793c74c02a8f0ba9148e788c5',1,'fftools_cmdutils.c']]], + ['init_5freport_668',['init_report',['../d7/dcc/fftools__cmdutils_8c.html#af0097496b83f2029f059d317c97392f3',1,'fftools_cmdutils.c']]], + ['init_5fsimple_5ffiltergraph_669',['init_simple_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#a82f6df78dc4d5a93f9708b27f16de2b5',1,'fftools_ffmpeg.h']]], + ['initialize_670',['initialize',['../d4/dfd/struct_input_stream_1_1sub2video.html#a15e606590596931e88ebd0b4626bfe97',1,'InputStream::sub2video']]], + ['initialized_671',['initialized',['../db/dde/struct_output_stream.html#a312a32277e0ba791fdfb36f71badb3f6',1,'OutputStream']]], + ['input_5ffilename_672',['input_filename',['../d8/d78/fftools__ffprobe_8c.html#a9f11f88caab44621c063475c996150d6',1,'fftools_ffprobe.c']]], + ['input_5ffiles_673',['input_files',['../d7/d48/fftools__ffmpeg_8c.html#a8815f40afdcda266b01da4b3137a99a3',1,'input_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8815f40afdcda266b01da4b3137a99a3',1,'input_files(): fftools_ffmpeg.c']]], + ['input_5fstream_5fpotentially_5favailable_674',['input_stream_potentially_available',['../da/d66/fftools__ffmpeg__opt_8c.html#af3fa675a2321438e48c5af7dd5ab428e',1,'fftools_ffmpeg_opt.c']]], + ['input_5fstreams_675',['input_streams',['../d7/d48/fftools__ffmpeg_8c.html#a117ba63aa23e378afe665cc6b7c7e043',1,'input_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a117ba63aa23e378afe665cc6b7c7e043',1,'input_streams(): fftools_ffmpeg.c']]], + ['input_5fsync_676',['input_sync',['../d7/d48/fftools__ffmpeg_8c.html#a6c0fb8ee2ce9782980e83a03dacabf07',1,'input_sync(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6c0fb8ee2ce9782980e83a03dacabf07',1,'input_sync(): fftools_ffmpeg_opt.c']]], + ['input_5fts_5foffset_677',['input_ts_offset',['../df/d77/struct_options_context.html#a2c4c55a84195a848045a69557adef98f',1,'OptionsContext::input_ts_offset()'],['../d8/d99/struct_input_file.html#a4ffe49e7403ae36ac4bdff5a7a0a3486',1,'InputFile::input_ts_offset()']]], + ['inputfile_678',['InputFile',['../d8/d99/struct_input_file.html',1,'InputFile'],['../d7/db3/fftools__ffmpeg_8h.html#a0578f87b05bf4a826ca598e8b9b54fd4',1,'InputFile(): fftools_ffmpeg.h'],['../d8/d78/fftools__ffprobe_8c.html#a0578f87b05bf4a826ca598e8b9b54fd4',1,'InputFile(): fftools_ffprobe.c']]], + ['inputfilter_679',['InputFilter',['../d7/d0c/struct_input_filter.html',1,'InputFilter'],['../d7/db3/fftools__ffmpeg_8h.html#a9d3edfcf90acb75a8605f84910763531',1,'InputFilter(): fftools_ffmpeg.h']]], + ['inputs_680',['inputs',['../d9/de7/struct_filter_graph.html#afb2dea711d92a8a8cb94eebecd9c1e13',1,'FilterGraph']]], + ['inputs_5fdone_681',['inputs_done',['../db/dde/struct_output_stream.html#a7d324310316b9727905ca64a0252d652',1,'OutputStream']]], + ['inputstream_682',['InputStream',['../d3/d6e/struct_input_stream.html',1,'InputStream'],['../d7/db3/fftools__ffmpeg_8h.html#af4ae9e3cb7870ef1ee99d840f2a66833',1,'InputStream(): fftools_ffmpeg.h'],['../d8/d78/fftools__ffprobe_8c.html#af4ae9e3cb7870ef1ee99d840f2a66833',1,'InputStream(): fftools_ffprobe.c']]], + ['insert_5ffilter_683',['insert_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#add10aa9fae87dc2259bc821b29dee0f8',1,'fftools_ffmpeg_filter.c']]], + ['insert_5ftrim_684',['insert_trim',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9464282dd90b2de622c38126485d1a80',1,'fftools_ffmpeg_filter.c']]], + ['int_685',['int',['../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11',1,'fftools_ffmpeg_filter.c']]], + ['int_5fcb_686',['int_cb',['../d7/d48/fftools__ffmpeg_8c.html#a2609f74b894b20b003247afde2bd534c',1,'int_cb(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2609f74b894b20b003247afde2bd534c',1,'int_cb(): fftools_ffmpeg.c']]], + ['inter_5fmatrices_687',['inter_matrices',['../df/d77/struct_options_context.html#ae9d66973946dd4c5e2055fde1dd475a9',1,'OptionsContext']]], + ['intra_5fmatrices_688',['intra_matrices',['../df/d77/struct_options_context.html#aa55c3bd5fdf5153fbc7fb675e4b19031',1,'OptionsContext']]], + ['intra_5fonly_689',['intra_only',['../d7/d48/fftools__ffmpeg_8c.html#af848648dccdf2e8b2bfd969886657ed7',1,'intra_only(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#af848648dccdf2e8b2bfd969886657ed7',1,'intra_only(): fftools_ffmpeg_opt.c']]], + ['is_5fcfr_690',['is_cfr',['../db/dde/struct_output_stream.html#a9cd48cbdf903d5bfee1b9c774e5cd46e',1,'OutputStream']]], + ['is_5fdevice_691',['is_device',['../d7/dcc/fftools__cmdutils_8c.html#adc5954c85a43ad60fd2cdb356c25e3d7',1,'fftools_cmdutils.c']]], + ['iscancel_692',['isCancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a3b5cad4e0b089084501753789d7aabac',1,'ffmpegkit::ReturnCode']]], + ['isffmpeg_693',['isFFmpeg',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1de92273a4f99fd1afd1333845a50081',1,'ffmpegkit::AbstractSession::isFFmpeg()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a775982f92212bb2a5d9a94f7c2f00c10',1,'ffmpegkit::FFmpegSession::isFFmpeg()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a150f7a4f5f196a3b65433cfb73ed36d4',1,'ffmpegkit::FFprobeSession::isFFmpeg()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a8564e2ec6735cb868c6d78dbc33554f5',1,'ffmpegkit::MediaInformationSession::isFFmpeg()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad4f761bdc94926fb9ec97f21d2a7df02',1,'ffmpegkit::Session::isFFmpeg()']]], + ['isffprobe_694',['isFFprobe',['../d2/d41/classffmpegkit_1_1_abstract_session.html#afcd5ca2f7f654ca06feaef2de3993a34',1,'ffmpegkit::AbstractSession::isFFprobe()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a241bdf03cea442fb29261ff64763faac',1,'ffmpegkit::FFmpegSession::isFFprobe()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a23da7c24a487747ee61ab0836fb8428c',1,'ffmpegkit::FFprobeSession::isFFprobe()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#aa95a1267abc565c3ffc3163085805cdf',1,'ffmpegkit::MediaInformationSession::isFFprobe()'],['../d5/d0e/classffmpegkit_1_1_session.html#a2486e9f904b06d9eae1a4a8a047c22ff',1,'ffmpegkit::Session::isFFprobe()']]], + ['isltsbuild_695',['isLTSBuild',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ac25bdbe25218002b4cd5e1a3dc2a1d13',1,'ffmpegkit::FFmpegKitConfig']]], + ['ismediainformation_696',['isMediaInformation',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae7d0123e0b30a1adb727bdf2173d3313',1,'ffmpegkit::AbstractSession::isMediaInformation()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#acb5ae95c41830a8cd38b989979c42bc1',1,'ffmpegkit::FFmpegSession::isMediaInformation()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a17e2678ef159b9e764842d5540b20f89',1,'ffmpegkit::FFprobeSession::isMediaInformation()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#adb9c1dc1d62ca03a7474c9ace6e9fa89',1,'ffmpegkit::MediaInformationSession::isMediaInformation()'],['../d5/d0e/classffmpegkit_1_1_session.html#abf6734f48296077fd8a7644960c2e08b',1,'ffmpegkit::Session::isMediaInformation()']]], + ['issuccess_697',['isSuccess',['../d4/dcf/classffmpegkit_1_1_return_code.html#a8b7899aaf19e2cbc2bde14ae687f268b',1,'ffmpegkit::ReturnCode']]], + ['ist_698',['ist',['../d7/d0c/struct_input_filter.html#a495a9bf2659a91ffa184a4cd9395469b',1,'InputFilter::ist()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a3f094febcaf5eb8767fa1d8f5cacd943',1,'ist(): fftools_ffmpeg_filter.c']]], + ['ist_5fin_5ffiltergraph_699',['ist_in_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#a907a40c8c03e3a392e13da4ac4d74453',1,'fftools_ffmpeg.h']]], + ['ist_5findex_700',['ist_index',['../d8/d99/struct_input_file.html#ac2f5772aebd0118a4c464a268dbb4d9c',1,'InputFile']]], + ['isvaluecancel_701',['isValueCancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a5d2459eff24cb4ededa0b6256d1697b9',1,'ffmpegkit::ReturnCode']]], + ['isvalueerror_702',['isValueError',['../d4/dcf/classffmpegkit_1_1_return_code.html#a2d59d53262a3aff0dfbd02183598f7df',1,'ffmpegkit::ReturnCode']]], + ['isvaluesuccess_703',['isValueSuccess',['../d4/dcf/classffmpegkit_1_1_return_code.html#aa1feaa2bbfa730b1b9850a9d712e3ea0',1,'ffmpegkit::ReturnCode']]], + ['item_5fsep_704',['item_sep',['../d2/ddd/struct_compact_context.html#a803eb26c6bc39957c885f8f58dfee861',1,'CompactContext::item_sep()'],['../d6/d53/struct_j_s_o_n_context.html#a27449760861f156d74c410634dc402f7',1,'JSONContext::item_sep()']]], + ['item_5fsep_5fstr_705',['item_sep_str',['../d2/ddd/struct_compact_context.html#ab69db67b807887e2e11247ff28f0482c',1,'CompactContext']]], + ['item_5fstart_5fend_706',['item_start_end',['../d6/d53/struct_j_s_o_n_context.html#aec96064d069baeaa2ca81b9abbed0132',1,'JSONContext']]] +]; diff --git a/docs/linux/html/search/all_a.html b/docs/linux/html/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/docs/linux/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_a.js b/docs/linux/html/search/all_a.js new file mode 100644 index 0000000..f18077a --- /dev/null +++ b/docs/linux/html/search/all_a.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['json_5fescape_5fstr_707',['json_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a22074d8436f247bb35e365f99f40c93d',1,'fftools_ffprobe.c']]], + ['json_5findent_708',['JSON_INDENT',['../d8/d78/fftools__ffprobe_8c.html#af91e82f9e77db029c711fa7610fd0055',1,'fftools_ffprobe.c']]], + ['json_5finit_709',['json_init',['../d8/d78/fftools__ffprobe_8c.html#a1f10ae6402c08dd0e9cbee4f6f3b7ac1',1,'fftools_ffprobe.c']]], + ['json_5foptions_710',['json_options',['../d8/d78/fftools__ffprobe_8c.html#ac4177a44770cdeaf80b617513ef7492f',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fint_711',['json_print_int',['../d8/d78/fftools__ffprobe_8c.html#a67e3a50677ee0b8f41025a26f7e2cff3',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fitem_5fstr_712',['json_print_item_str',['../d8/d78/fftools__ffprobe_8c.html#a5dec917109d895dbfc12fe1201220cc3',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fsection_5ffooter_713',['json_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a2e666bda924feac07dfb8fa91b53f374',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fsection_5fheader_714',['json_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#ae3deeea42ed4991391f2f8c4663bfd5d',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fstr_715',['json_print_str',['../d8/d78/fftools__ffprobe_8c.html#ab417d52a4e3ba43e32c41ae29b89395d',1,'fftools_ffprobe.c']]], + ['json_5fwriter_716',['json_writer',['../d8/d78/fftools__ffprobe_8c.html#ab47efdfa1a2ab283f5aae1ed0c99a386',1,'fftools_ffprobe.c']]], + ['jsoncontext_717',['JSONContext',['../d6/d53/struct_j_s_o_n_context.html',1,'JSONContext'],['../d8/d78/fftools__ffprobe_8c.html#a8387b1297305ecf25b16c9c5be841a31',1,'JSONContext(): fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/all_b.html b/docs/linux/html/search/all_b.html new file mode 100644 index 0000000..14f3403 --- /dev/null +++ b/docs/linux/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_b.js b/docs/linux/html/search/all_b.js new file mode 100644 index 0000000..ad9db68 --- /dev/null +++ b/docs/linux/html/search/all_b.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['keep_5fpix_5ffmt_718',['keep_pix_fmt',['../db/dde/struct_output_stream.html#af0ca53e6e06775f61dcc13af0a11ab82',1,'OutputStream']]], + ['key_719',['key',['../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617',1,'Option']]], + ['keyaverageframerate_720',['KeyAverageFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af4af79e97897e0e29189460875f5f824',1,'ffmpegkit::StreamInformation']]], + ['keybitrate_721',['KeyBitRate',['../df/d06/classffmpegkit_1_1_media_information.html#a791959faf8a82c7833eb577c2312a77a',1,'ffmpegkit::MediaInformation::KeyBitRate()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a8abe866e934c928d2971b568335f8b65',1,'ffmpegkit::StreamInformation::KeyBitRate()']]], + ['keyboard_5flast_5ftime_722',['keyboard_last_time',['../d7/d48/fftools__ffmpeg_8c.html#a738ae2e4a18e645cfe2c6e2b0df2a658',1,'fftools_ffmpeg.c']]], + ['keychannellayout_723',['KeyChannelLayout',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a9cf1e8a705781203225e88301caadce7',1,'ffmpegkit::StreamInformation']]], + ['keycodec_724',['KeyCodec',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a25e6835f5909da2b1943441ae50ba3e2',1,'ffmpegkit::StreamInformation']]], + ['keycodeclong_725',['KeyCodecLong',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a009550e9f64d59870bbc4f36db2470af',1,'ffmpegkit::StreamInformation']]], + ['keycodectimebase_726',['KeyCodecTimeBase',['../d7/d9e/classffmpegkit_1_1_stream_information.html#accfe04ccba52242dbc925fab8aaab080',1,'ffmpegkit::StreamInformation']]], + ['keydisplayaspectratio_727',['KeyDisplayAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a454383e0acfc66f4891af0e65171a23c',1,'ffmpegkit::StreamInformation']]], + ['keyduration_728',['KeyDuration',['../df/d06/classffmpegkit_1_1_media_information.html#a66571dc1d1af67faa7a666730f274feb',1,'ffmpegkit::MediaInformation']]], + ['keyend_729',['KeyEnd',['../d9/d9f/classffmpegkit_1_1_chapter.html#a068446297e39796b837b333abc686e6d',1,'ffmpegkit::Chapter']]], + ['keyendtime_730',['KeyEndTime',['../d9/d9f/classffmpegkit_1_1_chapter.html#ac8c7225cdea083a94c7878be9cc7c639',1,'ffmpegkit::Chapter']]], + ['keyfilename_731',['KeyFilename',['../df/d06/classffmpegkit_1_1_media_information.html#a7ce2eb36bce9b51bc6a57018b0475668',1,'ffmpegkit::MediaInformation']]], + ['keyformat_732',['KeyFormat',['../df/d06/classffmpegkit_1_1_media_information.html#a96dc9ebfbd2d43718b66c6ba60b6c9ad',1,'ffmpegkit::MediaInformation::KeyFormat()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a6f110ad455c8586e9946198a5de64e70',1,'ffmpegkit::StreamInformation::KeyFormat()']]], + ['keyformatlong_733',['KeyFormatLong',['../df/d06/classffmpegkit_1_1_media_information.html#a8b926548cb470373ca5ceef58574f373',1,'ffmpegkit::MediaInformation']]], + ['keyheight_734',['KeyHeight',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a1f3135d96766e1c5739bad2282df2a80',1,'ffmpegkit::StreamInformation']]], + ['keyid_735',['KeyId',['../d9/d9f/classffmpegkit_1_1_chapter.html#a3dbf8a318753b97a933d5f68ced28640',1,'ffmpegkit::Chapter']]], + ['keyindex_736',['KeyIndex',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aa394685b388372ac05f1e2aab5de14c0',1,'ffmpegkit::StreamInformation']]], + ['keymediaproperties_737',['KeyMediaProperties',['../df/d06/classffmpegkit_1_1_media_information.html#a3a7ec9249190bac7a8e36fd2ddb94c53',1,'ffmpegkit::MediaInformation']]], + ['keyrealframerate_738',['KeyRealFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a718f5b5bda3ee573f6d7db70b74ea6cf',1,'ffmpegkit::StreamInformation']]], + ['keysampleaspectratio_739',['KeySampleAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aea7998af7ed6d923431e5984c281f5db',1,'ffmpegkit::StreamInformation']]], + ['keysampleformat_740',['KeySampleFormat',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aaece75b08b975956fe295ea83d76b19d',1,'ffmpegkit::StreamInformation']]], + ['keysamplerate_741',['KeySampleRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a92b5087f94aa93f3b21da4bd20b71714',1,'ffmpegkit::StreamInformation']]], + ['keysize_742',['KeySize',['../df/d06/classffmpegkit_1_1_media_information.html#a36935eb7c4394f2025fa22263236725e',1,'ffmpegkit::MediaInformation']]], + ['keystart_743',['KeyStart',['../d9/d9f/classffmpegkit_1_1_chapter.html#a87a45014fc084a22373fc94d3e43a28f',1,'ffmpegkit::Chapter']]], + ['keystarttime_744',['KeyStartTime',['../d9/d9f/classffmpegkit_1_1_chapter.html#a147880666877ba397ffc8510c9fe1728',1,'ffmpegkit::Chapter::KeyStartTime()'],['../df/d06/classffmpegkit_1_1_media_information.html#ad9371d2d9bcaf8395b0c6d74c65cb71d',1,'ffmpegkit::MediaInformation::KeyStartTime()']]], + ['keytags_745',['KeyTags',['../d9/d9f/classffmpegkit_1_1_chapter.html#a7c25258d7ad56e83cb9a56154a059b22',1,'ffmpegkit::Chapter::KeyTags()'],['../df/d06/classffmpegkit_1_1_media_information.html#aeae08106ddcd31db5225ef88feb3af68',1,'ffmpegkit::MediaInformation::KeyTags()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a0c7a83bb8c8bf94a3d3a3bae6fd1a728',1,'ffmpegkit::StreamInformation::KeyTags()']]], + ['keytimebase_746',['KeyTimeBase',['../d9/d9f/classffmpegkit_1_1_chapter.html#accf6a090708e28875d6f3a6ae36f2444',1,'ffmpegkit::Chapter::KeyTimeBase()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#aae63f7f7f56aa16daa4b7b1e4214d175',1,'ffmpegkit::StreamInformation::KeyTimeBase()']]], + ['keytype_747',['KeyType',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a7a9cdad0acd9e55c4e88c5ff7681dee9',1,'ffmpegkit::StreamInformation']]], + ['keywidth_748',['KeyWidth',['../d7/d9e/classffmpegkit_1_1_stream_information.html#ad1c96a726b4874b148b0b13d90f21de3',1,'ffmpegkit::StreamInformation']]] +]; diff --git a/docs/linux/html/search/all_c.html b/docs/linux/html/search/all_c.html new file mode 100644 index 0000000..da60ab8 --- /dev/null +++ b/docs/linux/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_c.js b/docs/linux/html/search/all_c.js new file mode 100644 index 0000000..80bbf67 --- /dev/null +++ b/docs/linux/html/search/all_c.js @@ -0,0 +1,57 @@ +var searchData= +[ + ['last_5fdropped_749',['last_dropped',['../db/dde/struct_output_stream.html#a0466eb4661da0ffe42946159cfe39a90',1,'OutputStream']]], + ['last_5fframe_750',['last_frame',['../db/dde/struct_output_stream.html#a4a1859416457382b2ec12a7fac7b4220',1,'OutputStream']]], + ['last_5fmux_5fdts_751',['last_mux_dts',['../db/dde/struct_output_stream.html#a1fd50164583dbdc664706be005120c1d',1,'OutputStream']]], + ['last_5fnb0_5fframes_752',['last_nb0_frames',['../db/dde/struct_output_stream.html#af290a1517c777ec365f9b8d986e3f495',1,'OutputStream']]], + ['last_5fpts_753',['last_pts',['../d4/dfd/struct_input_stream_1_1sub2video.html#a992c9fe5de3acf5dce388cffda4fdce8',1,'InputStream::sub2video']]], + ['last_5ftime_754',['last_time',['../d7/d48/fftools__ffmpeg_8c.html#acc56efe535248496e9ae4916b2105f73',1,'fftools_ffmpeg.c']]], + ['last_5fts_755',['last_ts',['../d8/d99/struct_input_file.html#aa0b8f89bb033d864c83cc85c6b8db4ca',1,'InputFile']]], + ['level_756',['level',['../d1/da2/struct_writer_context.html#a70f4367919173df339905042a73df0f4',1,'WriterContext::level()'],['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4',1,'ffmpegkit::Level()']]], + ['level_2eh_757',['Level.h',['../d2/d4b/_level_8h.html',1,'']]], + ['levelavlogdebug_758',['LevelAVLogDebug',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a377b674192dd6d0212f3782280342ad3',1,'ffmpegkit']]], + ['levelavlogerror_759',['LevelAVLogError',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a34bc76c36c5f97ec84ad0e5e1cd35251',1,'ffmpegkit']]], + ['levelavlogfatal_760',['LevelAVLogFatal',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4aeef1c634636b2a03270ba6bab8d2ecf1',1,'ffmpegkit']]], + ['levelavloginfo_761',['LevelAVLogInfo',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4acfd515b605fe5e71a66f2a47072c4d84',1,'ffmpegkit']]], + ['levelavlogpanic_762',['LevelAVLogPanic',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a6be4cb38f1ff513c977d2d5e37deae42',1,'ffmpegkit']]], + ['levelavlogquiet_763',['LevelAVLogQuiet',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a601376fad6823274f99a97262f689c2f',1,'ffmpegkit']]], + ['levelavlogstderr_764',['LevelAVLogStdErr',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a4baea55bfac0c0ac87e3d022c7dfe06e',1,'ffmpegkit']]], + ['levelavlogtrace_765',['LevelAVLogTrace',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4acb7d008328737b034c1ac65843c01413',1,'ffmpegkit']]], + ['levelavlogverbose_766',['LevelAVLogVerbose',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4ab251e1df59c8c9910f62effc9bbc8631',1,'ffmpegkit']]], + ['levelavlogwarning_767',['LevelAVLogWarning',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4aaa2ab1eddacb480d687f17f0116d7e46',1,'ffmpegkit']]], + ['limit_5ffilesize_768',['limit_filesize',['../df/d77/struct_options_context.html#a7af52a5756a9424bbfebe59ab7e08061',1,'OptionsContext::limit_filesize()'],['../de/df2/struct_output_file.html#a4482c7ccf1b6d9f56a7b02490a60fbd8',1,'OutputFile::limit_filesize()']]], + ['linklabel_769',['linklabel',['../db/d60/struct_stream_map.html#aca10df0c2fe6f0e6c13c7b536f6ef7d2',1,'StreamMap']]], + ['listffprobesessions_770',['listFFprobeSessions',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aec0c1a0ef90a48f8e51630dfd77da6ce',1,'ffmpegkit::FFprobeKit']]], + ['listmediainformationsessions_771',['listMediaInformationSessions',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a3407c34719eee4dbfe76340c856ce691',1,'ffmpegkit::FFprobeKit']]], + ['listsessions_772',['listSessions',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a77729f9b4d54caa00602be422a4c0fa9',1,'ffmpegkit::FFmpegKit']]], + ['locate_5foption_773',['locate_option',['../d7/dcc/fftools__cmdutils_8c.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb',1,'locate_option(int argc, char **argv, const OptionDef *options, const char *optname): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb',1,'locate_option(int argc, char **argv, const OptionDef *options, const char *optname): fftools_cmdutils.c']]], + ['log_774',['Log',['../db/d1c/classffmpegkit_1_1_log.html',1,'ffmpegkit::Log'],['../db/d1c/classffmpegkit_1_1_log.html#afa85b789f60074a47bb21005f788f1e2',1,'ffmpegkit::Log::Log()']]], + ['log_2ecpp_775',['Log.cpp',['../d0/da7/_log_8cpp.html',1,'']]], + ['log_2eh_776',['Log.h',['../da/df4/_log_8h.html',1,'']]], + ['log_5fbuffer_777',['log_buffer',['../d8/d78/fftools__ffprobe_8c.html#a901429a8dc63d249974abfe9c0db19cd',1,'fftools_ffprobe.c']]], + ['log_5fbuffer_5fsize_778',['log_buffer_size',['../d8/d78/fftools__ffprobe_8c.html#a49f1ce7d20b4283666e4c7b46a42cf78',1,'fftools_ffprobe.c']]], + ['log_5fcallback_779',['log_callback',['../d8/d78/fftools__ffprobe_8c.html#a036ce6396284db04f4ce560e2b92b89b',1,'fftools_ffprobe.c']]], + ['log_5fcallback_5fhelp_780',['log_callback_help',['../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2',1,'fftools_cmdutils.h']]], + ['log_5fcallback_5fnull_781',['log_callback_null',['../d7/d48/fftools__ffmpeg_8c.html#a79c04bfda90dc3b1887eeb43dd05a075',1,'fftools_ffmpeg.c']]], + ['log_5fcallback_5freport_782',['log_callback_report',['../d7/dcc/fftools__cmdutils_8c.html#ac1543a3e6957a77715b9dd49e9f264f5',1,'fftools_cmdutils.c']]], + ['log_5flevel_783',['log_level',['../dd/d15/struct_log_buffer.html#af3028bcf90ea9a33f041e1cac4f4a29b',1,'LogBuffer']]], + ['log_5fmessage_784',['log_message',['../dd/d15/struct_log_buffer.html#a5dad0b243a5ca31e55d6f2d0e751302e',1,'LogBuffer']]], + ['log_5fread_5finterval_785',['log_read_interval',['../d8/d78/fftools__ffprobe_8c.html#a959b3207d76ed78281feeec3d1b990b0',1,'fftools_ffprobe.c']]], + ['logbuffer_786',['LogBuffer',['../dd/d15/struct_log_buffer.html',1,'LogBuffer'],['../d8/d78/fftools__ffprobe_8c.html#a83bea2bdf095e7e39b33a895b7a9aa1d',1,'LogBuffer(): fftools_ffprobe.c']]], + ['logcallback_787',['LogCallback',['../d2/d25/namespaceffmpegkit.html#a961de60de61ed79c2c7dfee08c9fa939',1,'ffmpegkit::LogCallback()'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7e70dcb2518bb21bffb91bdd7133d329',1,'logCallback(): FFmpegKitConfig.cpp']]], + ['logcallback_2eh_788',['LogCallback.h',['../d4/daf/_log_callback_8h.html',1,'']]], + ['logcallbackdataadd_789',['logCallbackDataAdd',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a3905ca459cdb59e362e6a549a9bcdbd8',1,'FFmpegKitConfig.cpp']]], + ['logfile_790',['logfile',['../db/dde/struct_output_stream.html#af1ef91b1ddb70244dd37415f774e025b',1,'OutputStream']]], + ['logfile_5fprefix_791',['logfile_prefix',['../db/dde/struct_output_stream.html#afd6ee54ae3807e7bdaec44f2c12c99e1',1,'OutputStream']]], + ['logleveltostring_792',['logLevelToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ada26e691d38c8bfa840ed820aebe76c7',1,'ffmpegkit::FFmpegKitConfig']]], + ['logredirectionstrategy_793',['LogRedirectionStrategy',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebe',1,'ffmpegkit']]], + ['logredirectionstrategy_2eh_794',['LogRedirectionStrategy.h',['../d6/d42/_log_redirection_strategy_8h.html',1,'']]], + ['logredirectionstrategyalwaysprintlogs_795',['LogRedirectionStrategyAlwaysPrintLogs',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea4ac7c7054007119d71549846c2544288',1,'ffmpegkit']]], + ['logredirectionstrategyneverprintlogs_796',['LogRedirectionStrategyNeverPrintLogs',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea51a85a2abdd53daab89f93edb3779635',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhenglobalcallbacknotdefined_797',['LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebeacf82deb57f2cfc6bfac3ab4c9a8e534c',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhennocallbacksdefined_798',['LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea662a08ddb8f44ec2a54b2259108d11b1',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhensessioncallbacknotdefined_799',['LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea3b1e8dc7839b7abe69fe333e37f71936',1,'ffmpegkit']]], + ['logtype_800',['LogType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318aeeced9e809b51a3532dfc6701bbe3bb6',1,'FFmpegKitConfig.cpp']]], + ['longjmp_5fvalue_801',['longjmp_value',['../d7/dcc/fftools__cmdutils_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c'],['../d7/d48/fftools__ffmpeg_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c'],['../d8/d78/fftools__ffprobe_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c']]], + ['loop_802',['loop',['../df/d77/struct_options_context.html#adb4fef1beb9570a46d0ba40c3d309a5b',1,'OptionsContext::loop()'],['../d8/d99/struct_input_file.html#a5553e5dc5f52efdf42e8f5e2afb84156',1,'InputFile::loop()']]] +]; diff --git a/docs/linux/html/search/all_d.html b/docs/linux/html/search/all_d.html new file mode 100644 index 0000000..bc376fe --- /dev/null +++ b/docs/linux/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_d.js b/docs/linux/html/search/all_d.js new file mode 100644 index 0000000..84ad477 --- /dev/null +++ b/docs/linux/html/search/all_d.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['main_5fffmpeg_5freturn_5fcode_803',['main_ffmpeg_return_code',['../d7/d48/fftools__ffmpeg_8c.html#ab641f3810c2d179ac1b20b73ce4f6e78',1,'fftools_ffmpeg.c']]], + ['main_5fffprobe_5freturn_5fcode_804',['main_ffprobe_return_code',['../d8/d78/fftools__ffprobe_8c.html#a3a5c88d7f1848f77903ed1c7709b2dd3',1,'fftools_ffprobe.c']]], + ['mark_5fsection_5fshow_5fentries_805',['mark_section_show_entries',['../d8/d78/fftools__ffprobe_8c.html#ae2809d325eb11942025562d2e5e300d2',1,'fftools_ffprobe.c']]], + ['match_5fgroup_5fseparator_806',['match_group_separator',['../d7/dcc/fftools__cmdutils_8c.html#a029335d12e282d56b7fec7abb40389d5',1,'fftools_cmdutils.c']]], + ['match_5fper_5fstream_5fopt_807',['MATCH_PER_STREAM_OPT',['../da/d66/fftools__ffmpeg__opt_8c.html#acb83c221072b82ac43e6ebe61787072c',1,'fftools_ffmpeg_opt.c']]], + ['match_5fper_5ftype_5fopt_808',['MATCH_PER_TYPE_OPT',['../da/d66/fftools__ffmpeg__opt_8c.html#a4cc472c69041f4fae418334430ccb829',1,'fftools_ffmpeg_opt.c']]], + ['match_5fsection_809',['match_section',['../d8/d78/fftools__ffprobe_8c.html#a9f1d8914421ec39c5001ab02e7a8922b',1,'fftools_ffprobe.c']]], + ['max_5ferror_5frate_810',['max_error_rate',['../d7/db3/fftools__ffmpeg_8h.html#a388b87af90f84d6eb3c06e9c10f11ec3',1,'max_error_rate(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a388b87af90f84d6eb3c06e9c10f11ec3',1,'max_error_rate(): fftools_ffmpeg_opt.c']]], + ['max_5fframe_5frate_811',['max_frame_rate',['../db/dde/struct_output_stream.html#a89138b534350318574ca78cdb1c4ab4a',1,'OutputStream']]], + ['max_5fframe_5frates_812',['max_frame_rates',['../df/d77/struct_options_context.html#a2bbb7b99ec93e0dd209990b790a08595',1,'OptionsContext']]], + ['max_5fframes_813',['max_frames',['../df/d77/struct_options_context.html#a3517181834318f5959bd05e47c4837ea',1,'OptionsContext::max_frames()'],['../db/dde/struct_output_stream.html#a6cb813f6df7342f0f37825241a3cd51b',1,'OutputStream::max_frames()']]], + ['max_5fmuxing_5fqueue_5fsize_814',['max_muxing_queue_size',['../df/d77/struct_options_context.html#ac6ab45c79f4aafd2d474631965f64f86',1,'OptionsContext::max_muxing_queue_size()'],['../db/dde/struct_output_stream.html#a006aed9d49962d931da10f19a135f2bb',1,'OutputStream::max_muxing_queue_size()']]], + ['max_5fpts_815',['max_pts',['../d3/d6e/struct_input_stream.html#a911d752902aa8d4666ccefd8c912c91e',1,'InputStream']]], + ['max_5fregistered_5fwriters_5fnb_816',['MAX_REGISTERED_WRITERS_NB',['../d8/d78/fftools__ffprobe_8c.html#a84e0af416e5dfb194932091ef05f7df5',1,'fftools_ffprobe.c']]], + ['max_5fstreams_817',['MAX_STREAMS',['../d7/db3/fftools__ffmpeg_8h.html#a4a1e12ec49840b798c6413a8f6c947a9',1,'fftools_ffmpeg.h']]], + ['media_5ftype_5fstring_818',['media_type_string',['../d8/d4e/fftools__cmdutils_8h.html#a1d155f9f5addbe58b32c5c180831caa9',1,'fftools_cmdutils.h']]], + ['mediainformation_819',['MediaInformation',['../df/d06/classffmpegkit_1_1_media_information.html',1,'ffmpegkit::MediaInformation'],['../df/d06/classffmpegkit_1_1_media_information.html#a2a60b762ef3016ecfc3558d50a5e4e2a',1,'ffmpegkit::MediaInformation::MediaInformation()']]], + ['mediainformation_2ecpp_820',['MediaInformation.cpp',['../d1/dc9/_media_information_8cpp.html',1,'']]], + ['mediainformation_2eh_821',['MediaInformation.h',['../d8/d78/_media_information_8h.html',1,'']]], + ['mediainformationjsonparser_822',['MediaInformationJsonParser',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html',1,'ffmpegkit']]], + ['mediainformationjsonparser_2ecpp_823',['MediaInformationJsonParser.cpp',['../d1/dbf/_media_information_json_parser_8cpp.html',1,'']]], + ['mediainformationjsonparser_2eh_824',['MediaInformationJsonParser.h',['../d7/d3a/_media_information_json_parser_8h.html',1,'']]], + ['mediainformationjsonparserkeychapters_825',['MediaInformationJsonParserKeyChapters',['../d1/dbf/_media_information_json_parser_8cpp.html#aade3533fe9011de03f2a3999c415f705',1,'MediaInformationJsonParser.cpp']]], + ['mediainformationjsonparserkeystreams_826',['MediaInformationJsonParserKeyStreams',['../d1/dbf/_media_information_json_parser_8cpp.html#a23dd6b1525d6a61351e015cce5a6cde7',1,'MediaInformationJsonParser.cpp']]], + ['mediainformationsession_827',['MediaInformationSession',['../df/db7/classffmpegkit_1_1_media_information_session.html',1,'ffmpegkit::MediaInformationSession'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a691c07daaa9bfe292275354002dadb64',1,'ffmpegkit::MediaInformationSession::MediaInformationSession()']]], + ['mediainformationsession_2ecpp_828',['MediaInformationSession.cpp',['../d3/d5d/_media_information_session_8cpp.html',1,'']]], + ['mediainformationsession_2eh_829',['MediaInformationSession.h',['../dd/d69/_media_information_session_8h.html',1,'']]], + ['mediainformationsessioncompletecallback_830',['MediaInformationSessionCompleteCallback',['../d2/d25/namespaceffmpegkit.html#a909392d52220d37ab6e39bd7f4d6abb1',1,'ffmpegkit::MediaInformationSessionCompleteCallback()'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af17bebd57f370c52961bfc9c3abc21f2',1,'mediaInformationSessionCompleteCallback(): FFmpegKitConfig.cpp']]], + ['mediainformationsessioncompletecallback_2eh_831',['MediaInformationSessionCompleteCallback.h',['../df/d57/_media_information_session_complete_callback_8h.html',1,'']]], + ['messagesintransmit_832',['messagesInTransmit',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4f6b1eacd532a12d7c8af23a10ef26ca',1,'ffmpegkit::FFmpegKitConfig']]], + ['metadata_833',['metadata',['../df/d77/struct_options_context.html#a65dd95e326773a3c90feee5d1646910c',1,'OptionsContext']]], + ['metadata_5fchapters_5fmanual_834',['metadata_chapters_manual',['../df/d77/struct_options_context.html#ab05f5a3458331e424098215ded646189',1,'OptionsContext']]], + ['metadata_5fcheck_5findex_835',['METADATA_CHECK_INDEX',['../da/d66/fftools__ffmpeg__opt_8c.html#a2b9568a0878b1ab0c5892ecd144030d2',1,'fftools_ffmpeg_opt.c']]], + ['metadata_5fglobal_5fmanual_836',['metadata_global_manual',['../df/d77/struct_options_context.html#a41bb08c4be0cdb0706728c266a866834',1,'OptionsContext']]], + ['metadata_5fmap_837',['metadata_map',['../df/d77/struct_options_context.html#a05f340e8bd1fb8084c1ea6e41b09b4bd',1,'OptionsContext']]], + ['metadata_5fstreams_5fmanual_838',['metadata_streams_manual',['../df/d77/struct_options_context.html#a5bc5b900472685d4c3c33352f3300254',1,'OptionsContext']]], + ['min_5fpts_839',['min_pts',['../d3/d6e/struct_input_stream.html#aeb79819841b6d172faf8c108db4ffbd0',1,'InputStream']]], + ['mux_5fmax_5fdelay_840',['mux_max_delay',['../df/d77/struct_options_context.html#adefe378fc52e83215a84f9fd8fd40e0e',1,'OptionsContext']]], + ['mux_5fpreload_841',['mux_preload',['../df/d77/struct_options_context.html#a07d718f49941fb773665ac6f0657bab8',1,'OptionsContext']]], + ['mux_5ftimebase_842',['mux_timebase',['../db/dde/struct_output_stream.html#a253593d67e5088cf53c89aeb7e82cdc7',1,'OutputStream']]], + ['muxer_5ffinished_843',['MUXER_FINISHED',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31ae8b7f720076ace3e8c20648c8b77835b',1,'fftools_ffmpeg.h']]], + ['muxing_5fqueue_844',['muxing_queue',['../db/dde/struct_output_stream.html#a9c6665bb019599fc7aeae17c1dadb814',1,'OutputStream']]], + ['muxing_5fqueue_5fdata_5fsize_845',['muxing_queue_data_size',['../db/dde/struct_output_stream.html#af18a803d7d7db08a1cdac6b54fc1a58f',1,'OutputStream']]], + ['muxing_5fqueue_5fdata_5fthreshold_846',['muxing_queue_data_threshold',['../df/d77/struct_options_context.html#a4939b51d539a0cd1b66883a6ebac8de2',1,'OptionsContext::muxing_queue_data_threshold()'],['../db/dde/struct_output_stream.html#a6e2ea45e90d7df93766f580a39469719',1,'OutputStream::muxing_queue_data_threshold()']]] +]; diff --git a/docs/linux/html/search/all_e.html b/docs/linux/html/search/all_e.html new file mode 100644 index 0000000..2e3c74d --- /dev/null +++ b/docs/linux/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_e.js b/docs/linux/html/search/all_e.js new file mode 100644 index 0000000..8f80fa7 --- /dev/null +++ b/docs/linux/html/search/all_e.js @@ -0,0 +1,98 @@ +var searchData= +[ + ['name_847',['name',['../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72',1,'OptionDef::name()'],['../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da',1,'OptionGroupDef::name()'],['../df/d37/struct_h_w_accel.html#a82d8cefa2fe98d73edc28eb129b9c510',1,'HWAccel::name()'],['../de/dc7/struct_h_w_device.html#ae03ed8b14a9e341f1d8cc5fa37006656',1,'HWDevice::name()'],['../d7/d0c/struct_input_filter.html#a09efa5b4f05e3ca7c08c7ac949466556',1,'InputFilter::name()'],['../d0/d0f/struct_output_filter.html#a7713667d07c3f7605e6dd24f0ca19940',1,'OutputFilter::name()'],['../d9/d11/structsection.html#a265ac289a64fdb5d3e665ef3fef09364',1,'section::name()'],['../d6/dff/struct_writer.html#a8cbb0eba7905fdb0935fa057c9ab1d10',1,'Writer::name()'],['../d1/da2/struct_writer_context.html#a366a8bd11cf898f02beca2f14478ed97',1,'WriterContext::name()']]], + ['nb_5fapad_848',['nb_apad',['../df/d77/struct_options_context.html#a7e7d45124040a8a5f110efa4c6cccf16',1,'OptionsContext']]], + ['nb_5fattachments_849',['nb_attachments',['../df/d77/struct_options_context.html#a34f0a7746fbd5a5848fbdb5fac7ce7af',1,'OptionsContext']]], + ['nb_5faudio_5fchannel_5fmaps_850',['nb_audio_channel_maps',['../df/d77/struct_options_context.html#a2e67c5ed2e0cc9b5cd4a5ff9895d7fc1',1,'OptionsContext']]], + ['nb_5faudio_5fchannels_851',['nb_audio_channels',['../df/d77/struct_options_context.html#a7e0e4131b5ffb9d53019afd8910fc3ec',1,'OptionsContext']]], + ['nb_5faudio_5fsample_5frate_852',['nb_audio_sample_rate',['../df/d77/struct_options_context.html#ae75f89a074068ab06a98efc15b65bb70',1,'OptionsContext']]], + ['nb_5fautorotate_853',['nb_autorotate',['../df/d77/struct_options_context.html#a62f3ac3cab9fcdf841bd41f9bba1b907',1,'OptionsContext']]], + ['nb_5fautoscale_854',['nb_autoscale',['../df/d77/struct_options_context.html#af23ac43d7259fe16de89ecddb9317768',1,'OptionsContext']]], + ['nb_5fbitstream_5ffilters_855',['nb_bitstream_filters',['../df/d77/struct_options_context.html#af762ec90bfe9a00ab5a8002cf13d9c20',1,'OptionsContext']]], + ['nb_5fcanvas_5fsizes_856',['nb_canvas_sizes',['../df/d77/struct_options_context.html#a6624172d0978fc1ac2c9a64e55197337',1,'OptionsContext']]], + ['nb_5fchroma_5fintra_5fmatrices_857',['nb_chroma_intra_matrices',['../df/d77/struct_options_context.html#a0ddb65270dbb5fca3ce695d7b80064a9',1,'OptionsContext']]], + ['nb_5fcodec_5fnames_858',['nb_codec_names',['../df/d77/struct_options_context.html#a45fdd25cc957aa8607d69b417bc59c14',1,'OptionsContext']]], + ['nb_5fcodec_5ftags_859',['nb_codec_tags',['../df/d77/struct_options_context.html#a02ba7390b9fa22d39060f58169bb93a4',1,'OptionsContext']]], + ['nb_5fcopy_5finitial_5fnonkeyframes_860',['nb_copy_initial_nonkeyframes',['../df/d77/struct_options_context.html#a07cadcbed94bbb3ed90703e4a3bc5067',1,'OptionsContext']]], + ['nb_5fcopy_5fprior_5fstart_861',['nb_copy_prior_start',['../df/d77/struct_options_context.html#ace41e5c132803d7f7a3ab544959662da',1,'OptionsContext']]], + ['nb_5fdiscard_862',['nb_discard',['../df/d77/struct_options_context.html#a57787cc07ce29a3d66420c6e65a647ff',1,'OptionsContext']]], + ['nb_5fdisposition_863',['nb_disposition',['../df/d77/struct_options_context.html#a76b8db884e420fb8922d0aafca59f2f8',1,'OptionsContext']]], + ['nb_5fdts_5fbuffer_864',['nb_dts_buffer',['../d3/d6e/struct_input_stream.html#a4b6db5d0fb15c8262b1ba543495fe628',1,'InputStream']]], + ['nb_5fdump_5fattachment_865',['nb_dump_attachment',['../df/d77/struct_options_context.html#a6b29b20e59b90528943e105de4006148',1,'OptionsContext']]], + ['nb_5fenc_5ftime_5fbases_866',['nb_enc_time_bases',['../df/d77/struct_options_context.html#aa9d05915d0f662d38ee8ecd9cf657169',1,'OptionsContext']]], + ['nb_5ffilter_5fscripts_867',['nb_filter_scripts',['../df/d77/struct_options_context.html#acf81cf726089e9d6b570c3ec51e7ead0',1,'OptionsContext']]], + ['nb_5ffiltergraphs_868',['nb_filtergraphs',['../d7/d48/fftools__ffmpeg_8c.html#ac69138c251f85a6e3233c9a70884be93',1,'nb_filtergraphs(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac69138c251f85a6e3233c9a70884be93',1,'nb_filtergraphs(): fftools_ffmpeg.c']]], + ['nb_5ffilters_869',['nb_filters',['../df/d77/struct_options_context.html#afff2fbab8e5d11f9bce502383d757992',1,'OptionsContext::nb_filters()'],['../d3/d6e/struct_input_stream.html#a7c2c9b58a4db2101414f2d106f4244b0',1,'InputStream::nb_filters()']]], + ['nb_5ffix_5fsub_5fduration_870',['nb_fix_sub_duration',['../df/d77/struct_options_context.html#a739e7e917a216db97d8cbf0a25482310',1,'OptionsContext']]], + ['nb_5fforce_5ffps_871',['nb_force_fps',['../df/d77/struct_options_context.html#a9efac8177c92ff2eda0dda96761deb87',1,'OptionsContext']]], + ['nb_5fforced_5fkey_5fframes_872',['nb_forced_key_frames',['../df/d77/struct_options_context.html#a748415baeee6b731c9c35c27f74860b0',1,'OptionsContext']]], + ['nb_5fframe_5faspect_5fratios_873',['nb_frame_aspect_ratios',['../df/d77/struct_options_context.html#a710853badfb0d6d31c7bc6471d902941',1,'OptionsContext']]], + ['nb_5fframe_5fpix_5ffmts_874',['nb_frame_pix_fmts',['../df/d77/struct_options_context.html#ad5d44d5a36310415733fb2b4f8fc9aa5',1,'OptionsContext']]], + ['nb_5fframe_5frates_875',['nb_frame_rates',['../df/d77/struct_options_context.html#a336023409c88336cfdc784b50d2e0860',1,'OptionsContext']]], + ['nb_5fframe_5fsizes_876',['nb_frame_sizes',['../df/d77/struct_options_context.html#a66d4d1e81f3c566dbf20027ae37173d8',1,'OptionsContext']]], + ['nb_5fframes_5fdrop_877',['nb_frames_drop',['../d7/d48/fftools__ffmpeg_8c.html#afe61f76e95acccfab5636d5dac711dbe',1,'fftools_ffmpeg.c']]], + ['nb_5fframes_5fdup_878',['nb_frames_dup',['../d7/d48/fftools__ffmpeg_8c.html#a2fab4ffcc251656c4b48237e691d5bbd',1,'fftools_ffmpeg.c']]], + ['nb_5fgroups_879',['nb_groups',['../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202',1,'OptionGroupList::nb_groups()'],['../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7',1,'OptionParseContext::nb_groups()']]], + ['nb_5fguess_5flayout_5fmax_880',['nb_guess_layout_max',['../df/d77/struct_options_context.html#af7dc6f10382ced8285d2f877534bc98e',1,'OptionsContext']]], + ['nb_5fhw_5fdevices_881',['nb_hw_devices',['../d1/dba/fftools__ffmpeg__hw_8c.html#acea1bac2a399307791945b15467b1f75',1,'fftools_ffmpeg_hw.c']]], + ['nb_5fhwaccel_5fdevices_882',['nb_hwaccel_devices',['../df/d77/struct_options_context.html#a439c00bdd36f358e679f6455043cecfb',1,'OptionsContext']]], + ['nb_5fhwaccel_5foutput_5fformats_883',['nb_hwaccel_output_formats',['../df/d77/struct_options_context.html#aaec0e71810a9b113ec5ebc6acbb75474',1,'OptionsContext']]], + ['nb_5fhwaccels_884',['nb_hwaccels',['../df/d77/struct_options_context.html#ae8e8a1016db8df258f0b06c9e48c5ce4',1,'OptionsContext']]], + ['nb_5finput_5ffiles_885',['nb_input_files',['../d7/d48/fftools__ffmpeg_8c.html#a35146af7b101927e2e6aaaf49022f9b7',1,'nb_input_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a35146af7b101927e2e6aaaf49022f9b7',1,'nb_input_files(): fftools_ffmpeg.c']]], + ['nb_5finput_5fstreams_886',['nb_input_streams',['../d7/d48/fftools__ffmpeg_8c.html#a19a9c5bb8abc454adeccecdce35135c2',1,'nb_input_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a19a9c5bb8abc454adeccecdce35135c2',1,'nb_input_streams(): fftools_ffmpeg.c']]], + ['nb_5finputs_887',['nb_inputs',['../d9/de7/struct_filter_graph.html#aa88faf44822ec4e04597a6eef12a7760',1,'FilterGraph']]], + ['nb_5finter_5fmatrices_888',['nb_inter_matrices',['../df/d77/struct_options_context.html#aa851fb4b3a3a80182eeaa3dc4c8201be',1,'OptionsContext']]], + ['nb_5fintra_5fmatrices_889',['nb_intra_matrices',['../df/d77/struct_options_context.html#a39817ca6e7bc3ff4fa2caa2c2e627301',1,'OptionsContext']]], + ['nb_5fitem_890',['nb_item',['../d1/da2/struct_writer_context.html#a146664adf19a884f214fe3729343dc1a',1,'WriterContext']]], + ['nb_5fmax_5fframe_5frates_891',['nb_max_frame_rates',['../df/d77/struct_options_context.html#a12d7aef523b60551d30736bc24f1d383',1,'OptionsContext']]], + ['nb_5fmax_5fframes_892',['nb_max_frames',['../df/d77/struct_options_context.html#a53594f37751979e91873fe8282e2e103',1,'OptionsContext']]], + ['nb_5fmax_5fmuxing_5fqueue_5fsize_893',['nb_max_muxing_queue_size',['../df/d77/struct_options_context.html#af866e30ab55bab5c73b123fb35168edb',1,'OptionsContext']]], + ['nb_5fmetadata_894',['nb_metadata',['../df/d77/struct_options_context.html#a54dfb761028d4c10ed38c63a29f846ce',1,'OptionsContext']]], + ['nb_5fmetadata_5fmap_895',['nb_metadata_map',['../df/d77/struct_options_context.html#a76aae7426ad256206718ef4c503a882d',1,'OptionsContext']]], + ['nb_5fmuxing_5fqueue_5fdata_5fthreshold_896',['nb_muxing_queue_data_threshold',['../df/d77/struct_options_context.html#a12446904f0f148fcb4b77a32a9f8a3e5',1,'OptionsContext']]], + ['nb_5fopts_897',['nb_opts',['../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38',1,'OptionGroup']]], + ['nb_5foutput_5fdumped_898',['nb_output_dumped',['../d7/d48/fftools__ffmpeg_8c.html#a9b30165b9c938b5c27144f800ace6238',1,'fftools_ffmpeg.c']]], + ['nb_5foutput_5ffiles_899',['nb_output_files',['../d7/d48/fftools__ffmpeg_8c.html#a3d777831518f2c831790dd5cd6b96ddf',1,'nb_output_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a3d777831518f2c831790dd5cd6b96ddf',1,'nb_output_files(): fftools_ffmpeg.c']]], + ['nb_5foutput_5fstreams_900',['nb_output_streams',['../d7/d48/fftools__ffmpeg_8c.html#a2bd3657586bb29d6357ddc0ed3bda70b',1,'nb_output_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2bd3657586bb29d6357ddc0ed3bda70b',1,'nb_output_streams(): fftools_ffmpeg.c']]], + ['nb_5foutputs_901',['nb_outputs',['../d9/de7/struct_filter_graph.html#a92c7f6faf7e95b259bce1c717d43b4ee',1,'FilterGraph']]], + ['nb_5fpackets_902',['nb_packets',['../d3/d6e/struct_input_stream.html#ade4b46981af499da120e4e2b30517bef',1,'InputStream']]], + ['nb_5fpass_903',['nb_pass',['../df/d77/struct_options_context.html#a0790695c47119c2398f4cbe1532a1344',1,'OptionsContext']]], + ['nb_5fpasslogfiles_904',['nb_passlogfiles',['../df/d77/struct_options_context.html#a3496638677babce1db6d190448699b09',1,'OptionsContext']]], + ['nb_5fpresets_905',['nb_presets',['../df/d77/struct_options_context.html#ab2f20236fb1dfe7a650c8ea40a288e6d',1,'OptionsContext']]], + ['nb_5fprogram_906',['nb_program',['../df/d77/struct_options_context.html#ab5b3f2e73b482fa9b96f74d2cdd0f012',1,'OptionsContext']]], + ['nb_5fqscale_907',['nb_qscale',['../df/d77/struct_options_context.html#ad3a1a76eb25293de0630b6d477fd6d11',1,'OptionsContext']]], + ['nb_5frc_5foverrides_908',['nb_rc_overrides',['../df/d77/struct_options_context.html#a558a5fc4058d07929e5199b6ae57c258',1,'OptionsContext']]], + ['nb_5freinit_5ffilters_909',['nb_reinit_filters',['../df/d77/struct_options_context.html#a1038ba094d24fb2b43940c45b5cffeb7',1,'OptionsContext']]], + ['nb_5fsample_5ffmts_910',['nb_sample_fmts',['../df/d77/struct_options_context.html#aca30d63b4e6873844ffc592bbd05bea1',1,'OptionsContext']]], + ['nb_5fsamples_911',['nb_samples',['../d3/d6e/struct_input_stream.html#af76c7165931c721b63008034c94d9275',1,'InputStream']]], + ['nb_5fsection_5fframe_912',['nb_section_frame',['../d1/da2/struct_writer_context.html#a0a6292cb0341b8c989f463d17c2b1c49',1,'WriterContext']]], + ['nb_5fsection_5fpacket_913',['nb_section_packet',['../d1/da2/struct_writer_context.html#a735c05fb40aac83eeaa72ec9f3bd9c8d',1,'WriterContext']]], + ['nb_5fsection_5fpacket_5fframe_914',['nb_section_packet_frame',['../d1/da2/struct_writer_context.html#a70cdd0ee0389abba9865de653aac4de1',1,'WriterContext']]], + ['nb_5fsections_915',['nb_sections',['../d1/da2/struct_writer_context.html#a802ea030a8d391905498183a514a7e0c',1,'WriterContext']]], + ['nb_5fstream_5fmaps_916',['nb_stream_maps',['../df/d77/struct_options_context.html#a118cc0b28c0c40281c69827b323e4a78',1,'OptionsContext']]], + ['nb_5fstreamid_5fmap_917',['nb_streamid_map',['../df/d77/struct_options_context.html#a2a21ce6e0d0e8f25a098ac44013ee919',1,'OptionsContext']]], + ['nb_5fstreams_918',['nb_streams',['../d8/d99/struct_input_file.html#afee3292b7b58207fe6fd91c8127fac19',1,'InputFile::nb_streams()'],['../d8/d78/fftools__ffprobe_8c.html#abad15c2aaf9c54ccddd8d8abf6bed069',1,'nb_streams(): fftools_ffprobe.c']]], + ['nb_5fstreams_5fframes_919',['nb_streams_frames',['../d8/d78/fftools__ffprobe_8c.html#a9f6efa0e18f6fa56ed087c99bbc8ff10',1,'fftools_ffprobe.c']]], + ['nb_5fstreams_5fpackets_920',['nb_streams_packets',['../d8/d78/fftools__ffprobe_8c.html#ad25a33f2e8e0a7c6a147ec255d109319',1,'fftools_ffprobe.c']]], + ['nb_5fstreams_5fwarn_921',['nb_streams_warn',['../d8/d99/struct_input_file.html#a9a4fc2543b5db4e4a2b8b11294565dde',1,'InputFile']]], + ['nb_5ftime_5fbases_922',['nb_time_bases',['../df/d77/struct_options_context.html#a34b5f6f9f1c1b20b18f50a5263c4ae25',1,'OptionsContext']]], + ['nb_5ftop_5ffield_5ffirst_923',['nb_top_field_first',['../df/d77/struct_options_context.html#a5eda36d5b336b3603bdbb0ec3185a40b',1,'OptionsContext']]], + ['nb_5fts_5fscale_924',['nb_ts_scale',['../df/d77/struct_options_context.html#afaff7bca09e6e98f440e413309630204',1,'OptionsContext']]], + ['need_5foutput_925',['need_output',['../d7/d48/fftools__ffmpeg_8c.html#a19c0b9ce7a779f9cafb2f1b639843ea2',1,'fftools_ffmpeg.c']]], + ['nested_5fsection_926',['nested_section',['../d4/da0/struct_default_context.html#a98cfc785481b62077206b991234b0f9e',1,'DefaultContext::nested_section()'],['../d2/ddd/struct_compact_context.html#a2b8d470952d1051c0fd6b89b13a35e1e',1,'CompactContext::nested_section()']]], + ['new_5fattachment_5fstream_927',['new_attachment_stream',['../d7/db3/fftools__ffmpeg_8h.html#a0c3773fd5bc3734795991b7a8eda2565',1,'new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0c3773fd5bc3734795991b7a8eda2565',1,'new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5faudio_5fstream_928',['new_audio_stream',['../d7/db3/fftools__ffmpeg_8h.html#a15a211f78437d8b76343ffb6a5ed7691',1,'new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a15a211f78437d8b76343ffb6a5ed7691',1,'new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fdata_5fstream_929',['new_data_stream',['../d7/db3/fftools__ffmpeg_8h.html#ab1202336863f378d4602072dfa5efdf5',1,'new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab1202336863f378d4602072dfa5efdf5',1,'new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5foutput_5fstream_930',['new_output_stream',['../d7/db3/fftools__ffmpeg_8h.html#a80cef4274f0f47914ca35f6da2252eeb',1,'new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a80cef4274f0f47914ca35f6da2252eeb',1,'new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fsubtitle_5fstream_931',['new_subtitle_stream',['../d7/db3/fftools__ffmpeg_8h.html#a226ddaa939f9e92fefe8590b96711b29',1,'new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a226ddaa939f9e92fefe8590b96711b29',1,'new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5funknown_5fstream_932',['new_unknown_stream',['../d7/db3/fftools__ffmpeg_8h.html#ad63f18efd0a1c58dfecf770f75868198',1,'new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad63f18efd0a1c58dfecf770f75868198',1,'new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fvideo_5fstream_933',['new_video_stream',['../d7/db3/fftools__ffmpeg_8h.html#adc3928a88e1ab2eacb04c5fa1b6bfe00',1,'new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#adc3928a88e1ab2eacb04c5fa1b6bfe00',1,'new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['next_5fcodec_5ffor_5fid_934',['next_codec_for_id',['../d7/dcc/fftools__cmdutils_8c.html#a876a4b3377bdea2767ee77d185ee1d03',1,'fftools_cmdutils.c']]], + ['next_5fdts_935',['next_dts',['../d3/d6e/struct_input_stream.html#a8026af86b300d31432bc1bf74910aea5',1,'InputStream']]], + ['next_5fpts_936',['next_pts',['../d3/d6e/struct_input_stream.html#ab14ac8d1cdb5c1dd6472dd4c13867368',1,'InputStream']]], + ['next_5fregistered_5fwriter_5fidx_937',['next_registered_writer_idx',['../d8/d78/fftools__ffprobe_8c.html#a66035b2546893c050c398f8f775b656f',1,'fftools_ffprobe.c']]], + ['no_5ffile_5foverwrite_938',['no_file_overwrite',['../d7/d48/fftools__ffmpeg_8c.html#a7ac571c7c938d6c34daf608a1183364f',1,'no_file_overwrite(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ac571c7c938d6c34daf608a1183364f',1,'no_file_overwrite(): fftools_ffmpeg_opt.c']]], + ['nokey_939',['nokey',['../d4/da0/struct_default_context.html#aa4fb1e189f6e2788e6ccc23e65dc3d98',1,'DefaultContext::nokey()'],['../d2/ddd/struct_compact_context.html#a4d211d2b2ba9c83a0613ec9c79af1f71',1,'CompactContext::nokey()']]], + ['none_5fescape_5fstr_940',['none_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a5359bbdf55f0dd0fc710cce3d9f3b8f0',1,'fftools_ffprobe.c']]], + ['noprint_5fwrappers_941',['noprint_wrappers',['../d4/da0/struct_default_context.html#a7cae04407b25e67940bc2ff2c70496dd',1,'DefaultContext']]] +]; diff --git a/docs/linux/html/search/all_f.html b/docs/linux/html/search/all_f.html new file mode 100644 index 0000000..246f8ab --- /dev/null +++ b/docs/linux/html/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/all_f.js b/docs/linux/html/search/all_f.js new file mode 100644 index 0000000..32dac0d --- /dev/null +++ b/docs/linux/html/search/all_f.js @@ -0,0 +1,153 @@ +var searchData= +[ + ['off_942',['off',['../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c',1,'OptionDef']]], + ['offset_943',['OFFSET',['../d7/d48/fftools__ffmpeg_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffmpeg.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c']]], + ['ofile_5fidx_944',['ofile_idx',['../d6/d2c/struct_audio_channel_map.html#a8174d989c9c3c6bacd2ff229900e3edf',1,'AudioChannelMap']]], + ['open_5ffiles_945',['open_files',['../d7/db3/fftools__ffmpeg_8h.html#a94b7523ab981f616ed14978d06d70ac9',1,'fftools_ffmpeg.h']]], + ['open_5finput_5ffile_946',['open_input_file',['../d7/db3/fftools__ffmpeg_8h.html#a540336d8019a727fad05b1d6c53e7c15',1,'open_input_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a540336d8019a727fad05b1d6c53e7c15',1,'open_input_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../d8/d78/fftools__ffprobe_8c.html#ae09451501c598ccaa188bb20a1ebb84c',1,'open_input_file(InputFile *ifile, const char *filename, const char *print_filename): fftools_ffprobe.c']]], + ['open_5foutput_5ffile_947',['open_output_file',['../d7/db3/fftools__ffmpeg_8h.html#ae9aaf2d6ff0cf3a0a665445d00365a68',1,'open_output_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae9aaf2d6ff0cf3a0a665445d00365a68',1,'open_output_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c']]], + ['operator_3c_3c_948',['operator<<',['../d4/dcf/classffmpegkit_1_1_return_code.html#a2ba683f8da4b7b6bcf913588045c35a7',1,'ffmpegkit::ReturnCode::operator<<()'],['../d2/d25/namespaceffmpegkit.html#a7e9ba2846f91ff69d4ddf92e6e14164c',1,'ffmpegkit::operator<<()']]], + ['opt_949',['opt',['../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc',1,'Option']]], + ['opt_5fabort_5fon_950',['opt_abort_on',['../d7/d48/fftools__ffmpeg_8c.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fattach_951',['opt_attach',['../d7/d48/fftools__ffmpeg_8c.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_952',['OPT_AUDIO',['../d8/d4e/fftools__cmdutils_8h.html#aac1f37101001610dfbf8c6c679b786da',1,'fftools_cmdutils.h']]], + ['opt_5faudio_5fcodec_953',['opt_audio_codec',['../d7/d48/fftools__ffmpeg_8c.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5ffilters_954',['opt_audio_filters',['../d7/d48/fftools__ffmpeg_8c.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5fframes_955',['opt_audio_frames',['../d7/d48/fftools__ffmpeg_8c.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5fqscale_956',['opt_audio_qscale',['../d7/d48/fftools__ffmpeg_8c.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fbitrate_957',['opt_bitrate',['../d7/d48/fftools__ffmpeg_8c.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fbool_958',['OPT_BOOL',['../d8/d4e/fftools__cmdutils_8h.html#a1b1c1cb0b866790034157479d6dd5da6',1,'fftools_cmdutils.h']]], + ['opt_5fchannel_5flayout_959',['opt_channel_layout',['../d7/d48/fftools__ffmpeg_8c.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fcodec_5fdebug_960',['opt_codec_debug',['../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f',1,'fftools_cmdutils.h']]], + ['opt_5fcpucount_961',['opt_cpucount',['../d7/dcc/fftools__cmdutils_8c.html#a8bc82376a974a97ef9384792d30b4cc4',1,'opt_cpucount(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8bc82376a974a97ef9384792d30b4cc4',1,'opt_cpucount(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fcpuflags_962',['opt_cpuflags',['../d7/dcc/fftools__cmdutils_8c.html#a0bc08eaf2739c5b0977996228a81a129',1,'opt_cpuflags(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0bc08eaf2739c5b0977996228a81a129',1,'opt_cpuflags(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fdata_963',['OPT_DATA',['../d8/d4e/fftools__cmdutils_8h.html#aaf5b4d51091fffdd43550ce4c7f64b88',1,'fftools_cmdutils.h']]], + ['opt_5fdata_5fcodec_964',['opt_data_codec',['../d7/d48/fftools__ffmpeg_8c.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fdata_5fframes_965',['opt_data_frames',['../d7/d48/fftools__ffmpeg_8c.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fdefault_966',['opt_default',['../d7/dcc/fftools__cmdutils_8c.html#a24c4e9b816e053a3facd267d56daf1ed',1,'opt_default(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed',1,'opt_default(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fdefault_5fnew_967',['opt_default_new',['../d7/db3/fftools__ffmpeg_8h.html#adb46b97d7f835a8aab51ffdc8287ae8a',1,'opt_default_new(OptionsContext *o, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#adb46b97d7f835a8aab51ffdc8287ae8a',1,'opt_default_new(OptionsContext *o, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fdouble_968',['OPT_DOUBLE',['../d8/d4e/fftools__cmdutils_8h.html#a8370d4bb83286c3641c5dd87551f6182',1,'fftools_cmdutils.h']]], + ['opt_5fexit_969',['OPT_EXIT',['../d8/d4e/fftools__cmdutils_8h.html#ac6310b4c2290bc63f127bcd3faa117e6',1,'fftools_cmdutils.h']]], + ['opt_5fexpert_970',['OPT_EXPERT',['../d8/d4e/fftools__cmdutils_8h.html#ab8b1131ea532a43a07296dd04c8c9693',1,'fftools_cmdutils.h']]], + ['opt_5ffilter_5fcomplex_971',['opt_filter_complex',['../d7/d48/fftools__ffmpeg_8c.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffilter_5fcomplex_5fscript_972',['opt_filter_complex_script',['../d7/d48/fftools__ffmpeg_8c.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffilter_5fhw_5fdevice_973',['opt_filter_hw_device',['../d7/d48/fftools__ffmpeg_8c.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffind_974',['opt_find',['../d7/dcc/fftools__cmdutils_8c.html#ae13404e5cf277e5deb0e643213acace0',1,'fftools_cmdutils.c']]], + ['opt_5ffloat_975',['OPT_FLOAT',['../d8/d4e/fftools__cmdutils_8h.html#a56df4dc0401bc7c1ad4c7744c44879f7',1,'fftools_cmdutils.h']]], + ['opt_5fformat_976',['opt_format',['../d8/d78/fftools__ffprobe_8c.html#a30b725c5e42860674f678532e83aebbd',1,'fftools_ffprobe.c']]], + ['opt_5finit_5fhw_5fdevice_977',['opt_init_hw_device',['../d7/d48/fftools__ffmpeg_8c.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5finput_978',['OPT_INPUT',['../d8/d4e/fftools__cmdutils_8h.html#a70561ef40bba827afd07234175c07d03',1,'fftools_cmdutils.h']]], + ['opt_5finput_5ffile_979',['opt_input_file',['../d8/d78/fftools__ffprobe_8c.html#abbd9416c0740a6e1835807deb3998ec6',1,'fftools_ffprobe.c']]], + ['opt_5finput_5ffile_5fi_980',['opt_input_file_i',['../d8/d78/fftools__ffprobe_8c.html#ab6d82985dbdaf11496d0f70ae12ed93b',1,'fftools_ffprobe.c']]], + ['opt_5fint_981',['OPT_INT',['../d8/d4e/fftools__cmdutils_8h.html#a55bdf11c33fc097533cde94b0f64024b',1,'fftools_cmdutils.h']]], + ['opt_5fint64_982',['OPT_INT64',['../d8/d4e/fftools__cmdutils_8h.html#a1e6d562f7f8c2883ddc3847a003dc804',1,'fftools_cmdutils.h']]], + ['opt_5floglevel_983',['opt_loglevel',['../d7/dcc/fftools__cmdutils_8c.html#a0655c99b1344272c17f0dc8eb480c598',1,'opt_loglevel(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0655c99b1344272c17f0dc8eb480c598',1,'opt_loglevel(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fmap_984',['opt_map',['../d7/d48/fftools__ffmpeg_8c.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fmap_5fchannel_985',['opt_map_channel',['../d7/d48/fftools__ffmpeg_8c.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fmax_5falloc_986',['opt_max_alloc',['../d7/dcc/fftools__cmdutils_8c.html#ae2131affd4cd632364d24b0d0a809fc3',1,'opt_max_alloc(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae2131affd4cd632364d24b0d0a809fc3',1,'opt_max_alloc(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fname_5fapad_987',['opt_name_apad',['../da/d66/fftools__ffmpeg__opt_8c.html#a4563efb367e0659a32b5b0ad0ac4578d',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5faudio_5fchannels_988',['opt_name_audio_channels',['../da/d66/fftools__ffmpeg__opt_8c.html#a071566f5d650660c1121c4a9ecffeaad',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5faudio_5fsample_5frate_989',['opt_name_audio_sample_rate',['../da/d66/fftools__ffmpeg__opt_8c.html#a8a7b7a8fd4c39cfd95d0577ba6516f80',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fautorotate_990',['opt_name_autorotate',['../da/d66/fftools__ffmpeg__opt_8c.html#a28263e9a77f75dbe0b729b27965d7010',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fautoscale_991',['opt_name_autoscale',['../da/d66/fftools__ffmpeg__opt_8c.html#ae377a2eca138e9ca6f7f70bd7a745c95',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fbitstream_5ffilters_992',['opt_name_bitstream_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#acbbcf4d3fc3ffdf3ab8fb140380e9b3d',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcanvas_5fsizes_993',['opt_name_canvas_sizes',['../da/d66/fftools__ffmpeg__opt_8c.html#a1e1938286bdcbec435fd4153a754c11c',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fchroma_5fintra_5fmatrices_994',['opt_name_chroma_intra_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#ac228692b5caafb601b626e82fb036b00',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcodec_5fnames_995',['opt_name_codec_names',['../da/d66/fftools__ffmpeg__opt_8c.html#ad93637c5f6fbe2a6c2a31f4855fce0ee',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcodec_5ftags_996',['opt_name_codec_tags',['../da/d66/fftools__ffmpeg__opt_8c.html#a33649f7955e76638005a3b90157d1acb',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcopy_5finitial_5fnonkeyframes_997',['opt_name_copy_initial_nonkeyframes',['../da/d66/fftools__ffmpeg__opt_8c.html#ac7ca319e595fa817051314772b70fe19',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcopy_5fprior_5fstart_998',['opt_name_copy_prior_start',['../da/d66/fftools__ffmpeg__opt_8c.html#a484aa69c151bca853b0f4db4001d8457',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fdiscard_999',['opt_name_discard',['../da/d66/fftools__ffmpeg__opt_8c.html#a7d696d81136510fe5a6de2c83a047743',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fdisposition_1000',['opt_name_disposition',['../da/d66/fftools__ffmpeg__opt_8c.html#aedf58dd37d56e26a71b477ac1c89fceb',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fenc_5ftime_5fbases_1001',['opt_name_enc_time_bases',['../da/d66/fftools__ffmpeg__opt_8c.html#a923d5e1d86ce330625dd7d55d4e0b7cd',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffilter_5fscripts_1002',['opt_name_filter_scripts',['../da/d66/fftools__ffmpeg__opt_8c.html#a8d9d6b274d5ebbf27d245081b2d68aea',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffilters_1003',['opt_name_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#ac60615242d760b1373faa97e9ca35da0',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffix_5fsub_5fduration_1004',['opt_name_fix_sub_duration',['../da/d66/fftools__ffmpeg__opt_8c.html#a0f2664ba9d547dd1d2a161d6eea38d4e',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fforce_5ffps_1005',['opt_name_force_fps',['../da/d66/fftools__ffmpeg__opt_8c.html#a35587cfd54cad4d313e805729850c814',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fforced_5fkey_5fframes_1006',['opt_name_forced_key_frames',['../da/d66/fftools__ffmpeg__opt_8c.html#a7dc51392d39a130d795ab6259f8e5146',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5faspect_5fratios_1007',['opt_name_frame_aspect_ratios',['../da/d66/fftools__ffmpeg__opt_8c.html#a02e251fca80f93e4d5a3e9c27fca6be8',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5fpix_5ffmts_1008',['opt_name_frame_pix_fmts',['../da/d66/fftools__ffmpeg__opt_8c.html#af4c1703b4956f5e062204d5c36b1721f',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5frates_1009',['opt_name_frame_rates',['../da/d66/fftools__ffmpeg__opt_8c.html#a5347d5d678e9927aa9f8b0fdd839b8d3',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5fsizes_1010',['opt_name_frame_sizes',['../da/d66/fftools__ffmpeg__opt_8c.html#a86f38ed6c04b24cdcd998881f6d45563',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fguess_5flayout_5fmax_1011',['opt_name_guess_layout_max',['../da/d66/fftools__ffmpeg__opt_8c.html#aa5ed7cfda0a5c2ff397b0d731dbb1005',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccel_5fdevices_1012',['opt_name_hwaccel_devices',['../da/d66/fftools__ffmpeg__opt_8c.html#a5d127770d764925d75c367f80bc76228',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccel_5foutput_5fformats_1013',['opt_name_hwaccel_output_formats',['../da/d66/fftools__ffmpeg__opt_8c.html#abf20f110d78c43da06a8a8921ec6aa10',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccels_1014',['opt_name_hwaccels',['../da/d66/fftools__ffmpeg__opt_8c.html#a47524eff5f8b0f4d59e5d7910a14fdb4',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5finter_5fmatrices_1015',['opt_name_inter_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#a290d82d6941e8243459bc374ef322e81',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fintra_5fmatrices_1016',['opt_name_intra_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#acb26d364405e283095a6d192d1caeaee',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fframe_5frates_1017',['opt_name_max_frame_rates',['../da/d66/fftools__ffmpeg__opt_8c.html#a55b73904843c6c623ce52acba119705c',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fframes_1018',['opt_name_max_frames',['../da/d66/fftools__ffmpeg__opt_8c.html#a065c1d7227bc63b18b4324ad376568dd',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fmuxing_5fqueue_5fsize_1019',['opt_name_max_muxing_queue_size',['../da/d66/fftools__ffmpeg__opt_8c.html#a3f6ae3233facfaaad9c9fcfcb5562029',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmuxing_5fqueue_5fdata_5fthreshold_1020',['opt_name_muxing_queue_data_threshold',['../da/d66/fftools__ffmpeg__opt_8c.html#a44d8dc72efc9d1c7433964650d7b4365',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpass_1021',['opt_name_pass',['../da/d66/fftools__ffmpeg__opt_8c.html#af982effd9489a2439594fba709c01cf4',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpasslogfiles_1022',['opt_name_passlogfiles',['../da/d66/fftools__ffmpeg__opt_8c.html#a3bb1a02e27b951f57d8927aa3b017f2e',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpresets_1023',['opt_name_presets',['../da/d66/fftools__ffmpeg__opt_8c.html#a4929557da5993e7e352caa7b2b969569',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fqscale_1024',['opt_name_qscale',['../da/d66/fftools__ffmpeg__opt_8c.html#ad4e5c141bf83207d19eecec3a9341141',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5frc_5foverrides_1025',['opt_name_rc_overrides',['../da/d66/fftools__ffmpeg__opt_8c.html#a7dbb7cc7c7d0f45bbb80b2e494b0bbff',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5freinit_5ffilters_1026',['opt_name_reinit_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#a934f418f64986c128430cffdfa11abcc',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fsample_5ffmts_1027',['opt_name_sample_fmts',['../da/d66/fftools__ffmpeg__opt_8c.html#a322afb1b7613bc57d3939db06de66225',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ftime_5fbases_1028',['opt_name_time_bases',['../da/d66/fftools__ffmpeg__opt_8c.html#a8213a5f67f3b7e411fafc95d38ad0ea7',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ftop_5ffield_5ffirst_1029',['opt_name_top_field_first',['../da/d66/fftools__ffmpeg__opt_8c.html#a25ca6c25e6e32e8f98fe714f4eef5e08',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fts_5fscale_1030',['opt_name_ts_scale',['../da/d66/fftools__ffmpeg__opt_8c.html#aec5517cf220aff5a0a7e4dc012f72c6c',1,'fftools_ffmpeg_opt.c']]], + ['opt_5foffset_1031',['OPT_OFFSET',['../d8/d4e/fftools__cmdutils_8h.html#af8d2573bae8637d92cfb1bd84782e8d5',1,'fftools_cmdutils.h']]], + ['opt_5fold2new_1032',['opt_old2new',['../d7/d48/fftools__ffmpeg_8c.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5foutput_1033',['OPT_OUTPUT',['../d8/d4e/fftools__cmdutils_8h.html#ac8131c70a1e8339c3574c9a08da81d1b',1,'fftools_cmdutils.h']]], + ['opt_5foutput_5ffile_1034',['opt_output_file',['../d7/db3/fftools__ffmpeg_8h.html#a2e59243bbc0b968591a6f197cf39a382',1,'fftools_ffmpeg.h']]], + ['opt_5fperfile_1035',['OPT_PERFILE',['../d8/d4e/fftools__cmdutils_8h.html#a2cb4d9f4b617e04d8b68fc881fdbb958',1,'fftools_cmdutils.h']]], + ['opt_5fpreset_1036',['opt_preset',['../d7/d48/fftools__ffmpeg_8c.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fpretty_1037',['opt_pretty',['../d8/d78/fftools__ffprobe_8c.html#a59e8f23a103f7613755c2fdce846f9b0',1,'fftools_ffprobe.c']]], + ['opt_5fprint_5ffilename_1038',['opt_print_filename',['../d8/d78/fftools__ffprobe_8c.html#ab45a85014bbc500f22836075209af718',1,'fftools_ffprobe.c']]], + ['opt_5fprofile_1039',['opt_profile',['../d7/d48/fftools__ffmpeg_8c.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fprogress_1040',['opt_progress',['../d7/d48/fftools__ffmpeg_8c.html#ae76c7a8880f594c7d0f7df762aac7a89',1,'opt_progress(void *optctx, const char *opt, const char *arg): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae76c7a8880f594c7d0f7df762aac7a89',1,'opt_progress(void *optctx, const char *opt, const char *arg): fftools_ffmpeg.h']]], + ['opt_5fqscale_1041',['opt_qscale',['../d7/d48/fftools__ffmpeg_8c.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fread_5fintervals_1042',['opt_read_intervals',['../d8/d78/fftools__ffprobe_8c.html#a34e56be87f6c37cc788638d6e64a9334',1,'fftools_ffprobe.c']]], + ['opt_5frecording_5ftimestamp_1043',['opt_recording_timestamp',['../d7/d48/fftools__ffmpeg_8c.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5freport_1044',['opt_report',['../d7/dcc/fftools__cmdutils_8c.html#ae83addf5abc14d1dd046f315499ed6bf',1,'opt_report(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae83addf5abc14d1dd046f315499ed6bf',1,'opt_report(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fsameq_1045',['opt_sameq',['../d7/d48/fftools__ffmpeg_8c.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fsdp_5ffile_1046',['opt_sdp_file',['../d7/d48/fftools__ffmpeg_8c.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fsections_1047',['opt_sections',['../d8/d78/fftools__ffprobe_8c.html#ae67941dae31c7f2608af95ac2135ad12',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fentries_1048',['opt_show_entries',['../d8/d78/fftools__ffprobe_8c.html#a9f39904b54f6e93ace1c19e242c81e51',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fformat_5fentry_1049',['opt_show_format_entry',['../d8/d78/fftools__ffprobe_8c.html#a748e566e25160276f93e5a90e962a6ae',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5foptional_5ffields_1050',['opt_show_optional_fields',['../d8/d78/fftools__ffprobe_8c.html#a65d3b57796cbc55cba8cf980ef0a8759',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fversions_1051',['opt_show_versions',['../d8/d78/fftools__ffprobe_8c.html#af8ad5bf16936082af37e8c129a723b3b',1,'fftools_ffprobe.c']]], + ['opt_5fspec_1052',['OPT_SPEC',['../d8/d4e/fftools__cmdutils_8h.html#a125b062e1ed2e8d929ab67f4721aa463',1,'fftools_cmdutils.h']]], + ['opt_5fstats_5fperiod_1053',['opt_stats_period',['../d7/d48/fftools__ffmpeg_8c.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fstreamid_1054',['opt_streamid',['../d7/d48/fftools__ffmpeg_8c.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fstring_1055',['OPT_STRING',['../d8/d4e/fftools__cmdutils_8h.html#a91fea349332c05eb78ce3c17202e1dc9',1,'fftools_cmdutils.h']]], + ['opt_5fsubtitle_1056',['OPT_SUBTITLE',['../d8/d4e/fftools__cmdutils_8h.html#ab2f01b015c63102de072d1b04cb54907',1,'fftools_cmdutils.h']]], + ['opt_5fsubtitle_5fcodec_1057',['opt_subtitle_codec',['../d7/d48/fftools__ffmpeg_8c.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftarget_1058',['opt_target',['../d7/d48/fftools__ffmpeg_8c.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftime_1059',['OPT_TIME',['../d8/d4e/fftools__cmdutils_8h.html#ac8fbad19fad03f8e62a8f5d5ccba5782',1,'fftools_cmdutils.h']]], + ['opt_5ftimecode_1060',['opt_timecode',['../d7/d48/fftools__ffmpeg_8c.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftimelimit_1061',['opt_timelimit',['../d7/dcc/fftools__cmdutils_8c.html#a995b064d5b67208fae49232687dd5eaa',1,'opt_timelimit(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa',1,'opt_timelimit(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fvaapi_5fdevice_1062',['opt_vaapi_device',['../d7/d48/fftools__ffmpeg_8c.html#ae8bfeed67a697b21437dd56531f1b370',1,'fftools_ffmpeg.c']]], + ['opt_5fvideo_1063',['OPT_VIDEO',['../d8/d4e/fftools__cmdutils_8h.html#a0654bdd8f429df3aaf1f532968783bbc',1,'fftools_cmdutils.h']]], + ['opt_5fvideo_5fchannel_1064',['opt_video_channel',['../d7/d48/fftools__ffmpeg_8c.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fcodec_1065',['opt_video_codec',['../d7/d48/fftools__ffmpeg_8c.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5ffilters_1066',['opt_video_filters',['../d7/d48/fftools__ffmpeg_8c.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fframes_1067',['opt_video_frames',['../d7/d48/fftools__ffmpeg_8c.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fstandard_1068',['opt_video_standard',['../d7/d48/fftools__ffmpeg_8c.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvstats_1069',['opt_vstats',['../d7/d48/fftools__ffmpeg_8c.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvstats_5ffile_1070',['opt_vstats_file',['../d7/d48/fftools__ffmpeg_8c.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvsync_1071',['opt_vsync',['../d7/d48/fftools__ffmpeg_8c.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['option_1072',['Option',['../d3/d1d/struct_option.html',1,'Option'],['../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515',1,'Option(): fftools_cmdutils.h']]], + ['optiondef_1073',['OptionDef',['../dc/d1e/struct_option_def.html',1,'OptionDef'],['../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3',1,'OptionDef(): fftools_cmdutils.h']]], + ['optiongroup_1074',['OptionGroup',['../d6/d69/struct_option_group.html',1,'OptionGroup'],['../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760',1,'OptionGroup(): fftools_cmdutils.h']]], + ['optiongroupdef_1075',['OptionGroupDef',['../db/dd7/struct_option_group_def.html',1,'OptionGroupDef'],['../d8/d4e/fftools__cmdutils_8h.html#ae685e65315debd1ee1fc81b88f45568a',1,'OptionGroupDef(): fftools_cmdutils.h']]], + ['optiongrouplist_1076',['OptionGroupList',['../d7/d4f/struct_option_group_list.html',1,'OptionGroupList'],['../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203',1,'OptionGroupList(): fftools_cmdutils.h']]], + ['optionparsecontext_1077',['OptionParseContext',['../db/db5/struct_option_parse_context.html',1,'OptionParseContext'],['../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8',1,'OptionParseContext(): fftools_cmdutils.h']]], + ['optionscontext_1078',['OptionsContext',['../df/d77/struct_options_context.html',1,'OptionsContext'],['../d7/db3/fftools__ffmpeg_8h.html#ad4704d50df836f3c02d818183aa47a22',1,'OptionsContext(): fftools_ffmpeg.h']]], + ['opts_1079',['opts',['../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856',1,'OptionGroup::opts()'],['../de/df2/struct_output_file.html#aac74ddf07f90ad30cd5ddf80583468ec',1,'OutputFile::opts()']]], + ['ost_1080',['ost',['../d0/d0f/struct_output_filter.html#a2d283eee3e140f822b5eb381890ba035',1,'OutputFilter::ost()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a452d4354deb721ac53ff1926fd07ab04',1,'ost(): fftools_ffmpeg_filter.c']]], + ['ost_5findex_1081',['ost_index',['../de/df2/struct_output_file.html#ac09855bfd066c44eb761f84e28f00dce',1,'OutputFile']]], + ['ostfinished_1082',['OSTFinished',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31',1,'fftools_ffmpeg.h']]], + ['ostream_5fidx_1083',['ostream_idx',['../d6/d2c/struct_audio_channel_map.html#a3e51062d85dde52c40982e5af3b4bc03',1,'AudioChannelMap']]], + ['out_5ftmp_1084',['out_tmp',['../d0/d0f/struct_output_filter.html#a1571021ae59382241c925f7ee613cd7d',1,'OutputFilter']]], + ['output_5ffiles_1085',['output_files',['../d7/d48/fftools__ffmpeg_8c.html#a22c5e53407c3f14a8111e898dff42904',1,'output_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a22c5e53407c3f14a8111e898dff42904',1,'output_files(): fftools_ffmpeg.c']]], + ['output_5fpacket_1086',['output_packet',['../d7/d48/fftools__ffmpeg_8c.html#ae1db4cbd8e2d2dd46fa384e1c93835fc',1,'fftools_ffmpeg.c']]], + ['output_5fstreams_1087',['output_streams',['../d7/d48/fftools__ffmpeg_8c.html#a205ff61315f3766dae7c5e1552de2ccf',1,'output_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a205ff61315f3766dae7c5e1552de2ccf',1,'output_streams(): fftools_ffmpeg.c']]], + ['outputfile_1088',['OutputFile',['../de/df2/struct_output_file.html',1,'OutputFile'],['../d7/db3/fftools__ffmpeg_8h.html#a653db234f8dd70d221d3cc74139e0ab6',1,'OutputFile(): fftools_ffmpeg.h']]], + ['outputfilter_1089',['OutputFilter',['../d0/d0f/struct_output_filter.html',1,'OutputFilter'],['../d7/db3/fftools__ffmpeg_8h.html#ac46893d613405fae678c0c4134b41cdc',1,'OutputFilter(): fftools_ffmpeg.h']]], + ['outputs_1090',['outputs',['../d9/de7/struct_filter_graph.html#aa078de74cae0940747ba826567b74aef',1,'FilterGraph']]], + ['outputstream_1091',['OutputStream',['../db/dde/struct_output_stream.html',1,'OutputStream'],['../d7/db3/fftools__ffmpeg_8h.html#a8f49aa35e4150e4b998d7c5a9678c9ac',1,'OutputStream(): fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/classes_0.html b/docs/linux/html/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/docs/linux/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_0.js b/docs/linux/html/search/classes_0.js new file mode 100644 index 0000000..12a6061 --- /dev/null +++ b/docs/linux/html/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['abstractsession_1563',['AbstractSession',['../d2/d41/classffmpegkit_1_1_abstract_session.html',1,'ffmpegkit']]], + ['archdetect_1564',['ArchDetect',['../d1/df7/classffmpegkit_1_1_arch_detect.html',1,'ffmpegkit']]], + ['audiochannelmap_1565',['AudioChannelMap',['../d6/d2c/struct_audio_channel_map.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_1.html b/docs/linux/html/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/docs/linux/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_1.js b/docs/linux/html/search/classes_1.js new file mode 100644 index 0000000..de6a0a5 --- /dev/null +++ b/docs/linux/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['benchmarktimestamps_1566',['BenchmarkTimeStamps',['../d5/d8e/struct_benchmark_time_stamps.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_10.html b/docs/linux/html/search/classes_10.html new file mode 100644 index 0000000..abf37f5 --- /dev/null +++ b/docs/linux/html/search/classes_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_10.js b/docs/linux/html/search/classes_10.js new file mode 100644 index 0000000..c8aa01e --- /dev/null +++ b/docs/linux/html/search/classes_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmlcontext_1613',['XMLContext',['../d7/db2/struct_x_m_l_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_2.html b/docs/linux/html/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/docs/linux/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_2.js b/docs/linux/html/search/classes_2.js new file mode 100644 index 0000000..04ca120 --- /dev/null +++ b/docs/linux/html/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['callbackdata_1567',['CallbackData',['../d5/d18/class_callback_data.html',1,'']]], + ['chapter_1568',['Chapter',['../d9/d9f/classffmpegkit_1_1_chapter.html',1,'ffmpegkit']]], + ['compactcontext_1569',['CompactContext',['../d2/ddd/struct_compact_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_3.html b/docs/linux/html/search/classes_3.html new file mode 100644 index 0000000..2102545 --- /dev/null +++ b/docs/linux/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_3.js b/docs/linux/html/search/classes_3.js new file mode 100644 index 0000000..6889c81 --- /dev/null +++ b/docs/linux/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['defaultcontext_1570',['DefaultContext',['../d4/da0/struct_default_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_4.html b/docs/linux/html/search/classes_4.html new file mode 100644 index 0000000..095ab59 --- /dev/null +++ b/docs/linux/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_4.js b/docs/linux/html/search/classes_4.js new file mode 100644 index 0000000..a69460e --- /dev/null +++ b/docs/linux/html/search/classes_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ffmpegkit_1571',['FFmpegKit',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html',1,'ffmpegkit']]], + ['ffmpegkitconfig_1572',['FFmpegKitConfig',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html',1,'ffmpegkit']]], + ['ffmpegsession_1573',['FFmpegSession',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html',1,'ffmpegkit']]], + ['ffprobekit_1574',['FFprobeKit',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html',1,'ffmpegkit']]], + ['ffprobesession_1575',['FFprobeSession',['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html',1,'ffmpegkit']]], + ['filtergraph_1576',['FilterGraph',['../d9/de7/struct_filter_graph.html',1,'']]], + ['flatcontext_1577',['FlatContext',['../d3/db7/struct_flat_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_5.html b/docs/linux/html/search/classes_5.html new file mode 100644 index 0000000..fc9cdc9 --- /dev/null +++ b/docs/linux/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_5.js b/docs/linux/html/search/classes_5.js new file mode 100644 index 0000000..15a129d --- /dev/null +++ b/docs/linux/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hwaccel_1578',['HWAccel',['../df/d37/struct_h_w_accel.html',1,'']]], + ['hwdevice_1579',['HWDevice',['../de/dc7/struct_h_w_device.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_6.html b/docs/linux/html/search/classes_6.html new file mode 100644 index 0000000..1ecfddd --- /dev/null +++ b/docs/linux/html/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_6.js b/docs/linux/html/search/classes_6.js new file mode 100644 index 0000000..8cdd484 --- /dev/null +++ b/docs/linux/html/search/classes_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['inicontext_1580',['INIContext',['../da/d4f/struct_i_n_i_context.html',1,'']]], + ['inputfile_1581',['InputFile',['../d8/d99/struct_input_file.html',1,'']]], + ['inputfilter_1582',['InputFilter',['../d7/d0c/struct_input_filter.html',1,'']]], + ['inputstream_1583',['InputStream',['../d3/d6e/struct_input_stream.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_7.html b/docs/linux/html/search/classes_7.html new file mode 100644 index 0000000..0fc6fc3 --- /dev/null +++ b/docs/linux/html/search/classes_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_7.js b/docs/linux/html/search/classes_7.js new file mode 100644 index 0000000..59d62a9 --- /dev/null +++ b/docs/linux/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsoncontext_1584',['JSONContext',['../d6/d53/struct_j_s_o_n_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_8.html b/docs/linux/html/search/classes_8.html new file mode 100644 index 0000000..ac8af7d --- /dev/null +++ b/docs/linux/html/search/classes_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_8.js b/docs/linux/html/search/classes_8.js new file mode 100644 index 0000000..2963cf3 --- /dev/null +++ b/docs/linux/html/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['log_1585',['Log',['../db/d1c/classffmpegkit_1_1_log.html',1,'ffmpegkit']]], + ['logbuffer_1586',['LogBuffer',['../dd/d15/struct_log_buffer.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_9.html b/docs/linux/html/search/classes_9.html new file mode 100644 index 0000000..86cad04 --- /dev/null +++ b/docs/linux/html/search/classes_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_9.js b/docs/linux/html/search/classes_9.js new file mode 100644 index 0000000..11863a0 --- /dev/null +++ b/docs/linux/html/search/classes_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['mediainformation_1587',['MediaInformation',['../df/d06/classffmpegkit_1_1_media_information.html',1,'ffmpegkit']]], + ['mediainformationjsonparser_1588',['MediaInformationJsonParser',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html',1,'ffmpegkit']]], + ['mediainformationsession_1589',['MediaInformationSession',['../df/db7/classffmpegkit_1_1_media_information_session.html',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/classes_a.html b/docs/linux/html/search/classes_a.html new file mode 100644 index 0000000..4201e97 --- /dev/null +++ b/docs/linux/html/search/classes_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_a.js b/docs/linux/html/search/classes_a.js new file mode 100644 index 0000000..6950406 --- /dev/null +++ b/docs/linux/html/search/classes_a.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['option_1590',['Option',['../d3/d1d/struct_option.html',1,'']]], + ['optiondef_1591',['OptionDef',['../dc/d1e/struct_option_def.html',1,'']]], + ['optiongroup_1592',['OptionGroup',['../d6/d69/struct_option_group.html',1,'']]], + ['optiongroupdef_1593',['OptionGroupDef',['../db/dd7/struct_option_group_def.html',1,'']]], + ['optiongrouplist_1594',['OptionGroupList',['../d7/d4f/struct_option_group_list.html',1,'']]], + ['optionparsecontext_1595',['OptionParseContext',['../db/db5/struct_option_parse_context.html',1,'']]], + ['optionscontext_1596',['OptionsContext',['../df/d77/struct_options_context.html',1,'']]], + ['outputfile_1597',['OutputFile',['../de/df2/struct_output_file.html',1,'']]], + ['outputfilter_1598',['OutputFilter',['../d0/d0f/struct_output_filter.html',1,'']]], + ['outputstream_1599',['OutputStream',['../db/dde/struct_output_stream.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_b.html b/docs/linux/html/search/classes_b.html new file mode 100644 index 0000000..f88a578 --- /dev/null +++ b/docs/linux/html/search/classes_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_b.js b/docs/linux/html/search/classes_b.js new file mode 100644 index 0000000..504644d --- /dev/null +++ b/docs/linux/html/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['packages_1600',['Packages',['../dd/dee/classffmpegkit_1_1_packages.html',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/classes_c.html b/docs/linux/html/search/classes_c.html new file mode 100644 index 0000000..fa0cf4d --- /dev/null +++ b/docs/linux/html/search/classes_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_c.js b/docs/linux/html/search/classes_c.js new file mode 100644 index 0000000..32c0b06 --- /dev/null +++ b/docs/linux/html/search/classes_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readinterval_1601',['ReadInterval',['../d8/dee/struct_read_interval.html',1,'']]], + ['returncode_1602',['ReturnCode',['../d4/dcf/classffmpegkit_1_1_return_code.html',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/classes_d.html b/docs/linux/html/search/classes_d.html new file mode 100644 index 0000000..0b6b137 --- /dev/null +++ b/docs/linux/html/search/classes_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_d.js b/docs/linux/html/search/classes_d.js new file mode 100644 index 0000000..bed3561 --- /dev/null +++ b/docs/linux/html/search/classes_d.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['section_1603',['section',['../d9/d11/structsection.html',1,'']]], + ['session_1604',['Session',['../d5/d0e/classffmpegkit_1_1_session.html',1,'ffmpegkit']]], + ['specifieropt_1605',['SpecifierOpt',['../dd/da5/struct_specifier_opt.html',1,'']]], + ['statistics_1606',['Statistics',['../d0/de7/classffmpegkit_1_1_statistics.html',1,'ffmpegkit']]], + ['streaminformation_1607',['StreamInformation',['../d7/d9e/classffmpegkit_1_1_stream_information.html',1,'ffmpegkit']]], + ['streammap_1608',['StreamMap',['../db/d60/struct_stream_map.html',1,'']]], + ['sub2video_1609',['sub2video',['../d4/dfd/struct_input_stream_1_1sub2video.html',1,'InputStream']]] +]; diff --git a/docs/linux/html/search/classes_e.html b/docs/linux/html/search/classes_e.html new file mode 100644 index 0000000..2e42779 --- /dev/null +++ b/docs/linux/html/search/classes_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_e.js b/docs/linux/html/search/classes_e.js new file mode 100644 index 0000000..0c4fa07 --- /dev/null +++ b/docs/linux/html/search/classes_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unit_5fvalue_1610',['unit_value',['../d9/d6d/structunit__value.html',1,'']]] +]; diff --git a/docs/linux/html/search/classes_f.html b/docs/linux/html/search/classes_f.html new file mode 100644 index 0000000..e664ccd --- /dev/null +++ b/docs/linux/html/search/classes_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/classes_f.js b/docs/linux/html/search/classes_f.js new file mode 100644 index 0000000..d696aea --- /dev/null +++ b/docs/linux/html/search/classes_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['writer_1611',['Writer',['../d6/dff/struct_writer.html',1,'']]], + ['writercontext_1612',['WriterContext',['../d1/da2/struct_writer_context.html',1,'']]] +]; diff --git a/docs/linux/html/search/close.png b/docs/linux/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/docs/linux/html/search/close.png differ diff --git a/docs/linux/html/search/defines_0.html b/docs/linux/html/search/defines_0.html new file mode 100644 index 0000000..2deb369 --- /dev/null +++ b/docs/linux/html/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_0.js b/docs/linux/html/search/defines_0.js new file mode 100644 index 0000000..6bb2d85 --- /dev/null +++ b/docs/linux/html/search/defines_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['abort_5fon_5fflag_5fempty_5foutput_3083',['ABORT_ON_FLAG_EMPTY_OUTPUT',['../d7/db3/fftools__ffmpeg_8h.html#ab169b16d13871a631c18d844ca70eede',1,'fftools_ffmpeg.h']]], + ['abort_5fon_5fflag_5fempty_5foutput_5fstream_3084',['ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM',['../d7/db3/fftools__ffmpeg_8h.html#aef69b65c48b48532da4c9a99eb744a1e',1,'fftools_ffmpeg.h']]], + ['auto_5finsert_5ffilter_3085',['AUTO_INSERT_FILTER',['../d2/d36/fftools__ffmpeg__filter_8c.html#aba8e85f08c2269c623074c81f0e428d6',1,'fftools_ffmpeg_filter.c']]], + ['auto_5finsert_5ffilter_5finput_3086',['AUTO_INSERT_FILTER_INPUT',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9cf53e21bfb4178eefcce6b7dd20eca2',1,'fftools_ffmpeg_filter.c']]], + ['av_5flog_5fstderr_3087',['AV_LOG_STDERR',['../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1',1,'fftools_cmdutils.h']]] +]; diff --git a/docs/linux/html/search/defines_1.html b/docs/linux/html/search/defines_1.html new file mode 100644 index 0000000..e0d0b6d --- /dev/null +++ b/docs/linux/html/search/defines_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_1.js b/docs/linux/html/search/defines_1.js new file mode 100644 index 0000000..c5222c2 --- /dev/null +++ b/docs/linux/html/search/defines_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['check_5fcompliance_3088',['CHECK_COMPLIANCE',['../d8/d78/fftools__ffprobe_8c.html#a1a76606b559e0d41ea55758f602110e8',1,'fftools_ffprobe.c']]], + ['check_5fend_3089',['CHECK_END',['../d8/d78/fftools__ffprobe_8c.html#a135244e9f0a34effa490e5de3ea62fc9',1,'fftools_ffprobe.c']]], + ['contains_5fext_5flib_3090',['contains_ext_lib',['../d6/df7/_packages_8cpp.html#acedb637eba1e411f0111d3ccff24466e',1,'Packages.cpp']]] +]; diff --git a/docs/linux/html/search/defines_2.html b/docs/linux/html/search/defines_2.html new file mode 100644 index 0000000..707f942 --- /dev/null +++ b/docs/linux/html/search/defines_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_2.js b/docs/linux/html/search/defines_2.js new file mode 100644 index 0000000..89ae519 --- /dev/null +++ b/docs/linux/html/search/defines_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['decoding_5ffor_5ffilter_3091',['DECODING_FOR_FILTER',['../d7/db3/fftools__ffmpeg_8h.html#a69301b0986380d3c18feb65b0ac128c4',1,'fftools_ffmpeg.h']]], + ['decoding_5ffor_5fost_3092',['DECODING_FOR_OST',['../d7/db3/fftools__ffmpeg_8h.html#ac19c669906e50a4be81b78eb8777ca8c',1,'fftools_ffmpeg.h']]], + ['def_5fchoose_5fformat_3093',['DEF_CHOOSE_FORMAT',['../d2/d36/fftools__ffmpeg__filter_8c.html#adf70c3c13bfce09e37627128b7603633',1,'fftools_ffmpeg_filter.c']]], + ['default_5fpass_5flogfilename_5fprefix_3094',['DEFAULT_PASS_LOGFILENAME_PREFIX',['../da/d66/fftools__ffmpeg__opt_8c.html#a4dd32a1942a804edb22f2e016406db41',1,'fftools_ffmpeg_opt.c']]], + ['define_5fopt_5fshow_5fsection_3095',['DEFINE_OPT_SHOW_SECTION',['../d8/d78/fftools__ffprobe_8c.html#a92643af322bef24e375211104ee4a0ad',1,'fftools_ffprobe.c']]], + ['define_5fwriter_5fclass_3096',['DEFINE_WRITER_CLASS',['../d8/d78/fftools__ffprobe_8c.html#a7c81a9930943facb1612498469e99d7e',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/defines_3.html b/docs/linux/html/search/defines_3.html new file mode 100644 index 0000000..f30be10 --- /dev/null +++ b/docs/linux/html/search/defines_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_3.js b/docs/linux/html/search/defines_3.js new file mode 100644 index 0000000..85eac2f --- /dev/null +++ b/docs/linux/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flags_3097',['FLAGS',['../d7/dcc/fftools__cmdutils_8c.html#a6ccad09b4a2a06ae178418fdccf5940d',1,'fftools_cmdutils.c']]] +]; diff --git a/docs/linux/html/search/defines_4.html b/docs/linux/html/search/defines_4.html new file mode 100644 index 0000000..046ad4a --- /dev/null +++ b/docs/linux/html/search/defines_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_4.js b/docs/linux/html/search/defines_4.js new file mode 100644 index 0000000..508a6e6 --- /dev/null +++ b/docs/linux/html/search/defines_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['get_5farg_3098',['GET_ARG',['../d7/dcc/fftools__cmdutils_8c.html#a77359635accb87859b14d66b53002138',1,'fftools_cmdutils.c']]], + ['get_5fch_5flayout_5fdesc_3099',['GET_CH_LAYOUT_DESC',['../d8/d4e/fftools__cmdutils_8h.html#a950a3e73a77345e482e796c305ef25e4',1,'fftools_cmdutils.h']]], + ['get_5fch_5flayout_5fname_3100',['GET_CH_LAYOUT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a7b25c6a8e4f3e33fa53837200cbee607',1,'fftools_cmdutils.h']]], + ['get_5fcodec_5fname_3101',['GET_CODEC_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a4670d4ad86c74b82961d07ff8532defe',1,'fftools_cmdutils.h']]], + ['get_5fpix_5ffmt_5fname_3102',['GET_PIX_FMT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a8000828d615667df850114a1d810567f',1,'fftools_cmdutils.h']]], + ['get_5fsample_5ffmt_5fname_3103',['GET_SAMPLE_FMT_NAME',['../d8/d4e/fftools__cmdutils_8h.html#ab04427a6bc0201f8f4a95db84104c8ad',1,'fftools_cmdutils.h']]], + ['get_5fsample_5frate_5fname_3104',['GET_SAMPLE_RATE_NAME',['../d8/d4e/fftools__cmdutils_8h.html#a0745a3311be303dc4d6d9da67756e1e9',1,'fftools_cmdutils.h']]], + ['grow_5farray_3105',['GROW_ARRAY',['../d8/d4e/fftools__cmdutils_8h.html#aa75501e4e249657d5f0df6d7e8645d4f',1,'fftools_cmdutils.h']]] +]; diff --git a/docs/linux/html/search/defines_5.html b/docs/linux/html/search/defines_5.html new file mode 100644 index 0000000..61ce555 --- /dev/null +++ b/docs/linux/html/search/defines_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_5.js b/docs/linux/html/search/defines_5.js new file mode 100644 index 0000000..d524796 --- /dev/null +++ b/docs/linux/html/search/defines_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['has_5farg_3106',['HAS_ARG',['../d8/d4e/fftools__cmdutils_8h.html#affec572f11fcba59ce0cd49cbcd0110f',1,'fftools_cmdutils.h']]] +]; diff --git a/docs/linux/html/search/defines_6.html b/docs/linux/html/search/defines_6.html new file mode 100644 index 0000000..7496307 --- /dev/null +++ b/docs/linux/html/search/defines_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_6.js b/docs/linux/html/search/defines_6.js new file mode 100644 index 0000000..d1105a1 --- /dev/null +++ b/docs/linux/html/search/defines_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['indent_3107',['INDENT',['../d7/dcc/fftools__cmdutils_8c.html#a502b06aa5ad25116c775d201326bad52',1,'fftools_cmdutils.c']]] +]; diff --git a/docs/linux/html/search/defines_7.html b/docs/linux/html/search/defines_7.html new file mode 100644 index 0000000..049c0cf --- /dev/null +++ b/docs/linux/html/search/defines_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_7.js b/docs/linux/html/search/defines_7.js new file mode 100644 index 0000000..9b45233 --- /dev/null +++ b/docs/linux/html/search/defines_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['json_5findent_3108',['JSON_INDENT',['../d8/d78/fftools__ffprobe_8c.html#af91e82f9e77db029c711fa7610fd0055',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/defines_8.html b/docs/linux/html/search/defines_8.html new file mode 100644 index 0000000..a952d6c --- /dev/null +++ b/docs/linux/html/search/defines_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_8.js b/docs/linux/html/search/defines_8.js new file mode 100644 index 0000000..3caa632 --- /dev/null +++ b/docs/linux/html/search/defines_8.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['match_5fper_5fstream_5fopt_3109',['MATCH_PER_STREAM_OPT',['../da/d66/fftools__ffmpeg__opt_8c.html#acb83c221072b82ac43e6ebe61787072c',1,'fftools_ffmpeg_opt.c']]], + ['match_5fper_5ftype_5fopt_3110',['MATCH_PER_TYPE_OPT',['../da/d66/fftools__ffmpeg__opt_8c.html#a4cc472c69041f4fae418334430ccb829',1,'fftools_ffmpeg_opt.c']]], + ['max_5fregistered_5fwriters_5fnb_3111',['MAX_REGISTERED_WRITERS_NB',['../d8/d78/fftools__ffprobe_8c.html#a84e0af416e5dfb194932091ef05f7df5',1,'fftools_ffprobe.c']]], + ['max_5fstreams_3112',['MAX_STREAMS',['../d7/db3/fftools__ffmpeg_8h.html#a4a1e12ec49840b798c6413a8f6c947a9',1,'fftools_ffmpeg.h']]], + ['media_5ftype_5fstring_3113',['media_type_string',['../d8/d4e/fftools__cmdutils_8h.html#a1d155f9f5addbe58b32c5c180831caa9',1,'fftools_cmdutils.h']]], + ['metadata_5fcheck_5findex_3114',['METADATA_CHECK_INDEX',['../da/d66/fftools__ffmpeg__opt_8c.html#a2b9568a0878b1ab0c5892ecd144030d2',1,'fftools_ffmpeg_opt.c']]] +]; diff --git a/docs/linux/html/search/defines_9.html b/docs/linux/html/search/defines_9.html new file mode 100644 index 0000000..6dd7f69 --- /dev/null +++ b/docs/linux/html/search/defines_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_9.js b/docs/linux/html/search/defines_9.js new file mode 100644 index 0000000..a5481b8 --- /dev/null +++ b/docs/linux/html/search/defines_9.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['offset_3115',['OFFSET',['../d7/d48/fftools__ffmpeg_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffmpeg.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#ad12dce0a7bf9d908b172a28155b3d261',1,'OFFSET(): fftools_ffprobe.c']]], + ['opt_5faudio_3116',['OPT_AUDIO',['../d8/d4e/fftools__cmdutils_8h.html#aac1f37101001610dfbf8c6c679b786da',1,'fftools_cmdutils.h']]], + ['opt_5fbool_3117',['OPT_BOOL',['../d8/d4e/fftools__cmdutils_8h.html#a1b1c1cb0b866790034157479d6dd5da6',1,'fftools_cmdutils.h']]], + ['opt_5fdata_3118',['OPT_DATA',['../d8/d4e/fftools__cmdutils_8h.html#aaf5b4d51091fffdd43550ce4c7f64b88',1,'fftools_cmdutils.h']]], + ['opt_5fdouble_3119',['OPT_DOUBLE',['../d8/d4e/fftools__cmdutils_8h.html#a8370d4bb83286c3641c5dd87551f6182',1,'fftools_cmdutils.h']]], + ['opt_5fexit_3120',['OPT_EXIT',['../d8/d4e/fftools__cmdutils_8h.html#ac6310b4c2290bc63f127bcd3faa117e6',1,'fftools_cmdutils.h']]], + ['opt_5fexpert_3121',['OPT_EXPERT',['../d8/d4e/fftools__cmdutils_8h.html#ab8b1131ea532a43a07296dd04c8c9693',1,'fftools_cmdutils.h']]], + ['opt_5ffloat_3122',['OPT_FLOAT',['../d8/d4e/fftools__cmdutils_8h.html#a56df4dc0401bc7c1ad4c7744c44879f7',1,'fftools_cmdutils.h']]], + ['opt_5finput_3123',['OPT_INPUT',['../d8/d4e/fftools__cmdutils_8h.html#a70561ef40bba827afd07234175c07d03',1,'fftools_cmdutils.h']]], + ['opt_5fint_3124',['OPT_INT',['../d8/d4e/fftools__cmdutils_8h.html#a55bdf11c33fc097533cde94b0f64024b',1,'fftools_cmdutils.h']]], + ['opt_5fint64_3125',['OPT_INT64',['../d8/d4e/fftools__cmdutils_8h.html#a1e6d562f7f8c2883ddc3847a003dc804',1,'fftools_cmdutils.h']]], + ['opt_5foffset_3126',['OPT_OFFSET',['../d8/d4e/fftools__cmdutils_8h.html#af8d2573bae8637d92cfb1bd84782e8d5',1,'fftools_cmdutils.h']]], + ['opt_5foutput_3127',['OPT_OUTPUT',['../d8/d4e/fftools__cmdutils_8h.html#ac8131c70a1e8339c3574c9a08da81d1b',1,'fftools_cmdutils.h']]], + ['opt_5fperfile_3128',['OPT_PERFILE',['../d8/d4e/fftools__cmdutils_8h.html#a2cb4d9f4b617e04d8b68fc881fdbb958',1,'fftools_cmdutils.h']]], + ['opt_5fspec_3129',['OPT_SPEC',['../d8/d4e/fftools__cmdutils_8h.html#a125b062e1ed2e8d929ab67f4721aa463',1,'fftools_cmdutils.h']]], + ['opt_5fstring_3130',['OPT_STRING',['../d8/d4e/fftools__cmdutils_8h.html#a91fea349332c05eb78ce3c17202e1dc9',1,'fftools_cmdutils.h']]], + ['opt_5fsubtitle_3131',['OPT_SUBTITLE',['../d8/d4e/fftools__cmdutils_8h.html#ab2f01b015c63102de072d1b04cb54907',1,'fftools_cmdutils.h']]], + ['opt_5ftime_3132',['OPT_TIME',['../d8/d4e/fftools__cmdutils_8h.html#ac8fbad19fad03f8e62a8f5d5ccba5782',1,'fftools_cmdutils.h']]], + ['opt_5fvideo_3133',['OPT_VIDEO',['../d8/d4e/fftools__cmdutils_8h.html#a0654bdd8f429df3aaf1f532968783bbc',1,'fftools_cmdutils.h']]] +]; diff --git a/docs/linux/html/search/defines_a.html b/docs/linux/html/search/defines_a.html new file mode 100644 index 0000000..415e4ff --- /dev/null +++ b/docs/linux/html/search/defines_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_a.js b/docs/linux/html/search/defines_a.js new file mode 100644 index 0000000..440d3ba --- /dev/null +++ b/docs/linux/html/search/defines_a.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['print_5fcodec_5fsupported_3134',['PRINT_CODEC_SUPPORTED',['../d7/dcc/fftools__cmdutils_8c.html#af0ae219da0c0d02b180f9badbb6edb38',1,'fftools_cmdutils.c']]], + ['print_5fdisposition_3135',['PRINT_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#ae89dbba8c801237ffa79d17b6bd31a1d',1,'fftools_ffprobe.c']]], + ['print_5fduration_5ftime_3136',['print_duration_time',['../d8/d78/fftools__ffprobe_8c.html#ab897cb79fde6bf9963bfcf3c95845307',1,'fftools_ffprobe.c']]], + ['print_5fduration_5fts_3137',['print_duration_ts',['../d8/d78/fftools__ffprobe_8c.html#a75f1eefc6aa23e90b8599dd5da7b2e16',1,'fftools_ffprobe.c']]], + ['print_5ffmt_3138',['print_fmt',['../d8/d78/fftools__ffprobe_8c.html#afb5a75a925e69bb3c9e45789846bee94',1,'fftools_ffprobe.c']]], + ['print_5fint_3139',['print_int',['../d8/d78/fftools__ffprobe_8c.html#a1f90422e06519bc2ea72274f451395a4',1,'fftools_ffprobe.c']]], + ['print_5flib_5finfo_3140',['PRINT_LIB_INFO',['../d7/dcc/fftools__cmdutils_8c.html#a6dbb327ec24eebea72ba8769c68024b3',1,'fftools_cmdutils.c']]], + ['print_5fpix_5ffmt_5fflag_3141',['PRINT_PIX_FMT_FLAG',['../d8/d78/fftools__ffprobe_8c.html#af450d28944707460380b44f51afbe567',1,'fftools_ffprobe.c']]], + ['print_5fq_3142',['print_q',['../d8/d78/fftools__ffprobe_8c.html#a9c4cb64e61f63461e6a2e9f96bcc08ed',1,'fftools_ffprobe.c']]], + ['print_5fsection_5ffooter_3143',['print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#ad54b30ff4585cf06a45b86113c699493',1,'fftools_ffprobe.c']]], + ['print_5fsection_5fheader_3144',['print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a56b929d7a49aade17278630a7c20417f',1,'fftools_ffprobe.c']]], + ['print_5fstr_3145',['print_str',['../d8/d78/fftools__ffprobe_8c.html#a71a4323c9d09f2134813214b05b02f21',1,'fftools_ffprobe.c']]], + ['print_5fstr_5fopt_3146',['print_str_opt',['../d8/d78/fftools__ffprobe_8c.html#a86cec82a25b7a8b4b3fcf3a5cd83e0d4',1,'fftools_ffprobe.c']]], + ['print_5fstr_5fvalidate_3147',['print_str_validate',['../d8/d78/fftools__ffprobe_8c.html#a5a79884570405103edc691484f0ca561',1,'fftools_ffprobe.c']]], + ['print_5fstring_5fopt_3148',['PRINT_STRING_OPT',['../d8/d78/fftools__ffprobe_8c.html#a7e877e1650865d2eb640e3248e899ae3',1,'fftools_ffprobe.c']]], + ['print_5fstring_5fvalidate_3149',['PRINT_STRING_VALIDATE',['../d8/d78/fftools__ffprobe_8c.html#ae2c9d9f267fca35b7f16ba714b7e9cb0',1,'fftools_ffprobe.c']]], + ['print_5ftime_3150',['print_time',['../d8/d78/fftools__ffprobe_8c.html#ae44aadacbb049e30ef6fa3598badd931',1,'fftools_ffprobe.c']]], + ['print_5fts_3151',['print_ts',['../d8/d78/fftools__ffprobe_8c.html#a1ada112e892e2c2cb448f91364e87054',1,'fftools_ffprobe.c']]], + ['print_5fval_3152',['print_val',['../d8/d78/fftools__ffprobe_8c.html#a8c00b38ce31cc5680d3ef3c4b86cb47a',1,'fftools_ffprobe.c']]], + ['pthread_5fmutex_5flock_3153',['pthread_mutex_lock',['../d8/d78/fftools__ffprobe_8c.html#a3bd1ad5edf8fc93f783af77e8cd6ee9a',1,'fftools_ffprobe.c']]], + ['pthread_5fmutex_5funlock_3154',['pthread_mutex_unlock',['../d8/d78/fftools__ffprobe_8c.html#aa91b7ec8ae8a2d699fb09cc20c444fe8',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/defines_b.html b/docs/linux/html/search/defines_b.html new file mode 100644 index 0000000..b8ee698 --- /dev/null +++ b/docs/linux/html/search/defines_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_b.js b/docs/linux/html/search/defines_b.js new file mode 100644 index 0000000..ea7e34b --- /dev/null +++ b/docs/linux/html/search/defines_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rapidjson_5fassert_3155',['RAPIDJSON_ASSERT',['../dc/d8d/_chapter_8h.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): Chapter.h'],['../d1/dbf/_media_information_json_parser_8cpp.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): MediaInformationJsonParser.cpp'],['../d4/df4/_stream_information_8h.html#abeba18d612187bad2ac62aed9276d47c',1,'RAPIDJSON_ASSERT(): StreamInformation.h']]], + ['reallocz_5farray_5fstream_3156',['REALLOCZ_ARRAY_STREAM',['../d8/d78/fftools__ffprobe_8c.html#ae74bd2a2deaef10dcb052f912c2b280b',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/defines_c.html b/docs/linux/html/search/defines_c.html new file mode 100644 index 0000000..936541d --- /dev/null +++ b/docs/linux/html/search/defines_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_c.js b/docs/linux/html/search/defines_c.js new file mode 100644 index 0000000..0a6128a --- /dev/null +++ b/docs/linux/html/search/defines_c.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['section_5fflag_5fhas_5fvariable_5ffields_3157',['SECTION_FLAG_HAS_VARIABLE_FIELDS',['../d8/d78/fftools__ffprobe_8c.html#a5e46058932a89f773c66c8e04f6bfb17',1,'fftools_ffprobe.c']]], + ['section_5fflag_5fis_5farray_3158',['SECTION_FLAG_IS_ARRAY',['../d8/d78/fftools__ffprobe_8c.html#a36f5a16a863ce58ae9b90a16055a9605',1,'fftools_ffprobe.c']]], + ['section_5fflag_5fis_5fwrapper_3159',['SECTION_FLAG_IS_WRAPPER',['../d8/d78/fftools__ffprobe_8c.html#a249ee7cc2f1ff6f732f5da1ccf991f19',1,'fftools_ffprobe.c']]], + ['section_5fmax_5fnb_5fchildren_3160',['SECTION_MAX_NB_CHILDREN',['../d8/d78/fftools__ffprobe_8c.html#a366798580b5ade9ac72659d8f4e21872',1,'fftools_ffprobe.c']]], + ['section_5fmax_5fnb_5flevels_3161',['SECTION_MAX_NB_LEVELS',['../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93',1,'fftools_ffprobe.c']]], + ['session_5fmap_5fsize_3162',['SESSION_MAP_SIZE',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1e14f8bbb8b53e71afdb9ebffb74ee23',1,'FFmpegKitConfig.cpp']]], + ['set_5fdict_3163',['SET_DICT',['../da/d66/fftools__ffmpeg__opt_8c.html#a0116f637ab1a81dd3079aaba28d280eb',1,'fftools_ffmpeg_opt.c']]], + ['set_5fdo_5fshow_3164',['SET_DO_SHOW',['../d8/d78/fftools__ffprobe_8c.html#a9c3593df862d13354794209c1e423966',1,'fftools_ffprobe.c']]], + ['show_5fconfig_3165',['SHOW_CONFIG',['../d7/dcc/fftools__cmdutils_8c.html#a348446b4b7f51ff008d04c9c6a4a6e0b',1,'fftools_cmdutils.c']]], + ['show_5fcopyright_3166',['SHOW_COPYRIGHT',['../d7/dcc/fftools__cmdutils_8c.html#abd0ec713b97008fc3cf59d1e62f8d414',1,'fftools_cmdutils.c']]], + ['show_5flib_5fversion_3167',['SHOW_LIB_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a16e228e4fdb113e965dea1e72c179f1c',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5falways_3168',['SHOW_OPTIONAL_FIELDS_ALWAYS',['../d8/d78/fftools__ffprobe_8c.html#ade3ed491fed4531b440d871e0dff4bde',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5fauto_3169',['SHOW_OPTIONAL_FIELDS_AUTO',['../d8/d78/fftools__ffprobe_8c.html#a2c7ac0254fa058475012d6f1450a3782',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_5fnever_3170',['SHOW_OPTIONAL_FIELDS_NEVER',['../d8/d78/fftools__ffprobe_8c.html#affaaa0eef7838fc760516ae079cd7e74',1,'fftools_ffprobe.c']]], + ['show_5fversion_3171',['SHOW_VERSION',['../d7/dcc/fftools__cmdutils_8c.html#a49df5947a3d9f779aa05b8d55aa09e06',1,'fftools_cmdutils.c']]], + ['signal_3172',['SIGNAL',['../d7/d48/fftools__ffmpeg_8c.html#a8d2175ad5ec10cdaff3fd386b27eeebf',1,'fftools_ffmpeg.c']]], + ['specifier_5fopt_5ffmt_5fdbl_3173',['SPECIFIER_OPT_FMT_dbl',['../da/d66/fftools__ffmpeg__opt_8c.html#a5b3cf8984eccd7698241ded4b9831d9a',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5ff_3174',['SPECIFIER_OPT_FMT_f',['../da/d66/fftools__ffmpeg__opt_8c.html#a1d7b961f27b365f8a55021c37c3ae42b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fi_3175',['SPECIFIER_OPT_FMT_i',['../da/d66/fftools__ffmpeg__opt_8c.html#ab53f2d7a3313a58027a14edbb6b3371b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fi64_3176',['SPECIFIER_OPT_FMT_i64',['../da/d66/fftools__ffmpeg__opt_8c.html#a55e9ec369c28568761890322f01f0fc9',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fstr_3177',['SPECIFIER_OPT_FMT_str',['../da/d66/fftools__ffmpeg__opt_8c.html#a05dcbce260f33ed79d9e12b29df5c81b',1,'fftools_ffmpeg_opt.c']]], + ['specifier_5fopt_5ffmt_5fui64_3178',['SPECIFIER_OPT_FMT_ui64',['../da/d66/fftools__ffmpeg__opt_8c.html#affa82eeddb5b77ea255732edc8cacda2',1,'fftools_ffmpeg_opt.c']]], + ['sws_5fissupportedinput_3179',['sws_isSupportedInput',['../d7/dcc/fftools__cmdutils_8c.html#af9e1a5468e1c3cc5eaf3d3a7ce599455',1,'fftools_cmdutils.c']]], + ['sws_5fissupportedoutput_3180',['sws_isSupportedOutput',['../d7/dcc/fftools__cmdutils_8c.html#ad561d6413e65da885fb1e7a90da4f0c2',1,'fftools_cmdutils.c']]] +]; diff --git a/docs/linux/html/search/defines_d.html b/docs/linux/html/search/defines_d.html new file mode 100644 index 0000000..6ba81c1 --- /dev/null +++ b/docs/linux/html/search/defines_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_d.js b/docs/linux/html/search/defines_d.js new file mode 100644 index 0000000..cc8e716 --- /dev/null +++ b/docs/linux/html/search/defines_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['vsync_5fauto_3181',['VSYNC_AUTO',['../d7/db3/fftools__ffmpeg_8h.html#a7a29c56248090da0d5fb37a87b9a695d',1,'fftools_ffmpeg.h']]], + ['vsync_5fcfr_3182',['VSYNC_CFR',['../d7/db3/fftools__ffmpeg_8h.html#a55f456dcb9eef4dae3472d86039ab92e',1,'fftools_ffmpeg.h']]], + ['vsync_5fdrop_3183',['VSYNC_DROP',['../d7/db3/fftools__ffmpeg_8h.html#a16386b3f2344042c2a72b9143f09fcfa',1,'fftools_ffmpeg.h']]], + ['vsync_5fpassthrough_3184',['VSYNC_PASSTHROUGH',['../d7/db3/fftools__ffmpeg_8h.html#ad997d298e58562365e7011c3d2fdd811',1,'fftools_ffmpeg.h']]], + ['vsync_5fvfr_3185',['VSYNC_VFR',['../d7/db3/fftools__ffmpeg_8h.html#ae4d5327ac60265779027253e0f6ca4dc',1,'fftools_ffmpeg.h']]], + ['vsync_5fvscfr_3186',['VSYNC_VSCFR',['../d7/db3/fftools__ffmpeg_8h.html#ad58e98727fde6229cee5d33aaec6d787',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/defines_e.html b/docs/linux/html/search/defines_e.html new file mode 100644 index 0000000..10b96b2 --- /dev/null +++ b/docs/linux/html/search/defines_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_e.js b/docs/linux/html/search/defines_e.js new file mode 100644 index 0000000..01a6c52 --- /dev/null +++ b/docs/linux/html/search/defines_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['warn_5fmultiple_5fopt_5fusage_3187',['WARN_MULTIPLE_OPT_USAGE',['../da/d66/fftools__ffmpeg__opt_8c.html#a61f51ca9f5bb864a0a84e319e5049578',1,'fftools_ffmpeg_opt.c']]], + ['writer_5fflag_5fdisplay_5foptional_5ffields_3188',['WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS',['../d8/d78/fftools__ffprobe_8c.html#a079beb6b4d87613d204e4ab83908949b',1,'fftools_ffprobe.c']]], + ['writer_5fflag_5fput_5fpackets_5fand_5fframes_5fin_5fsame_5fchapter_3189',['WRITER_FLAG_PUT_PACKETS_AND_FRAMES_IN_SAME_CHAPTER',['../d8/d78/fftools__ffprobe_8c.html#a210133177091ed3fdf629fd6ffc7832b',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/defines_f.html b/docs/linux/html/search/defines_f.html new file mode 100644 index 0000000..f8818f8 --- /dev/null +++ b/docs/linux/html/search/defines_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/defines_f.js b/docs/linux/html/search/defines_f.js new file mode 100644 index 0000000..83878de --- /dev/null +++ b/docs/linux/html/search/defines_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xml_5findent_3190',['XML_INDENT',['../d8/d78/fftools__ffprobe_8c.html#a493c803b896d5c1f6ea7e753e94ae040',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/enums_0.html b/docs/linux/html/search/enums_0.html new file mode 100644 index 0000000..9669700 --- /dev/null +++ b/docs/linux/html/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_0.js b/docs/linux/html/search/enums_0.js new file mode 100644 index 0000000..9cafb6e --- /dev/null +++ b/docs/linux/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['callbacktype_2981',['CallbackType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/enums_1.html b/docs/linux/html/search/enums_1.html new file mode 100644 index 0000000..dfec174 --- /dev/null +++ b/docs/linux/html/search/enums_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_1.js b/docs/linux/html/search/enums_1.js new file mode 100644 index 0000000..829bfc7 --- /dev/null +++ b/docs/linux/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['forced_5fkeyframes_5fconst_2982',['forced_keyframes_const',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enums_2.html b/docs/linux/html/search/enums_2.html new file mode 100644 index 0000000..db70c36 --- /dev/null +++ b/docs/linux/html/search/enums_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_2.js b/docs/linux/html/search/enums_2.js new file mode 100644 index 0000000..a3765e9 --- /dev/null +++ b/docs/linux/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hwaccelid_2983',['HWAccelID',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205f',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enums_3.html b/docs/linux/html/search/enums_3.html new file mode 100644 index 0000000..fb7ec17 --- /dev/null +++ b/docs/linux/html/search/enums_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_3.js b/docs/linux/html/search/enums_3.js new file mode 100644 index 0000000..8d9b283 --- /dev/null +++ b/docs/linux/html/search/enums_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['level_2984',['Level',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4',1,'ffmpegkit']]], + ['logredirectionstrategy_2985',['LogRedirectionStrategy',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebe',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/enums_4.html b/docs/linux/html/search/enums_4.html new file mode 100644 index 0000000..b8b51ef --- /dev/null +++ b/docs/linux/html/search/enums_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_4.js b/docs/linux/html/search/enums_4.js new file mode 100644 index 0000000..b05eeb0 --- /dev/null +++ b/docs/linux/html/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ostfinished_2986',['OSTFinished',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enums_5.html b/docs/linux/html/search/enums_5.html new file mode 100644 index 0000000..d39b033 --- /dev/null +++ b/docs/linux/html/search/enums_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enums_5.js b/docs/linux/html/search/enums_5.js new file mode 100644 index 0000000..b9f16c2 --- /dev/null +++ b/docs/linux/html/search/enums_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sectionid_2987',['SectionID',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87',1,'fftools_ffprobe.c']]], + ['sessionstate_2988',['SessionState',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8f',1,'ffmpegkit']]], + ['show_5fmuxdemuxers_2989',['show_muxdemuxers',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755ade',1,'fftools_cmdutils.c']]], + ['signal_2990',['Signal',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2',1,'ffmpegkit']]], + ['stringvalidation_2991',['StringValidation',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6b',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/enumvalues_0.html b/docs/linux/html/search/enumvalues_0.html new file mode 100644 index 0000000..9286248 --- /dev/null +++ b/docs/linux/html/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_0.js b/docs/linux/html/search/enumvalues_0.js new file mode 100644 index 0000000..737bc8d --- /dev/null +++ b/docs/linux/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['encoder_5ffinished_2992',['ENCODER_FINISHED',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31acd6c6d4f0864009dfe2fb65c496f39a7',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enumvalues_1.html b/docs/linux/html/search/enumvalues_1.html new file mode 100644 index 0000000..e22a79f --- /dev/null +++ b/docs/linux/html/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_1.js b/docs/linux/html/search/enumvalues_1.js new file mode 100644 index 0000000..7015b5c --- /dev/null +++ b/docs/linux/html/search/enumvalues_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['fkf_5fn_2993',['FKF_N',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508affb3715058142056c2f602c81e52c15b',1,'fftools_ffmpeg.h']]], + ['fkf_5fn_5fforced_2994',['FKF_N_FORCED',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508af7bb0577a3c487398eaf009668f9c531',1,'fftools_ffmpeg.h']]], + ['fkf_5fnb_2995',['FKF_NB',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a433ef01f7e501e6a6afbee4980a80ab1',1,'fftools_ffmpeg.h']]], + ['fkf_5fprev_5fforced_5fn_2996',['FKF_PREV_FORCED_N',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a522165f39cb8f0acf7c4bdebd1beb18a',1,'fftools_ffmpeg.h']]], + ['fkf_5fprev_5fforced_5ft_2997',['FKF_PREV_FORCED_T',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508aa4cb3dbc7a44f39776072f4349d1facc',1,'fftools_ffmpeg.h']]], + ['fkf_5ft_2998',['FKF_T',['../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a7ea9b7f772135312dec60fcf7b0973de',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enumvalues_2.html b/docs/linux/html/search/enumvalues_2.html new file mode 100644 index 0000000..01a77bf --- /dev/null +++ b/docs/linux/html/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_2.js b/docs/linux/html/search/enumvalues_2.js new file mode 100644 index 0000000..089771d --- /dev/null +++ b/docs/linux/html/search/enumvalues_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['hwaccel_5fauto_2999',['HWACCEL_AUTO',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205faf30c0c6c4434db4f22346cdcbd909a02',1,'fftools_ffmpeg.h']]], + ['hwaccel_5fgeneric_3000',['HWACCEL_GENERIC',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205fab96d67115af909300a442d76232c0362',1,'fftools_ffmpeg.h']]], + ['hwaccel_5fnone_3001',['HWACCEL_NONE',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205fa293989c77f66e42d7477243815670be6',1,'fftools_ffmpeg.h']]], + ['hwaccel_5fvideotoolbox_3002',['HWACCEL_VIDEOTOOLBOX',['../d7/db3/fftools__ffmpeg_8h.html#a0804b6530666fd8d5f4e4193ee1d205faf941d724f9c78c4ac3174e2f6da82bd3',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enumvalues_3.html b/docs/linux/html/search/enumvalues_3.html new file mode 100644 index 0000000..4e761d6 --- /dev/null +++ b/docs/linux/html/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_3.js b/docs/linux/html/search/enumvalues_3.js new file mode 100644 index 0000000..6007657 --- /dev/null +++ b/docs/linux/html/search/enumvalues_3.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['levelavlogdebug_3003',['LevelAVLogDebug',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a377b674192dd6d0212f3782280342ad3',1,'ffmpegkit']]], + ['levelavlogerror_3004',['LevelAVLogError',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a34bc76c36c5f97ec84ad0e5e1cd35251',1,'ffmpegkit']]], + ['levelavlogfatal_3005',['LevelAVLogFatal',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4aeef1c634636b2a03270ba6bab8d2ecf1',1,'ffmpegkit']]], + ['levelavloginfo_3006',['LevelAVLogInfo',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4acfd515b605fe5e71a66f2a47072c4d84',1,'ffmpegkit']]], + ['levelavlogpanic_3007',['LevelAVLogPanic',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a6be4cb38f1ff513c977d2d5e37deae42',1,'ffmpegkit']]], + ['levelavlogquiet_3008',['LevelAVLogQuiet',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a601376fad6823274f99a97262f689c2f',1,'ffmpegkit']]], + ['levelavlogstderr_3009',['LevelAVLogStdErr',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4a4baea55bfac0c0ac87e3d022c7dfe06e',1,'ffmpegkit']]], + ['levelavlogtrace_3010',['LevelAVLogTrace',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4acb7d008328737b034c1ac65843c01413',1,'ffmpegkit']]], + ['levelavlogverbose_3011',['LevelAVLogVerbose',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4ab251e1df59c8c9910f62effc9bbc8631',1,'ffmpegkit']]], + ['levelavlogwarning_3012',['LevelAVLogWarning',['../d2/d25/namespaceffmpegkit.html#a3726dad678d38ecd08f9af2f142156a4aaa2ab1eddacb480d687f17f0116d7e46',1,'ffmpegkit']]], + ['logredirectionstrategyalwaysprintlogs_3013',['LogRedirectionStrategyAlwaysPrintLogs',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea4ac7c7054007119d71549846c2544288',1,'ffmpegkit']]], + ['logredirectionstrategyneverprintlogs_3014',['LogRedirectionStrategyNeverPrintLogs',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea51a85a2abdd53daab89f93edb3779635',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhenglobalcallbacknotdefined_3015',['LogRedirectionStrategyPrintLogsWhenGlobalCallbackNotDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebeacf82deb57f2cfc6bfac3ab4c9a8e534c',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhennocallbacksdefined_3016',['LogRedirectionStrategyPrintLogsWhenNoCallbacksDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea662a08ddb8f44ec2a54b2259108d11b1',1,'ffmpegkit']]], + ['logredirectionstrategyprintlogswhensessioncallbacknotdefined_3017',['LogRedirectionStrategyPrintLogsWhenSessionCallbackNotDefined',['../d2/d25/namespaceffmpegkit.html#a11bee89be98423d1dc425a2849001ebea3b1e8dc7839b7abe69fe333e37f71936',1,'ffmpegkit']]], + ['logtype_3018',['LogType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318aeeced9e809b51a3532dfc6701bbe3bb6',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/enumvalues_4.html b/docs/linux/html/search/enumvalues_4.html new file mode 100644 index 0000000..e2977a0 --- /dev/null +++ b/docs/linux/html/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_4.js b/docs/linux/html/search/enumvalues_4.js new file mode 100644 index 0000000..41822d6 --- /dev/null +++ b/docs/linux/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['muxer_5ffinished_3019',['MUXER_FINISHED',['../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31ae8b7f720076ace3e8c20648c8b77835b',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/enumvalues_5.html b/docs/linux/html/search/enumvalues_5.html new file mode 100644 index 0000000..eabdd4b --- /dev/null +++ b/docs/linux/html/search/enumvalues_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_5.js b/docs/linux/html/search/enumvalues_5.js new file mode 100644 index 0000000..7ce3562 --- /dev/null +++ b/docs/linux/html/search/enumvalues_5.js @@ -0,0 +1,61 @@ +var searchData= +[ + ['section_5fid_5fchapter_3020',['SECTION_ID_CHAPTER',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87af187a8756c3474f623af619cc2cecfab',1,'fftools_ffprobe.c']]], + ['section_5fid_5fchapter_5ftags_3021',['SECTION_ID_CHAPTER_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab9179256b632e7322c34c975aba60113',1,'fftools_ffprobe.c']]], + ['section_5fid_5fchapters_3022',['SECTION_ID_CHAPTERS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a94a57f7e213e6a570c5f5e4f9a908d89',1,'fftools_ffprobe.c']]], + ['section_5fid_5ferror_3023',['SECTION_ID_ERROR',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ac32869779beedd9c1869d830c03a37c2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fformat_3024',['SECTION_ID_FORMAT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9b5c997bea74161e77fe05dc3cd7a779',1,'fftools_ffprobe.c']]], + ['section_5fid_5fformat_5ftags_3025',['SECTION_ID_FORMAT_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9433f18a6e6ba1bba68e0275d8bf0e74',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_3026',['SECTION_ID_FRAME',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ad4e46308a57402696fa5a21ebc338c1c',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5flog_3027',['SECTION_ID_FRAME_LOG',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87acc19cde74c4156449dcabd4b837d6f25',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5flogs_3028',['SECTION_ID_FRAME_LOGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a958eca9d2ef84ad2b4c8f55a8995d5e4',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_3029',['SECTION_ID_FRAME_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a013501a003479933f5e22ccf9cc295a2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5flist_3030',['SECTION_ID_FRAME_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab4519d828e00418e59c8d92e710888f0',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5ftimecode_3031',['SECTION_ID_FRAME_SIDE_DATA_TIMECODE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a94e4dfea50ed9b4c13031c2400d7866b',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5fside_5fdata_5ftimecode_5flist_3032',['SECTION_ID_FRAME_SIDE_DATA_TIMECODE_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a70958bc75a8b30b4ab96c4e26ea3c6a5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframe_5ftags_3033',['SECTION_ID_FRAME_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a7c3290bb56ce048615e3b1a3238d3eb3',1,'fftools_ffprobe.c']]], + ['section_5fid_5fframes_3034',['SECTION_ID_FRAMES',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a5a185d40892663db87930b18ab0b9226',1,'fftools_ffprobe.c']]], + ['section_5fid_5flibrary_5fversion_3035',['SECTION_ID_LIBRARY_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a4a9900b4c8544c11b4304bc0bfce20ef',1,'fftools_ffprobe.c']]], + ['section_5fid_5flibrary_5fversions_3036',['SECTION_ID_LIBRARY_VERSIONS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a7fa306c8c71213e6892a5f3535bef2bf',1,'fftools_ffprobe.c']]], + ['section_5fid_5fnone_3037',['SECTION_ID_NONE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a51a45bd669c8cb0343cf24886199a6a5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_3038',['SECTION_ID_PACKET',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1327df87967051e9e978aabab0cb4a90',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5fside_5fdata_3039',['SECTION_ID_PACKET_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ad8f94f6062593c785d7371a0d3ee9d40',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5fside_5fdata_5flist_3040',['SECTION_ID_PACKET_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a67bc62da5163caee4ae23a543d6ea9e4',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpacket_5ftags_3041',['SECTION_ID_PACKET_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa08b5f0ea8e91f53fa8eec87b184ebc8',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpackets_3042',['SECTION_ID_PACKETS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a78b6824d29ade7371aa9020036417b41',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpackets_5fand_5fframes_3043',['SECTION_ID_PACKETS_AND_FRAMES',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a636fba702359c857ab96a876baa0fd4f',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_3044',['SECTION_ID_PIXEL_FORMAT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aaf38924f26d48b2cf2feb1e8b2e2d092',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fcomponent_3045',['SECTION_ID_PIXEL_FORMAT_COMPONENT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa3d0c705bf37bcade987e8fa419bfdd5',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fcomponents_3046',['SECTION_ID_PIXEL_FORMAT_COMPONENTS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a9a6ae92ac20c7735461b82fee1fcd97a',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformat_5fflags_3047',['SECTION_ID_PIXEL_FORMAT_FLAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1e353a85a62878b235ffa20aa61744d2',1,'fftools_ffprobe.c']]], + ['section_5fid_5fpixel_5fformats_3048',['SECTION_ID_PIXEL_FORMATS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a3dd3f4afeef5f66862f678d2f659c280',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_3049',['SECTION_ID_PROGRAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87afd775e0dbc9a91f88d7657bbd8538cdb',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_3050',['SECTION_ID_PROGRAM_STREAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a1216e3263722e0f7c66e0730e28740e8',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_5fdisposition_3051',['SECTION_ID_PROGRAM_STREAM_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a6b92f3ea49c3a50a1e7666d4ddfec199',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstream_5ftags_3052',['SECTION_ID_PROGRAM_STREAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a8c200ada1596bb835ffaaca423f20d71',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fstreams_3053',['SECTION_ID_PROGRAM_STREAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87afc683f9f23abefd14a76e47dc9ab967f',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5ftags_3054',['SECTION_ID_PROGRAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a3afec05479ad94ca83aa3250f9322814',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprogram_5fversion_3055',['SECTION_ID_PROGRAM_VERSION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a13de341d4057be0947152cdf61bfeb59',1,'fftools_ffprobe.c']]], + ['section_5fid_5fprograms_3056',['SECTION_ID_PROGRAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a84a4abd8361957f44e7dbe57d6e8605a',1,'fftools_ffprobe.c']]], + ['section_5fid_5froot_3057',['SECTION_ID_ROOT',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ae0dbb54a5ec2846f0dadeceedc716a81',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_3058',['SECTION_ID_STREAM',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a46fc13ad34edec55db958e5528352be0',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fdisposition_3059',['SECTION_ID_STREAM_DISPOSITION',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ae00cff65bbe6d5e5d66939b333e5ec30',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fside_5fdata_3060',['SECTION_ID_STREAM_SIDE_DATA',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a5ceec07a4d07b35257da65555b0d1f05',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5fside_5fdata_5flist_3061',['SECTION_ID_STREAM_SIDE_DATA_LIST',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a830316339c38d1c6118ebc60646c7460',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstream_5ftags_3062',['SECTION_ID_STREAM_TAGS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87a0314ca90cd7661d814ea0363a1b8d077',1,'fftools_ffprobe.c']]], + ['section_5fid_5fstreams_3063',['SECTION_ID_STREAMS',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87ab6fd8dfcd18f1fa7b6b67cb57753b293',1,'fftools_ffprobe.c']]], + ['section_5fid_5fsubtitle_3064',['SECTION_ID_SUBTITLE',['../d8/d78/fftools__ffprobe_8c.html#a0799fb47151cd0ebf920ced93416cd87aa5648764c12e65a0f65d4d78ea157261',1,'fftools_ffprobe.c']]], + ['sessionstatecompleted_3065',['SessionStateCompleted',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fae395077a2a757c691699536f02cc264f',1,'ffmpegkit']]], + ['sessionstatecreated_3066',['SessionStateCreated',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8faa2b60da11090d170819db698df90f4a2',1,'ffmpegkit']]], + ['sessionstatefailed_3067',['SessionStateFailed',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fa4e355211ff575fe9e53b5cac1989473e',1,'ffmpegkit']]], + ['sessionstaterunning_3068',['SessionStateRunning',['../d2/d25/namespaceffmpegkit.html#a6d76b34ad27245e8ba161c8f30ab5c8fa384cde9cd29cfe4e94fb4b8f5d3719c1',1,'ffmpegkit']]], + ['show_5fdefault_3069',['SHOW_DEFAULT',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeaeeb1148063806a7a85366e9b1921b984',1,'fftools_cmdutils.c']]], + ['show_5fdemuxers_3070',['SHOW_DEMUXERS',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeaf3c0cb36f3000f24e0a1bfa6babd475b',1,'fftools_cmdutils.c']]], + ['show_5fmuxers_3071',['SHOW_MUXERS',['../d7/dcc/fftools__cmdutils_8c.html#a486fe3230e74869bc1d99540fc755adeafef841d0a183fe1a1af343725defda34',1,'fftools_cmdutils.c']]], + ['signalint_3072',['SignalInt',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a5b4b088da6cf903093a8d7789cee04f9',1,'ffmpegkit']]], + ['signalpipe_3073',['SignalPipe',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2ae1349a4dbeee5769723ceb0b6ce0efee',1,'ffmpegkit']]], + ['signalquit_3074',['SignalQuit',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a45dced6df666a601d492885399b63a82',1,'ffmpegkit']]], + ['signalterm_3075',['SignalTerm',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a7a9761ba37058f9235355143ef34deaa',1,'ffmpegkit']]], + ['signalxcpu_3076',['SignalXcpu',['../d2/d25/namespaceffmpegkit.html#ac57fab4209bd25d62c86a99bb459bda2a253eff2aef02dedda7967818ea2f0639',1,'ffmpegkit']]], + ['statisticstype_3077',['StatisticsType',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2c334c87d8c60bc99ecdf9d297943318ae6b6c0f8a115b1b9552df5bd5ad0936a',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/enumvalues_6.html b/docs/linux/html/search/enumvalues_6.html new file mode 100644 index 0000000..2476491 --- /dev/null +++ b/docs/linux/html/search/enumvalues_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/enumvalues_6.js b/docs/linux/html/search/enumvalues_6.js new file mode 100644 index 0000000..73bda14 --- /dev/null +++ b/docs/linux/html/search/enumvalues_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['writer_5fstring_5fvalidation_5ffail_3078',['WRITER_STRING_VALIDATION_FAIL',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6baa41eec7a3281f6cfff5b826841e8bd9b',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5fignore_3079',['WRITER_STRING_VALIDATION_IGNORE',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba8cd20ec2d52073e7dc34feb95ec745c0',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5fnb_3080',['WRITER_STRING_VALIDATION_NB',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba0fcb753d2c12e44cb706781b992f922d',1,'fftools_ffprobe.c']]], + ['writer_5fstring_5fvalidation_5freplace_3081',['WRITER_STRING_VALIDATION_REPLACE',['../d8/d78/fftools__ffprobe_8c.html#a6fe38dd14689e883f03c1267dba7cc6ba22f213b86465149d32d24570e5ed4681',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/files_0.html b/docs/linux/html/search/files_0.html new file mode 100644 index 0000000..737608e --- /dev/null +++ b/docs/linux/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_0.js b/docs/linux/html/search/files_0.js new file mode 100644 index 0000000..acbf734 --- /dev/null +++ b/docs/linux/html/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['abstractsession_2ecpp_1615',['AbstractSession.cpp',['../da/dfd/_abstract_session_8cpp.html',1,'']]], + ['abstractsession_2eh_1616',['AbstractSession.h',['../d9/d76/_abstract_session_8h.html',1,'']]], + ['archdetect_2ecpp_1617',['ArchDetect.cpp',['../d7/dc8/_arch_detect_8cpp.html',1,'']]], + ['archdetect_2eh_1618',['ArchDetect.h',['../d6/d8f/_arch_detect_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_1.html b/docs/linux/html/search/files_1.html new file mode 100644 index 0000000..f27a62d --- /dev/null +++ b/docs/linux/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_1.js b/docs/linux/html/search/files_1.js new file mode 100644 index 0000000..0493694 --- /dev/null +++ b/docs/linux/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['chapter_2ecpp_1619',['Chapter.cpp',['../d1/d8a/_chapter_8cpp.html',1,'']]], + ['chapter_2eh_1620',['Chapter.h',['../dc/d8d/_chapter_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_2.html b/docs/linux/html/search/files_2.html new file mode 100644 index 0000000..a45066e --- /dev/null +++ b/docs/linux/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_2.js b/docs/linux/html/search/files_2.js new file mode 100644 index 0000000..1c2196a --- /dev/null +++ b/docs/linux/html/search/files_2.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['ffmpegkit_2ecpp_1621',['FFmpegKit.cpp',['../d8/d78/_f_fmpeg_kit_8cpp.html',1,'']]], + ['ffmpegkit_2eh_1622',['FFmpegKit.h',['../df/d99/_f_fmpeg_kit_8h.html',1,'']]], + ['ffmpegkit_5fexception_2ecpp_1623',['ffmpegkit_exception.cpp',['../df/d40/ffmpegkit__exception_8cpp.html',1,'']]], + ['ffmpegkit_5fexception_2eh_1624',['ffmpegkit_exception.h',['../d3/dad/ffmpegkit__exception_8h.html',1,'']]], + ['ffmpegkitconfig_2ecpp_1625',['FFmpegKitConfig.cpp',['../d8/d45/_f_fmpeg_kit_config_8cpp.html',1,'']]], + ['ffmpegkitconfig_2eh_1626',['FFmpegKitConfig.h',['../df/d48/_f_fmpeg_kit_config_8h.html',1,'']]], + ['ffmpegsession_2ecpp_1627',['FFmpegSession.cpp',['../df/d2b/_f_fmpeg_session_8cpp.html',1,'']]], + ['ffmpegsession_2eh_1628',['FFmpegSession.h',['../d2/def/_f_fmpeg_session_8h.html',1,'']]], + ['ffmpegsessioncompletecallback_2eh_1629',['FFmpegSessionCompleteCallback.h',['../d6/d47/_f_fmpeg_session_complete_callback_8h.html',1,'']]], + ['ffprobekit_2ecpp_1630',['FFprobeKit.cpp',['../d0/dc3/_f_fprobe_kit_8cpp.html',1,'']]], + ['ffprobekit_2eh_1631',['FFprobeKit.h',['../d4/dad/_f_fprobe_kit_8h.html',1,'']]], + ['ffprobesession_2ecpp_1632',['FFprobeSession.cpp',['../d9/d8b/_f_fprobe_session_8cpp.html',1,'']]], + ['ffprobesession_2eh_1633',['FFprobeSession.h',['../dc/da0/_f_fprobe_session_8h.html',1,'']]], + ['ffprobesessioncompletecallback_2eh_1634',['FFprobeSessionCompleteCallback.h',['../d5/d14/_f_fprobe_session_complete_callback_8h.html',1,'']]], + ['fftools_5fcmdutils_2ec_1635',['fftools_cmdutils.c',['../d7/dcc/fftools__cmdutils_8c.html',1,'']]], + ['fftools_5fcmdutils_2eh_1636',['fftools_cmdutils.h',['../d8/d4e/fftools__cmdutils_8h.html',1,'']]], + ['fftools_5fffmpeg_2ec_1637',['fftools_ffmpeg.c',['../d7/d48/fftools__ffmpeg_8c.html',1,'']]], + ['fftools_5fffmpeg_2eh_1638',['fftools_ffmpeg.h',['../d7/db3/fftools__ffmpeg_8h.html',1,'']]], + ['fftools_5fffmpeg_5ffilter_2ec_1639',['fftools_ffmpeg_filter.c',['../d2/d36/fftools__ffmpeg__filter_8c.html',1,'']]], + ['fftools_5fffmpeg_5fhw_2ec_1640',['fftools_ffmpeg_hw.c',['../d1/dba/fftools__ffmpeg__hw_8c.html',1,'']]], + ['fftools_5fffmpeg_5fopt_2ec_1641',['fftools_ffmpeg_opt.c',['../da/d66/fftools__ffmpeg__opt_8c.html',1,'']]], + ['fftools_5fffprobe_2ec_1642',['fftools_ffprobe.c',['../d8/d78/fftools__ffprobe_8c.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_3.html b/docs/linux/html/search/files_3.html new file mode 100644 index 0000000..1076bc5 --- /dev/null +++ b/docs/linux/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_3.js b/docs/linux/html/search/files_3.js new file mode 100644 index 0000000..86cd1b3 --- /dev/null +++ b/docs/linux/html/search/files_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['level_2eh_1643',['Level.h',['../d2/d4b/_level_8h.html',1,'']]], + ['log_2ecpp_1644',['Log.cpp',['../d0/da7/_log_8cpp.html',1,'']]], + ['log_2eh_1645',['Log.h',['../da/df4/_log_8h.html',1,'']]], + ['logcallback_2eh_1646',['LogCallback.h',['../d4/daf/_log_callback_8h.html',1,'']]], + ['logredirectionstrategy_2eh_1647',['LogRedirectionStrategy.h',['../d6/d42/_log_redirection_strategy_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_4.html b/docs/linux/html/search/files_4.html new file mode 100644 index 0000000..e5cd7f4 --- /dev/null +++ b/docs/linux/html/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_4.js b/docs/linux/html/search/files_4.js new file mode 100644 index 0000000..6b2cdf2 --- /dev/null +++ b/docs/linux/html/search/files_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['mediainformation_2ecpp_1648',['MediaInformation.cpp',['../d1/dc9/_media_information_8cpp.html',1,'']]], + ['mediainformation_2eh_1649',['MediaInformation.h',['../d8/d78/_media_information_8h.html',1,'']]], + ['mediainformationjsonparser_2ecpp_1650',['MediaInformationJsonParser.cpp',['../d1/dbf/_media_information_json_parser_8cpp.html',1,'']]], + ['mediainformationjsonparser_2eh_1651',['MediaInformationJsonParser.h',['../d7/d3a/_media_information_json_parser_8h.html',1,'']]], + ['mediainformationsession_2ecpp_1652',['MediaInformationSession.cpp',['../d3/d5d/_media_information_session_8cpp.html',1,'']]], + ['mediainformationsession_2eh_1653',['MediaInformationSession.h',['../dd/d69/_media_information_session_8h.html',1,'']]], + ['mediainformationsessioncompletecallback_2eh_1654',['MediaInformationSessionCompleteCallback.h',['../df/d57/_media_information_session_complete_callback_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_5.html b/docs/linux/html/search/files_5.html new file mode 100644 index 0000000..2cc480f --- /dev/null +++ b/docs/linux/html/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_5.js b/docs/linux/html/search/files_5.js new file mode 100644 index 0000000..bc2192b --- /dev/null +++ b/docs/linux/html/search/files_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['packages_2ecpp_1655',['Packages.cpp',['../d6/df7/_packages_8cpp.html',1,'']]], + ['packages_2eh_1656',['Packages.h',['../d5/d5f/_packages_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_6.html b/docs/linux/html/search/files_6.html new file mode 100644 index 0000000..6510245 --- /dev/null +++ b/docs/linux/html/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_6.js b/docs/linux/html/search/files_6.js new file mode 100644 index 0000000..1feb32d --- /dev/null +++ b/docs/linux/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['returncode_2ecpp_1657',['ReturnCode.cpp',['../d9/d21/_return_code_8cpp.html',1,'']]], + ['returncode_2eh_1658',['ReturnCode.h',['../d0/d19/_return_code_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/files_7.html b/docs/linux/html/search/files_7.html new file mode 100644 index 0000000..819f7b8 --- /dev/null +++ b/docs/linux/html/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/files_7.js b/docs/linux/html/search/files_7.js new file mode 100644 index 0000000..d635aed --- /dev/null +++ b/docs/linux/html/search/files_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['session_2eh_1659',['Session.h',['../d0/d5a/_session_8h.html',1,'']]], + ['sessionstate_2eh_1660',['SessionState.h',['../df/d13/_session_state_8h.html',1,'']]], + ['signal_2eh_1661',['Signal.h',['../d5/dce/_signal_8h.html',1,'']]], + ['statistics_2ecpp_1662',['Statistics.cpp',['../d3/d3f/_statistics_8cpp.html',1,'']]], + ['statistics_2eh_1663',['Statistics.h',['../da/df2/_statistics_8h.html',1,'']]], + ['statisticscallback_2eh_1664',['StatisticsCallback.h',['../d6/df1/_statistics_callback_8h.html',1,'']]], + ['streaminformation_2ecpp_1665',['StreamInformation.cpp',['../d7/d2d/_stream_information_8cpp.html',1,'']]], + ['streaminformation_2eh_1666',['StreamInformation.h',['../d4/df4/_stream_information_8h.html',1,'']]] +]; diff --git a/docs/linux/html/search/functions_0.html b/docs/linux/html/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/docs/linux/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_0.js b/docs/linux/html/search/functions_0.js new file mode 100644 index 0000000..78afef4 --- /dev/null +++ b/docs/linux/html/search/functions_0.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['abort_5fcodec_5fexperimental_1667',['abort_codec_experimental',['../d7/d48/fftools__ffmpeg_8c.html#ab6f0439f2e64203b784e3f6250f26866',1,'fftools_ffmpeg.c']]], + ['abstractsession_1668',['AbstractSession',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a848951dd9229d8271b350fd6d474d970',1,'ffmpegkit::AbstractSession']]], + ['add_5finput_5fstreams_1669',['add_input_streams',['../d7/db3/fftools__ffmpeg_8h.html#acb8764e6b707c0419180699d972e9b70',1,'add_input_streams(OptionsContext *o, AVFormatContext *ic): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#acb8764e6b707c0419180699d972e9b70',1,'add_input_streams(OptionsContext *o, AVFormatContext *ic): fftools_ffmpeg_opt.c']]], + ['add_5fopt_1670',['add_opt',['../d7/dcc/fftools__cmdutils_8c.html#a69d117c59ea1d4359816e413ea3717ad',1,'fftools_cmdutils.c']]], + ['addlog_1671',['addLog',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2a528caf04c52d6d49b9c04aa11d4cac',1,'ffmpegkit::AbstractSession::addLog()'],['../d5/d0e/classffmpegkit_1_1_session.html#a45b8d00f933834b0315672b82e44d14c',1,'ffmpegkit::Session::addLog()']]], + ['addsessiontosessionhistory_1672',['addSessionToSessionHistory',['../da/dfd/_abstract_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../df/d2b/_f_fmpeg_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d9/d8b/_f_fprobe_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp'],['../d3/d5d/_media_information_session_8cpp.html#a7b2de0082e979a6e74f8c30b6f819f99',1,'addSessionToSessionHistory(const std::shared_ptr< ffmpegkit::Session > session): FFmpegKitConfig.cpp']]], + ['addstatistics_1673',['addStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a27184c9772a338d040ad01fd9589f871',1,'ffmpegkit::FFmpegSession']]], + ['adjust_5fframe_5fpts_5fto_5fencoder_5ftb_1674',['adjust_frame_pts_to_encoder_tb',['../d7/d48/fftools__ffmpeg_8c.html#abc5e61273039380ac14ed7b0a3cce725',1,'fftools_ffmpeg.c']]], + ['argumentstostring_1675',['argumentsToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a3ce2ecd213d80200a1e0bb98c5048a01',1,'ffmpegkit::FFmpegKitConfig']]], + ['assert_5favoptions_1676',['assert_avoptions',['../d7/d48/fftools__ffmpeg_8c.html#aeceadb162c07ff048a54d0d70cc851fb',1,'assert_avoptions(AVDictionary *m): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#aeceadb162c07ff048a54d0d70cc851fb',1,'assert_avoptions(AVDictionary *m): fftools_ffmpeg.c']]], + ['assert_5ffile_5foverwrite_1677',['assert_file_overwrite',['../d7/db3/fftools__ffmpeg_8h.html#a9bc9a2fdcee987f9900054f9d7dc28e9',1,'assert_file_overwrite(const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9bc9a2fdcee987f9900054f9d7dc28e9',1,'assert_file_overwrite(const char *filename): fftools_ffmpeg_opt.c']]], + ['asyncffmpegexecute_1678',['asyncFFmpegExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa7449c207e30df8fe67907f881cceea3',1,'ffmpegkit::FFmpegKitConfig']]], + ['asyncffprobeexecute_1679',['asyncFFprobeExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a5dd0c23d3b6db9ffd59448e871995202',1,'ffmpegkit::FFmpegKitConfig']]], + ['asyncgetmediainformationexecute_1680',['asyncGetMediaInformationExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a76858252a1c6afbd4a3c6e27c59366d7',1,'ffmpegkit::FFmpegKitConfig']]], + ['avutil_5flog_5fformat_5fline_1681',['avutil_log_format_line',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a5a741178aa9707f94a3ed21dc9199563',1,'FFmpegKitConfig.cpp']]], + ['avutil_5flog_5fget_5flevel_5fstr_1682',['avutil_log_get_level_str',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#afcbebcb2971b24e9601eb99d5411cb1b',1,'FFmpegKitConfig.cpp']]], + ['avutil_5flog_5fsanitize_1683',['avutil_log_sanitize',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a3e0b59121c7142e4d7d1b595754aae47',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/functions_1.html b/docs/linux/html/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/docs/linux/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_1.js b/docs/linux/html/search/functions_1.js new file mode 100644 index 0000000..784fa3a --- /dev/null +++ b/docs/linux/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bprint_5fbytes_1684',['bprint_bytes',['../d8/d78/fftools__ffprobe_8c.html#a16b83cfdcd3e76932542ea596ab500c2',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_10.html b/docs/linux/html/search/functions_10.html new file mode 100644 index 0000000..09422e1 --- /dev/null +++ b/docs/linux/html/search/functions_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_10.js b/docs/linux/html/search/functions_10.js new file mode 100644 index 0000000..d0d3a0a --- /dev/null +++ b/docs/linux/html/search/functions_10.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['read_5finterval_5fpackets_2116',['read_interval_packets',['../d8/d78/fftools__ffprobe_8c.html#a2c22344a1833d5cabcfb1d378d5c668c',1,'fftools_ffprobe.c']]], + ['read_5fkey_2117',['read_key',['../d7/d48/fftools__ffmpeg_8c.html#a888998656da528d50f125b39dcd1067a',1,'fftools_ffmpeg.c']]], + ['read_5fpackets_2118',['read_packets',['../d8/d78/fftools__ffprobe_8c.html#a240b015b5cfbcc4f34f140701096d992',1,'fftools_ffprobe.c']]], + ['read_5fyesno_2119',['read_yesno',['../d7/dcc/fftools__cmdutils_8c.html#a40394fd5966088e759ce995186773700',1,'read_yesno(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700',1,'read_yesno(void): fftools_cmdutils.c']]], + ['reap_5ffilters_2120',['reap_filters',['../d7/d48/fftools__ffmpeg_8c.html#a2fb313e7b4b1ef89bd7e8fff6f85d71e',1,'fftools_ffmpeg.c']]], + ['register_5fexit_2121',['register_exit',['../d7/dcc/fftools__cmdutils_8c.html#aa64dcad44f54da335b337154d9e9950f',1,'register_exit(void(*cb)(int ret)): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f',1,'register_exit(void(*cb)(int ret)): fftools_cmdutils.c']]], + ['registernewffmpegpipe_2122',['registerNewFFmpegPipe',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a49bc4b4d70e68a2d358695151909dbda',1,'ffmpegkit::FFmpegKitConfig']]], + ['registersessionid_2123',['registerSessionId',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4a34c1f3a7880e880e6c1faef0d90889',1,'FFmpegKitConfig.cpp']]], + ['remove_5favoptions_2124',['remove_avoptions',['../d7/d48/fftools__ffmpeg_8c.html#aa34a84957adf117f712efcb6cbfd834f',1,'remove_avoptions(AVDictionary **a, AVDictionary *b): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#aa34a84957adf117f712efcb6cbfd834f',1,'remove_avoptions(AVDictionary **a, AVDictionary *b): fftools_ffmpeg.c']]], + ['removesession_2125',['removeSession',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ae22999bc0087d61ba7d0bb174bd3804e',1,'FFmpegKitConfig.cpp']]], + ['report_5fnew_5fstream_2126',['report_new_stream',['../d7/d48/fftools__ffmpeg_8c.html#ab19f077af44d4caa16ecad4d9532715a',1,'fftools_ffmpeg.c']]], + ['reset_5feagain_2127',['reset_eagain',['../d7/d48/fftools__ffmpeg_8c.html#a5e7569f8c8012ff719b112431b1df091',1,'fftools_ffmpeg.c']]], + ['reset_5foptions_2128',['reset_options',['../d7/db3/fftools__ffmpeg_8h.html#a1801147c99b95a1ae99138795e7cec52',1,'fftools_ffmpeg.h']]], + ['resetmessagesintransmit_2129',['resetMessagesInTransmit',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7e5b2db08ff912047fbd1a132db68e2b',1,'FFmpegKitConfig.cpp']]], + ['returncode_2130',['ReturnCode',['../d4/dcf/classffmpegkit_1_1_return_code.html#ae3e6fc55d40a5837e4962105ed3ad1ab',1,'ffmpegkit::ReturnCode']]] +]; diff --git a/docs/linux/html/search/functions_11.html b/docs/linux/html/search/functions_11.html new file mode 100644 index 0000000..1cde7b4 --- /dev/null +++ b/docs/linux/html/search/functions_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_11.js b/docs/linux/html/search/functions_11.js new file mode 100644 index 0000000..f52b16b --- /dev/null +++ b/docs/linux/html/search/functions_11.js @@ -0,0 +1,77 @@ +var searchData= +[ + ['seek_5fto_5fstart_2131',['seek_to_start',['../d7/d48/fftools__ffmpeg_8c.html#a7a6c1b83340f00304d8ed06364edfa60',1,'fftools_ffmpeg.c']]], + ['send_5ffilter_5feof_2132',['send_filter_eof',['../d7/d48/fftools__ffmpeg_8c.html#a9b8d7a73907fc2dd36f4bd0cce4f2f0d',1,'fftools_ffmpeg.c']]], + ['send_5fframe_5fto_5ffilters_2133',['send_frame_to_filters',['../d7/d48/fftools__ffmpeg_8c.html#a4981f23e6d794110daa5408fc9a9f0fb',1,'fftools_ffmpeg.c']]], + ['sessionidgenerator_2134',['sessionIdGenerator',['../da/dfd/_abstract_session_8cpp.html#a24a0fc32c617a4268ef9dcd78c580fd8',1,'AbstractSession.cpp']]], + ['sessionstatetostring_2135',['sessionStateToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ac5f8efcf9ed49fa0ba29819c3ea3489e',1,'ffmpegkit::FFmpegKitConfig']]], + ['set_5fencoder_5fid_2136',['set_encoder_id',['../d7/d48/fftools__ffmpeg_8c.html#a861b24f5520382037a477a313641b1cf',1,'fftools_ffmpeg.c']]], + ['set_5freport_5fcallback_2137',['set_report_callback',['../d7/d48/fftools__ffmpeg_8c.html#a4dd17285e4049bfb915b75d39ff9971e',1,'set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double)): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4dd17285e4049bfb915b75d39ff9971e',1,'set_report_callback(void(*callback)(int, float, float, int64_t, int, double, double)): fftools_ffmpeg.c']]], + ['set_5ftty_5fecho_2138',['set_tty_echo',['../d7/d48/fftools__ffmpeg_8c.html#a12f098a569b8925e9a2bc92aba7bae96',1,'fftools_ffmpeg.c']]], + ['setenvironmentvariable_2139',['setEnvironmentVariable',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a7cb6aee82f88285debb3e4d9e84e27a5',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontconfigconfigurationpath_2140',['setFontconfigConfigurationPath',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ad720fc314fc5e1f76a44c1fa84b32502',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontdirectory_2141',['setFontDirectory',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa689f44d8d82b47a84bd5ef255123524',1,'ffmpegkit::FFmpegKitConfig']]], + ['setfontdirectorylist_2142',['setFontDirectoryList',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#adae003c1060e0adbe24f8f50859e9bd9',1,'ffmpegkit::FFmpegKitConfig']]], + ['setloglevel_2143',['setLogLevel',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa5b9e278c61dfa54d14fd34b35782cd8',1,'ffmpegkit::FFmpegKitConfig']]], + ['setlogredirectionstrategy_2144',['setLogRedirectionStrategy',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a79c409a7341213cbd3e19c51da962748',1,'ffmpegkit::FFmpegKitConfig']]], + ['setmediainformation_2145',['setMediaInformation',['../df/db7/classffmpegkit_1_1_media_information_session.html#aa44504230bc7f3b8983a238a64b49775',1,'ffmpegkit::MediaInformationSession']]], + ['setsessionhistorysize_2146',['setSessionHistorySize',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a9938ad34e545fb78ba5ae502c05e05b2',1,'ffmpegkit::FFmpegKitConfig']]], + ['setup_5ffind_5fstream_5finfo_5fopts_2147',['setup_find_stream_info_opts',['../d7/dcc/fftools__cmdutils_8c.html#a6246f47f8e3ef9a3e99e5d1457c7d197',1,'setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6246f47f8e3ef9a3e99e5d1457c7d197',1,'setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts): fftools_cmdutils.c']]], + ['show_5fbanner_2148',['show_banner',['../d7/dcc/fftools__cmdutils_8c.html#a976c7dc9afeb4b0f6ec009a7a084e701',1,'show_banner(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701',1,'show_banner(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c']]], + ['show_5fbsfs_2149',['show_bsfs',['../d7/dcc/fftools__cmdutils_8c.html#a53fb409434bc59eeabbfc52f67a1c641',1,'show_bsfs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a53fb409434bc59eeabbfc52f67a1c641',1,'show_bsfs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fbuildconf_2150',['show_buildconf',['../d7/dcc/fftools__cmdutils_8c.html#a9f7a57bae796faca3c46ba0894f0b7bf',1,'show_buildconf(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf',1,'show_buildconf(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fchapters_2151',['show_chapters',['../d8/d78/fftools__ffprobe_8c.html#af6912c431c5c74bce83c3f2ddb4ba407',1,'fftools_ffprobe.c']]], + ['show_5fcodecs_2152',['show_codecs',['../d7/dcc/fftools__cmdutils_8c.html#a9d32ed47a0ec2bdf5a11b9ec477af632',1,'show_codecs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632',1,'show_codecs(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fcolors_2153',['show_colors',['../d7/dcc/fftools__cmdutils_8c.html#aed7606e2d2a9218a50ecbbc75a76aab7',1,'show_colors(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7',1,'show_colors(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fdecoders_2154',['show_decoders',['../d7/dcc/fftools__cmdutils_8c.html#a051c87d97a1dfd644a97f965dfaa18dc',1,'show_decoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a051c87d97a1dfd644a97f965dfaa18dc',1,'show_decoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fdemuxers_2155',['show_demuxers',['../d7/dcc/fftools__cmdutils_8c.html#af99b4b78c2355c81ff66ae146b92bc7b',1,'show_demuxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#af99b4b78c2355c81ff66ae146b92bc7b',1,'show_demuxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fdevices_2156',['show_devices',['../d7/dcc/fftools__cmdutils_8c.html#aaf26a4937c16d8b7cb22a6542ebb46a5',1,'show_devices(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5',1,'show_devices(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fencoders_2157',['show_encoders',['../d7/dcc/fftools__cmdutils_8c.html#a7271f609adb83bed31f8ef0eb8ee2b79',1,'show_encoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79',1,'show_encoders(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5ferror_2158',['show_error',['../d8/d78/fftools__ffprobe_8c.html#a58566dc96e5f78ee644a357be290721c',1,'fftools_ffprobe.c']]], + ['show_5ffilters_2159',['show_filters',['../d7/dcc/fftools__cmdutils_8c.html#a2cad88ee81ff905e2309375818c89020',1,'show_filters(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a2cad88ee81ff905e2309375818c89020',1,'show_filters(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fformat_2160',['show_format',['../d8/d78/fftools__ffprobe_8c.html#a9008ead641eac60c907a92bd4777c004',1,'fftools_ffprobe.c']]], + ['show_5fformats_2161',['show_formats',['../d7/dcc/fftools__cmdutils_8c.html#ac64f66a36c4ca887741fe28475a99b01',1,'show_formats(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ac64f66a36c4ca887741fe28475a99b01',1,'show_formats(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fformats_5fdevices_2162',['show_formats_devices',['../d7/dcc/fftools__cmdutils_8c.html#aaa2a298d176efd261eff7ab69544e3c1',1,'fftools_cmdutils.c']]], + ['show_5fframe_2163',['show_frame',['../d8/d78/fftools__ffprobe_8c.html#a3419ed5491473c016f58fb364c86ee57',1,'fftools_ffprobe.c']]], + ['show_5fhelp_2164',['show_help',['../d7/dcc/fftools__cmdutils_8c.html#a0ff9db0d178a0397441c0269cea9e48a',1,'show_help(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0ff9db0d178a0397441c0269cea9e48a',1,'show_help(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fhelp_5fbsf_2165',['show_help_bsf',['../d7/dcc/fftools__cmdutils_8c.html#a1b212a540413b4bc35b1890d820c09bd',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fchildren_2166',['show_help_children',['../d7/dcc/fftools__cmdutils_8c.html#afcfb53678ed4b7414cab4aa77ab6b9b7',1,'show_help_children(const AVClass *avClass, int flags): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#afcfb53678ed4b7414cab4aa77ab6b9b7',1,'show_help_children(const AVClass *avClass, int flags): fftools_cmdutils.c']]], + ['show_5fhelp_5fcodec_2167',['show_help_codec',['../d7/dcc/fftools__cmdutils_8c.html#a293203f7329cb121372ad2b25bf4a469',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fdefault_5fffmpeg_2168',['show_help_default_ffmpeg',['../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f',1,'show_help_default_ffmpeg(const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aefe49155ac108fa47eee131a07fd856f',1,'show_help_default_ffmpeg(const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['show_5fhelp_5fdefault_5fffprobe_2169',['show_help_default_ffprobe',['../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e',1,'show_help_default_ffprobe(const char *opt, const char *arg): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#acbabca98e694fea5c1b539b475e8cc6e',1,'show_help_default_ffprobe(const char *opt, const char *arg): fftools_ffprobe.c']]], + ['show_5fhelp_5fdemuxer_2170',['show_help_demuxer',['../d7/dcc/fftools__cmdutils_8c.html#a2dc49c905db1728061191263171c85a6',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5fmuxer_2171',['show_help_muxer',['../d7/dcc/fftools__cmdutils_8c.html#a97ca920c0d7e3e23447ac571d9387730',1,'fftools_cmdutils.c']]], + ['show_5fhelp_5foptions_2172',['show_help_options',['../d7/dcc/fftools__cmdutils_8c.html#a13fba56a5674556e879f5733f9b1dd55',1,'show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55',1,'show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags): fftools_cmdutils.c']]], + ['show_5fhelp_5fprotocol_2173',['show_help_protocol',['../d7/dcc/fftools__cmdutils_8c.html#a833f8e0860472a33496c5343a8b39638',1,'fftools_cmdutils.c']]], + ['show_5fhwaccels_2174',['show_hwaccels',['../d7/d48/fftools__ffmpeg_8c.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab8657573c1da211a171168837101af5c',1,'show_hwaccels(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['show_5flayouts_2175',['show_layouts',['../d7/dcc/fftools__cmdutils_8c.html#a6fea7aab2873df1439a71f12e0f1afd8',1,'show_layouts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6fea7aab2873df1439a71f12e0f1afd8',1,'show_layouts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5flicense_2176',['show_license',['../d7/dcc/fftools__cmdutils_8c.html#a9ac5f2397cd42cd32e4b3cb199739b35',1,'show_license(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35',1,'show_license(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5flog_2177',['show_log',['../d8/d78/fftools__ffprobe_8c.html#a9cb5a5dfc17ddb950501a01d1a9876d1',1,'fftools_ffprobe.c']]], + ['show_5fmuxers_2178',['show_muxers',['../d7/dcc/fftools__cmdutils_8c.html#a4c35b5b42d01e850824bc0af1016e71f',1,'show_muxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4c35b5b42d01e850824bc0af1016e71f',1,'show_muxers(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fpacket_2179',['show_packet',['../d8/d78/fftools__ffprobe_8c.html#af6af4a54afc670e0607a0da059fe8daa',1,'fftools_ffprobe.c']]], + ['show_5fpix_5ffmts_2180',['show_pix_fmts',['../d7/dcc/fftools__cmdutils_8c.html#af34c982b84b7c76d45edc5a7715a4fed',1,'show_pix_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#af34c982b84b7c76d45edc5a7715a4fed',1,'show_pix_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fprogram_2181',['show_program',['../d8/d78/fftools__ffprobe_8c.html#a25821f092045a6f2dfc700497763ba89',1,'fftools_ffprobe.c']]], + ['show_5fprograms_2182',['show_programs',['../d8/d78/fftools__ffprobe_8c.html#ada0a8b59db2597b60004dc59898b7ae1',1,'fftools_ffprobe.c']]], + ['show_5fprotocols_2183',['show_protocols',['../d7/dcc/fftools__cmdutils_8c.html#addb6306dc020aa290075bed9b1f42a3a',1,'show_protocols(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#addb6306dc020aa290075bed9b1f42a3a',1,'show_protocols(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fsample_5ffmts_2184',['show_sample_fmts',['../d7/dcc/fftools__cmdutils_8c.html#a3359dc295afcfd0ee6f592dd37f03080',1,'show_sample_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a3359dc295afcfd0ee6f592dd37f03080',1,'show_sample_fmts(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['show_5fstream_2185',['show_stream',['../d8/d78/fftools__ffprobe_8c.html#ab7837239b3246d61dba00525fb4eb764',1,'fftools_ffprobe.c']]], + ['show_5fstreams_2186',['show_streams',['../d8/d78/fftools__ffprobe_8c.html#a5680e712ead5f447314b5e625b048beb',1,'fftools_ffprobe.c']]], + ['show_5fsubtitle_2187',['show_subtitle',['../d8/d78/fftools__ffprobe_8c.html#a20cde645b3a859bb60164167d8b2a1c8',1,'fftools_ffprobe.c']]], + ['show_5ftags_2188',['show_tags',['../d8/d78/fftools__ffprobe_8c.html#ab426fcc8ce712c547967f5b77ee73fc7',1,'fftools_ffprobe.c']]], + ['show_5fusage_2189',['show_usage',['../d7/db3/fftools__ffmpeg_8h.html#a5ca4ba3ead2e600e7a6bada7396a5e4d',1,'show_usage(void): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5ca4ba3ead2e600e7a6bada7396a5e4d',1,'show_usage(void): fftools_ffmpeg_opt.c'],['../d8/d78/fftools__ffprobe_8c.html#a017a6f5b075277289cca0b4158a0b7a6',1,'show_usage(void): fftools_ffprobe.c']]], + ['show_5fversion_2190',['show_version',['../d7/dcc/fftools__cmdutils_8c.html#a79c0ae205603f7f83f15171ba3413f26',1,'show_version(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a79c0ae205603f7f83f15171ba3413f26',1,'show_version(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['sigterm_5fhandler_2191',['sigterm_handler',['../d7/d48/fftools__ffmpeg_8c.html#af80faacdb2157777c247deee29765d79',1,'fftools_ffmpeg.c']]], + ['split_5fcommandline_2192',['split_commandline',['../d7/dcc/fftools__cmdutils_8c.html#a8dbe23ab7c8099a82806ae9beb9d4306',1,'split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306',1,'split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups): fftools_cmdutils.c']]], + ['startrunning_2193',['startRunning',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a8f6474fffd31aab725847249432bf659',1,'ffmpegkit::AbstractSession::startRunning()'],['../d5/d0e/classffmpegkit_1_1_session.html#aae1197238a848be3de55c3d38a070ebd',1,'ffmpegkit::Session::startRunning()']]], + ['statistics_2194',['Statistics',['../d0/de7/classffmpegkit_1_1_statistics.html#ab653f8e5f02fb4c175d7cb61ebdeeb25',1,'ffmpegkit::Statistics']]], + ['statisticscallbackdataadd_2195',['statisticsCallbackDataAdd',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1a397886b2afb9c740d5d7321eeee19d',1,'FFmpegKitConfig.cpp']]], + ['streaminformation_2196',['StreamInformation',['../d7/d9e/classffmpegkit_1_1_stream_information.html#ae8a0202dcf4e9347116a0755d9654bbc',1,'ffmpegkit::StreamInformation']]], + ['strip_5fspecifiers_2197',['strip_specifiers',['../d7/db3/fftools__ffmpeg_8h.html#ab1f22665dffd8f63fb4f4bce3a1b5b6c',1,'strip_specifiers(AVDictionary *dict): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab1f22665dffd8f63fb4f4bce3a1b5b6c',1,'strip_specifiers(AVDictionary *dict): fftools_ffmpeg_opt.c']]], + ['sub2video_5fcopy_5frect_2198',['sub2video_copy_rect',['../d7/d48/fftools__ffmpeg_8c.html#aa2e51f604857d33adbb56b536f4d7718',1,'fftools_ffmpeg.c']]], + ['sub2video_5fflush_2199',['sub2video_flush',['../d7/d48/fftools__ffmpeg_8c.html#aa1b7dcf7df1f398b1e33d121695b79c7',1,'fftools_ffmpeg.c']]], + ['sub2video_5fget_5fblank_5fframe_2200',['sub2video_get_blank_frame',['../d7/d48/fftools__ffmpeg_8c.html#adf36095ece065987e766e291e863f0d6',1,'fftools_ffmpeg.c']]], + ['sub2video_5fheartbeat_2201',['sub2video_heartbeat',['../d7/d48/fftools__ffmpeg_8c.html#a738eb950f81407f6fd85fee223606fd4',1,'fftools_ffmpeg.c']]], + ['sub2video_5fprepare_2202',['sub2video_prepare',['../d2/d36/fftools__ffmpeg__filter_8c.html#a175b3d698e81a2781fddebdbf7209d8f',1,'fftools_ffmpeg_filter.c']]], + ['sub2video_5fpush_5fref_2203',['sub2video_push_ref',['../d7/d48/fftools__ffmpeg_8c.html#a2c1506f84f74e9af9fabdf8cc1f86b89',1,'fftools_ffmpeg.c']]], + ['sub2video_5fupdate_2204',['sub2video_update',['../d7/d48/fftools__ffmpeg_8c.html#a8d9e8224d0a2f354635fcaacce63acd4',1,'sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8d9e8224d0a2f354635fcaacce63acd4',1,'sub2video_update(InputStream *ist, int64_t heartbeat_pts, AVSubtitle *sub): fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_12.html b/docs/linux/html/search/functions_12.html new file mode 100644 index 0000000..48e5915 --- /dev/null +++ b/docs/linux/html/search/functions_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_12.js b/docs/linux/html/search/functions_12.js new file mode 100644 index 0000000..da907e5 --- /dev/null +++ b/docs/linux/html/search/functions_12.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['term_5fexit_2205',['term_exit',['../d7/d48/fftools__ffmpeg_8c.html#a19c97d7729be97389faaf4aaac8c3e88',1,'term_exit(void): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a19c97d7729be97389faaf4aaac8c3e88',1,'term_exit(void): fftools_ffmpeg.c']]], + ['term_5fexit_5fsigsafe_2206',['term_exit_sigsafe',['../d7/d48/fftools__ffmpeg_8c.html#a9ff329d05aff252a944b937bb80d16e1',1,'fftools_ffmpeg.c']]], + ['term_5finit_2207',['term_init',['../d7/d48/fftools__ffmpeg_8c.html#ac7072b9c76dd77ce9900197d0133b0ba',1,'term_init(void): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac7072b9c76dd77ce9900197d0133b0ba',1,'term_init(void): fftools_ffmpeg.c']]], + ['thereareasynchronousmessagesintransmit_2208',['thereAreAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ac9a016f249e55408155bc4961329e788',1,'ffmpegkit::AbstractSession::thereAreAsynchronousMessagesInTransmit()'],['../d5/d0e/classffmpegkit_1_1_session.html#a336e447eeb089650b5d31cb655e1e74f',1,'ffmpegkit::Session::thereAreAsynchronousMessagesInTransmit()']]], + ['transcode_2209',['transcode',['../d7/d48/fftools__ffmpeg_8c.html#a0bbbd61fe097505cf12be11e60f07ca8',1,'fftools_ffmpeg.c']]], + ['transcode_5ffrom_5ffilter_2210',['transcode_from_filter',['../d7/d48/fftools__ffmpeg_8c.html#a38de3252b4bb6ea13e22238efe42c015',1,'fftools_ffmpeg.c']]], + ['transcode_5finit_2211',['transcode_init',['../d7/d48/fftools__ffmpeg_8c.html#aa4af1fda1a5fc33ec74e4ae2c0dbc122',1,'fftools_ffmpeg.c']]], + ['transcode_5fstep_2212',['transcode_step',['../d7/d48/fftools__ffmpeg_8c.html#abd1ff9b1a508070a11a26c9c3f3f455b',1,'fftools_ffmpeg.c']]], + ['transcode_5fsubtitles_2213',['transcode_subtitles',['../d7/d48/fftools__ffmpeg_8c.html#a0c4f43b9ed5f99a30210c6ef7191a89e',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_13.html b/docs/linux/html/search/functions_13.html new file mode 100644 index 0000000..f1fc553 --- /dev/null +++ b/docs/linux/html/search/functions_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_13.js b/docs/linux/html/search/functions_13.js new file mode 100644 index 0000000..b779e53 --- /dev/null +++ b/docs/linux/html/search/functions_13.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['uninit_5foptions_2214',['uninit_options',['../d7/db3/fftools__ffmpeg_8h.html#a02e475f4040b6a0cb4236447d9263e00',1,'uninit_options(OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a02e475f4040b6a0cb4236447d9263e00',1,'uninit_options(OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['uninit_5fopts_2215',['uninit_opts',['../d7/dcc/fftools__cmdutils_8c.html#ac58552bde3a215ae94a3bd114577cbee',1,'uninit_opts(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee',1,'uninit_opts(void): fftools_cmdutils.c']]], + ['uninit_5fparse_5fcontext_2216',['uninit_parse_context',['../d7/dcc/fftools__cmdutils_8c.html#a8bcd5cd3628e5864fa94431d8eb08fad',1,'uninit_parse_context(OptionParseContext *octx): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad',1,'uninit_parse_context(OptionParseContext *octx): fftools_cmdutils.c']]], + ['upcase_5fstring_2217',['upcase_string',['../d8/d78/fftools__ffprobe_8c.html#a59812955b0d1457f68b921edd60beb6b',1,'fftools_ffprobe.c']]], + ['update_5fbenchmark_2218',['update_benchmark',['../d7/d48/fftools__ffmpeg_8c.html#ab8ed239c7a9be61521f08c4adaa9d4f3',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_14.html b/docs/linux/html/search/functions_14.html new file mode 100644 index 0000000..0302cd9 --- /dev/null +++ b/docs/linux/html/search/functions_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_14.js b/docs/linux/html/search/functions_14.js new file mode 100644 index 0000000..0e84e56 --- /dev/null +++ b/docs/linux/html/search/functions_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['validate_5fstring_2219',['validate_string',['../d8/d78/fftools__ffprobe_8c.html#a39e762f469368ec213106a09db8bf524',1,'fftools_ffprobe.c']]], + ['value_5fstring_2220',['value_string',['../d8/d78/fftools__ffprobe_8c.html#a4049c37af782694ed66790b32be6f824',1,'fftools_ffprobe.c']]], + ['videotoolbox_5finit_2221',['videotoolbox_init',['../d7/db3/fftools__ffmpeg_8h.html#a2aecd4d11bf1f7413cdd45a356e9fa9a',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/functions_15.html b/docs/linux/html/search/functions_15.html new file mode 100644 index 0000000..18cf76b --- /dev/null +++ b/docs/linux/html/search/functions_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_15.js b/docs/linux/html/search/functions_15.js new file mode 100644 index 0000000..6cb2cf1 --- /dev/null +++ b/docs/linux/html/search/functions_15.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['waitforasynchronousmessagesintransmit_2222',['waitForAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a832b37343ce2013ed93720b341cf3563',1,'ffmpegkit::AbstractSession']]], + ['write_5foption_2223',['write_option',['../d7/dcc/fftools__cmdutils_8c.html#a5ca363d9d3e4d401719d9e2e27fd5e21',1,'fftools_cmdutils.c']]], + ['write_5fpacket_2224',['write_packet',['../d7/d48/fftools__ffmpeg_8c.html#a8507683cee9accbbda79588659abcea8',1,'fftools_ffmpeg.c']]], + ['writer_5fchild_5fnext_2225',['writer_child_next',['../d8/d78/fftools__ffprobe_8c.html#aa0f43dc00221e3e30afd2fbdc13e90c0',1,'fftools_ffprobe.c']]], + ['writer_5fclose_2226',['writer_close',['../d8/d78/fftools__ffprobe_8c.html#aa1ee26bedcca97a195f9d10f16e6e2ef',1,'fftools_ffprobe.c']]], + ['writer_5fget_5fby_5fname_2227',['writer_get_by_name',['../d8/d78/fftools__ffprobe_8c.html#abfbae06d55ce24a4fe2e1943a346bc2f',1,'fftools_ffprobe.c']]], + ['writer_5fget_5fname_2228',['writer_get_name',['../d8/d78/fftools__ffprobe_8c.html#ad708fa8a3af6ddd2f44f20c258df5f11',1,'fftools_ffprobe.c']]], + ['writer_5fopen_2229',['writer_open',['../d8/d78/fftools__ffprobe_8c.html#a02c38b351de5ed69212a230a156c9381',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fdata_2230',['writer_print_data',['../d8/d78/fftools__ffprobe_8c.html#a762997c6713f70a805a05e5e2ff02c96',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fdata_5fhash_2231',['writer_print_data_hash',['../d8/d78/fftools__ffprobe_8c.html#aae3d3cf3507a0867ddc8f8d5553a473d',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5finteger_2232',['writer_print_integer',['../d8/d78/fftools__ffprobe_8c.html#a794266cdb6ddeaa21520e52cd62ffca7',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fintegers_2233',['writer_print_integers',['../d8/d78/fftools__ffprobe_8c.html#a440fbc5321a186b58b6e21f1274c952e',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5frational_2234',['writer_print_rational',['../d8/d78/fftools__ffprobe_8c.html#a9f874d9c47a9e3395480addb3268c3f8',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fsection_5ffooter_2235',['writer_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a4cf81a183add107880e89f63945215b4',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fsection_5fheader_2236',['writer_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#ad5ec9784eb70b474333c85851c02283d',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fstring_2237',['writer_print_string',['../d8/d78/fftools__ffprobe_8c.html#a900da5c87d04643f413c13eecba3a2f3',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5ftime_2238',['writer_print_time',['../d8/d78/fftools__ffprobe_8c.html#ae194f5d65d40cf6abb50586ae775977a',1,'fftools_ffprobe.c']]], + ['writer_5fprint_5fts_2239',['writer_print_ts',['../d8/d78/fftools__ffprobe_8c.html#aeb55c0421d82804ec72ca7f54e604ae7',1,'fftools_ffprobe.c']]], + ['writer_5fregister_2240',['writer_register',['../d8/d78/fftools__ffprobe_8c.html#ae43874ec7b3d5abe0ee5aa67e9141cfc',1,'fftools_ffprobe.c']]], + ['writer_5fregister_5fall_2241',['writer_register_all',['../d8/d78/fftools__ffprobe_8c.html#a9ebb74427ab0bb38df3403a1cb810a2e',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_16.html b/docs/linux/html/search/functions_16.html new file mode 100644 index 0000000..9182391 --- /dev/null +++ b/docs/linux/html/search/functions_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_16.js b/docs/linux/html/search/functions_16.js new file mode 100644 index 0000000..c3e92a7 --- /dev/null +++ b/docs/linux/html/search/functions_16.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['xml_5finit_2242',['xml_init',['../d8/d78/fftools__ffprobe_8c.html#a4ed4e5eceda7d8f562e0683bc12f80f9',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fint_2243',['xml_print_int',['../d8/d78/fftools__ffprobe_8c.html#acbfae1e3a3210f0f141345e9861e3ec9',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fsection_5ffooter_2244',['xml_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a7b60c79dfdeb21ecf6b25397264af0df',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fsection_5fheader_2245',['xml_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a8e019d316907af6a521d8973dbd52a5c',1,'fftools_ffprobe.c']]], + ['xml_5fprint_5fstr_2246',['xml_print_str',['../d8/d78/fftools__ffprobe_8c.html#a81f2de898d3fc197d00c4297957c706c',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_2.html b/docs/linux/html/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/docs/linux/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_2.js b/docs/linux/html/search/functions_2.js new file mode 100644 index 0000000..ca33d10 --- /dev/null +++ b/docs/linux/html/search/functions_2.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['c_5fescape_5fstr_1685',['c_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a5c0c7666a8ee9c688470f5ab8555fef1',1,'fftools_ffprobe.c']]], + ['callbackdata_1686',['CallbackData',['../d5/d18/class_callback_data.html#a96a32d40a1b8223cb615e69633505032',1,'CallbackData::CallbackData(const long sessionId, const int logLevel, const AVBPrint *data)'],['../d5/d18/class_callback_data.html#a43d14a2b585457e353cdce9d82d9548b',1,'CallbackData::CallbackData(const long sessionId, const int videoFrameNumber, const float videoFps, const float videoQuality, const int64_t size, const int time, const double bitrate, const double speed)']]], + ['callbackdataremove_1687',['callbackDataRemove',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8dfd8530623b2c0fbcdee69c3d5347cf',1,'FFmpegKitConfig.cpp']]], + ['callbacknotify_1688',['callbackNotify',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a88a250dc7348be9a0182a5dd5e000037',1,'FFmpegKitConfig.cpp']]], + ['callbackthreadfunction_1689',['callbackThreadFunction',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9adc5fd0374ff5eb6966ddd9e28e5b21',1,'FFmpegKitConfig.cpp']]], + ['callbackwait_1690',['callbackWait',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#abdbf4016440c88dd0d19e83c5f0273d1',1,'FFmpegKitConfig.cpp']]], + ['cancel_1691',['cancel',['../d2/d41/classffmpegkit_1_1_abstract_session.html#af67c25c9ba25ec224c70cfffe69e88be',1,'ffmpegkit::AbstractSession::cancel()'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#adffdb985f9d0d0c62e5258719eb16e95',1,'ffmpegkit::FFmpegKit::cancel()'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a15bd5828787355c192b68ab594f02175',1,'ffmpegkit::FFmpegKit::cancel(const long sessionId)'],['../d5/d0e/classffmpegkit_1_1_session.html#ab6e3e93db2042cc25796ca4d3e4135c7',1,'ffmpegkit::Session::cancel()']]], + ['cancel_5foperation_1692',['cancel_operation',['../d7/d48/fftools__ffmpeg_8c.html#a85d242f177c5dc68d5808adc5e594b92',1,'cancel_operation(long id): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a85d242f177c5dc68d5808adc5e594b92',1,'cancel_operation(long id): fftools_ffmpeg.c']]], + ['cancelrequested_1693',['cancelRequested',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#acbe59dcf013b4b50c53ecbc4c6e0bcbc',1,'cancelRequested(long sessionId): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#acbe59dcf013b4b50c53ecbc4c6e0bcbc',1,'cancelRequested(long sessionId): FFmpegKitConfig.cpp']]], + ['cancelsession_1694',['cancelSession',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a1d345dc080c3a4b1ee30f23d8066ce72',1,'cancelSession(long sessionId): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a1d345dc080c3a4b1ee30f23d8066ce72',1,'cancelSession(long sessionId): FFmpegKitConfig.cpp']]], + ['chapter_1695',['Chapter',['../d9/d9f/classffmpegkit_1_1_chapter.html#a616c81b7dcd7d0f0a68671d3dd92c335',1,'ffmpegkit::Chapter']]], + ['check_5fdecode_5fresult_1696',['check_decode_result',['../d7/d48/fftools__ffmpeg_8c.html#a733571df1f9d2cdd5aca9e933919a237',1,'fftools_ffmpeg.c']]], + ['check_5ffilter_5foutputs_1697',['check_filter_outputs',['../d7/db3/fftools__ffmpeg_8h.html#ad7582860b219ad64ec003d5924747d20',1,'check_filter_outputs(void): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ad7582860b219ad64ec003d5924747d20',1,'check_filter_outputs(void): fftools_ffmpeg_filter.c']]], + ['check_5finit_5foutput_5ffile_1698',['check_init_output_file',['../d7/d48/fftools__ffmpeg_8c.html#a88ac1fa670df56643b51e4face274d51',1,'fftools_ffmpeg.c']]], + ['check_5fkeyboard_5finteraction_1699',['check_keyboard_interaction',['../d7/d48/fftools__ffmpeg_8c.html#a17f085393f3e2cd51d665ab899282b81',1,'fftools_ffmpeg.c']]], + ['check_5foptions_1700',['check_options',['../d7/dcc/fftools__cmdutils_8c.html#ae40b9746b06af788a13286f6b74dd1a1',1,'fftools_cmdutils.c']]], + ['check_5foutput_5fconstraints_1701',['check_output_constraints',['../d7/d48/fftools__ffmpeg_8c.html#a8058514ce4db47327793e924526a39ed',1,'fftools_ffmpeg.c']]], + ['check_5frecording_5ftime_1702',['check_recording_time',['../d7/d48/fftools__ffmpeg_8c.html#a2fc10262dc3c90f4c4d0cdac1fdd8991',1,'fftools_ffmpeg.c']]], + ['check_5fsection_5fshow_5fentries_1703',['check_section_show_entries',['../d8/d78/fftools__ffprobe_8c.html#a967fae793b47910f2618a2facf923c50',1,'fftools_ffprobe.c']]], + ['check_5fstream_5fspecifier_1704',['check_stream_specifier',['../d7/dcc/fftools__cmdutils_8c.html#a632b71e4b56c5ee8556a407bbecbcef8',1,'check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8',1,'check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec): fftools_cmdutils.c']]], + ['check_5fstreamcopy_5ffilters_1705',['check_streamcopy_filters',['../d7/db3/fftools__ffmpeg_8h.html#a7cddc701ff06bdb72d4fc4e9d58fef18',1,'check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7cddc701ff06bdb72d4fc4e9d58fef18',1,'check_streamcopy_filters(OptionsContext *o, AVFormatContext *oc, const OutputStream *ost, enum AVMediaType type): fftools_ffmpeg_opt.c']]], + ['choose_5fdecoder_1706',['choose_decoder',['../d7/db3/fftools__ffmpeg_8h.html#ac258c2749058533c1bdcc9a939a0c8d5',1,'choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ac258c2749058533c1bdcc9a939a0c8d5',1,'choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st): fftools_ffmpeg_opt.c']]], + ['choose_5fencoder_1707',['choose_encoder',['../d7/db3/fftools__ffmpeg_8h.html#a03a47e17a0b8a46a12a209c7448b2ac6',1,'choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a03a47e17a0b8a46a12a209c7448b2ac6',1,'choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost): fftools_ffmpeg_opt.c']]], + ['choose_5foutput_1708',['choose_output',['../d7/d48/fftools__ffmpeg_8c.html#a677a37d7ea296c85c36f131210edd44b',1,'fftools_ffmpeg.c']]], + ['choose_5fpix_5ffmts_1709',['choose_pix_fmts',['../d2/d36/fftools__ffmpeg__filter_8c.html#a42a6b4647cc1c8326bb4db65d1b463e6',1,'fftools_ffmpeg_filter.c']]], + ['choose_5fpixel_5ffmt_1710',['choose_pixel_fmt',['../d7/db3/fftools__ffmpeg_8h.html#a60393ab9e563b128bc563267db21ab66',1,'choose_pixel_fmt(AVStream *st, AVCodecContext *avctx, const AVCodec *codec, enum AVPixelFormat target): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a46fd7d3ff0e63394a14c329d0249e0d4',1,'choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target): fftools_ffmpeg_filter.c']]], + ['choose_5fsample_5ffmt_1711',['choose_sample_fmt',['../d7/db3/fftools__ffmpeg_8h.html#aa5dbb63410f51797ec2bcfeff8615975',1,'fftools_ffmpeg.h']]], + ['cleanup_5ffiltergraph_1712',['cleanup_filtergraph',['../d2/d36/fftools__ffmpeg__filter_8c.html#a027d310ab49f2b105fc3b980a6b6c340',1,'fftools_ffmpeg_filter.c']]], + ['clear_5flog_1713',['clear_log',['../d8/d78/fftools__ffprobe_8c.html#aeb0789c94a1dfc090088d771352299c4',1,'fftools_ffprobe.c']]], + ['clearsessions_1714',['clearSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ab31911c60354b18e1b94be058bcead76',1,'ffmpegkit::FFmpegKitConfig']]], + ['close_5fall_5foutput_5fstreams_1715',['close_all_output_streams',['../d7/d48/fftools__ffmpeg_8c.html#ac237321f98a7041c9f6004d2ce8a425c',1,'fftools_ffmpeg.c']]], + ['close_5finput_5ffile_1716',['close_input_file',['../d8/d78/fftools__ffprobe_8c.html#aa5f1f5a901a3e59f1841d21c03a61eba',1,'fftools_ffprobe.c']]], + ['close_5foutput_5fstream_1717',['close_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a89c049f6683542b855326a6c2d5c3d7d',1,'fftools_ffmpeg.c']]], + ['closeffmpegpipe_1718',['closeFFmpegPipe',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a5b33b1d74216a6b23281184b5a8b5701',1,'ffmpegkit::FFmpegKitConfig']]], + ['compact_5finit_1719',['compact_init',['../d8/d78/fftools__ffprobe_8c.html#ab59ed846cadb912de8ed34126529bd4e',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fint_1720',['compact_print_int',['../d8/d78/fftools__ffprobe_8c.html#a829211c72e47e8a159f8b6e5b5ea4976',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fsection_5ffooter_1721',['compact_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a457295f949f80a2806e624db57e5a046',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fsection_5fheader_1722',['compact_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a5f0203a31c33090c1cd79fa9cfb5f7d0',1,'fftools_ffprobe.c']]], + ['compact_5fprint_5fstr_1723',['compact_print_str',['../d8/d78/fftools__ffprobe_8c.html#af9df6c99a699348fc0ea0b68d304f735',1,'fftools_ffprobe.c']]], + ['compare_5fcodec_5fdesc_1724',['compare_codec_desc',['../d7/dcc/fftools__cmdutils_8c.html#a50fec3b5f83e8f355a640dafbf4d2189',1,'fftools_cmdutils.c']]], + ['compare_5fint64_1725',['compare_int64',['../d7/d48/fftools__ffmpeg_8c.html#a69b0f920b4d91360bd5cd5da5842e282',1,'fftools_ffmpeg.c']]], + ['complete_1726',['complete',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a9d5be42b5576ee247627d113f74ec851',1,'ffmpegkit::AbstractSession::complete()'],['../d5/d0e/classffmpegkit_1_1_session.html#a4ee68d280a2a15dc654e547273b91116',1,'ffmpegkit::Session::complete()']]], + ['configure_5ffiltergraph_1727',['configure_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#adfc4727f627c5abd0aa843206d046ec6',1,'configure_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#adfc4727f627c5abd0aa843206d046ec6',1,'configure_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['configure_5finput_5faudio_5ffilter_1728',['configure_input_audio_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#abd040cc1f24edd0ee72c1bdfaa5599c2',1,'fftools_ffmpeg_filter.c']]], + ['configure_5finput_5ffilter_1729',['configure_input_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a8866c5d369968e1f79743e44ad4b8169',1,'fftools_ffmpeg_filter.c']]], + ['configure_5finput_5fvideo_5ffilter_1730',['configure_input_video_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9f383c04c76d00cb7fbe0c561fc54aba',1,'fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5faudio_5ffilter_1731',['configure_output_audio_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a57f643dc94cbbbb752e2943a7457a668',1,'fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5ffilter_1732',['configure_output_filter',['../d7/db3/fftools__ffmpeg_8h.html#a045cee5da7d7a2926a5351a4938ef056',1,'configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a045cee5da7d7a2926a5351a4938ef056',1,'configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out): fftools_ffmpeg_filter.c']]], + ['configure_5foutput_5fvideo_5ffilter_1733',['configure_output_video_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a1aff0805d8ea5d89a1dbf1fb1e460113',1,'fftools_ffmpeg_filter.c']]], + ['copy_5fchapters_1734',['copy_chapters',['../d7/db3/fftools__ffmpeg_8h.html#a15ce1619315986c72f387e9b41a0ff10',1,'copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a15ce1619315986c72f387e9b41a0ff10',1,'copy_chapters(InputFile *ifile, OutputFile *ofile, int copy_metadata): fftools_ffmpeg_opt.c']]], + ['create_1735',['create',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ac1d40d264ef1f3cb21d959356ede7988',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ad194942fd5f96f548005a592df797958',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a2441745e7775987b5add238a75bc1e13',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a3d31e6e9987df4c4fde9b11506269891',1,'ffmpegkit::FFmpegSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a46f24220e7b4fd5e8d3d22fc30ec84e7',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a2146cf8fcaedb0e0e6b933f5492024d5',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#aab8a5855848f5abe7be5da1c2ff3d7f2',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback)'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a662f5350943761e6c198976c90653f1e',1,'ffmpegkit::FFprobeSession::create(const std::shared_ptr< std::list< std::string >> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a32370e8cea864e856f7bc997d412d5d0',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a6b645aa7d119f9ef9f0e15453a192ce7',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#abff9ff8cd8de5e35f55596ebdb33ed94',1,'ffmpegkit::MediaInformationSession::create(const std::shared_ptr< std::list< std::string >> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['csv_5fescape_5fstr_1736',['csv_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a85a9d21c0c58783a87c5b26c04e785c0',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_3.html b/docs/linux/html/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/docs/linux/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_3.js b/docs/linux/html/search/functions_3.js new file mode 100644 index 0000000..278ad3f --- /dev/null +++ b/docs/linux/html/search/functions_3.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['decode_1737',['decode',['../d7/d48/fftools__ffmpeg_8c.html#a22b853326688d8b01baa28b9aad668d8',1,'fftools_ffmpeg.c']]], + ['decode_5faudio_1738',['decode_audio',['../d7/d48/fftools__ffmpeg_8c.html#a159db49b7f730d2869253cd4ff0411aa',1,'fftools_ffmpeg.c']]], + ['decode_5finterrupt_5fcb_1739',['decode_interrupt_cb',['../d7/d48/fftools__ffmpeg_8c.html#a9e363385c841c9b165453f0c7014304a',1,'fftools_ffmpeg.c']]], + ['decode_5fvideo_1740',['decode_video',['../d7/d48/fftools__ffmpeg_8c.html#a71dd0984704d7f70065c6b97edc7069e',1,'fftools_ffmpeg.c']]], + ['def_5fchoose_5fformat_1741',['DEF_CHOOSE_FORMAT',['../d2/d36/fftools__ffmpeg__filter_8c.html#aac5586382c09d11ae21736fae565e52f',1,'DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats, AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name) DEF_CHOOSE_FORMAT(sample_rates: fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a6e27af28343fa6ff20dc1ada13d0ecbe',1,'DEF_CHOOSE_FORMAT(channel_layouts, uint64_t, channel_layout, channel_layouts, 0, "0x%"PRIx64,) int init_simple_filtergraph(InputStream *ist: fftools_ffmpeg_filter.c']]], + ['default_5fprint_5fint_1742',['default_print_int',['../d8/d78/fftools__ffprobe_8c.html#a8ad34de827f79f457b05198aec943f7f',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fsection_5ffooter_1743',['default_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a8b5fffa414927909ca667f11ff07897b',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fsection_5fheader_1744',['default_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a2ad6ecd4afce09abccf27700c3378fa3',1,'fftools_ffprobe.c']]], + ['default_5fprint_5fstr_1745',['default_print_str',['../d8/d78/fftools__ffprobe_8c.html#a925a30e9e3e60e58d5de01ba750fea2a',1,'fftools_ffprobe.c']]], + ['defaultgetmediainformationcommandarguments_1746',['defaultGetMediaInformationCommandArguments',['../d0/dc3/_f_fprobe_kit_8cpp.html#ac1aeaa5736f8a6cd1c67b76cef8d82be',1,'FFprobeKit.cpp']]], + ['define_5fwriter_5fclass_1747',['DEFINE_WRITER_CLASS',['../d8/d78/fftools__ffprobe_8c.html#acd163907511a8a8c63fe25dfae436b1a',1,'DEFINE_WRITER_CLASS(default): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#afc3839b016a920d539a4234a046c5f86',1,'DEFINE_WRITER_CLASS(compact): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a43e14b8756f345cbac4fda5e390c14c7',1,'DEFINE_WRITER_CLASS(csv): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a5cb7a0a84921b1764c24dd2dc46ae066',1,'DEFINE_WRITER_CLASS(flat): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a12b11e312dd3cf8e012411a0c89ea003',1,'DEFINE_WRITER_CLASS(ini): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a81e607cf71ec28f145a2b25486ad5c82',1,'DEFINE_WRITER_CLASS(json): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a546e7d12c92973be42a67d4d05636f83',1,'DEFINE_WRITER_CLASS(xml): fftools_ffprobe.c']]], + ['describe_5ffilter_5flink_1748',['describe_filter_link',['../d2/d36/fftools__ffmpeg__filter_8c.html#a899fd519426902067f15c45b628b601e',1,'fftools_ffmpeg_filter.c']]], + ['disableredirection_1749',['disableRedirection',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a0f689e39aeed46117bccbd88cb825b9b',1,'ffmpegkit::FFmpegKitConfig']]], + ['do_5faudio_5fout_1750',['do_audio_out',['../d7/d48/fftools__ffmpeg_8c.html#a18033581df001bc68ef11676eb7040bd',1,'fftools_ffmpeg.c']]], + ['do_5fstreamcopy_1751',['do_streamcopy',['../d7/d48/fftools__ffmpeg_8c.html#adb98afa9c4922dc9f61b7130c3beb183',1,'fftools_ffmpeg.c']]], + ['do_5fsubtitle_5fout_1752',['do_subtitle_out',['../d7/d48/fftools__ffmpeg_8c.html#a2af61470284cfd849344d6a5fdd3257c',1,'fftools_ffmpeg.c']]], + ['do_5fvideo_5fout_1753',['do_video_out',['../d7/d48/fftools__ffmpeg_8c.html#a33a912b98c7c73e52a0ab9cc4e11b995',1,'fftools_ffmpeg.c']]], + ['do_5fvideo_5fstats_1754',['do_video_stats',['../d7/d48/fftools__ffmpeg_8c.html#ad97d709b57b2a391fedb2890e6e317d2',1,'fftools_ffmpeg.c']]], + ['dump_5fargument_1755',['dump_argument',['../d7/dcc/fftools__cmdutils_8c.html#a71385b26c42379eabd572d72994c1a9a',1,'fftools_cmdutils.c']]], + ['dump_5fattachment_1756',['dump_attachment',['../d7/db3/fftools__ffmpeg_8h.html#ae5e3335eee688ea6d2fbe00ae4fcefb6',1,'dump_attachment(AVStream *st, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae5e3335eee688ea6d2fbe00ae4fcefb6',1,'dump_attachment(AVStream *st, const char *filename): fftools_ffmpeg_opt.c']]], + ['duration_5fmax_1757',['duration_max',['../d7/d48/fftools__ffmpeg_8c.html#ab98f0ee465a0b23b09ba22ac22f359b7',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_4.html b/docs/linux/html/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/docs/linux/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_4.js b/docs/linux/html/search/functions_4.js new file mode 100644 index 0000000..283bb37 --- /dev/null +++ b/docs/linux/html/search/functions_4.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['enableffmpegsessioncompletecallback_1758',['enableFFmpegSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a225d7cf6f7b0a5aac42574bdf9e724b1',1,'ffmpegkit::FFmpegKitConfig']]], + ['enableffprobesessioncompletecallback_1759',['enableFFprobeSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#add75c3a9c394e7d131bdfe2e6ad04ef7',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablelogcallback_1760',['enableLogCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a3a444dfeb55593778d8119840945adaf',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablemediainformationsessioncompletecallback_1761',['enableMediaInformationSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#adc32e1a727ed730ae5e0d11830817b7f',1,'ffmpegkit::FFmpegKitConfig']]], + ['enableredirection_1762',['enableRedirection',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a38276361e645da189554ab37bc9a7b82',1,'ffmpegkit::FFmpegKitConfig']]], + ['enablestatisticscallback_1763',['enableStatisticsCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a8522a259ad9b91f2e4dedc94626866ca',1,'ffmpegkit::FFmpegKitConfig']]], + ['execute_1764',['execute',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#ae91e5f7c4e3fa29b02c8b06ae7855353',1,'ffmpegkit::FFmpegKit::execute()'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afbc72f1fbafb91a5e8f8d5ddfd4cba7e',1,'ffmpegkit::FFprobeKit::execute()']]], + ['executeasync_1765',['executeAsync',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a9e37e134521dfe25070b7525cd2cacd4',1,'ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback)'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a7b51d19c3ff1ec7955eb40661e6fa7d9',1,'ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#ac71efc2144fdcd99b3daf5abf886e317',1,'ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aed95fef44b783eda6141c64d389a7bce',1,'ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['executeffmpeg_1766',['executeFFmpeg',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ae11ffd23ffb96c2f1c982284c7da8d32',1,'FFmpegKitConfig.cpp']]], + ['executeffprobe_1767',['executeFFprobe',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a18aca1259cc13fd0030507628aab3982',1,'FFmpegKitConfig.cpp']]], + ['executewitharguments_1768',['executeWithArguments',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#acdd2bf847eb2ac707123e30ae0122f7d',1,'ffmpegkit::FFmpegKit::executeWithArguments()'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a25af0c454209a0a40f1b9254be25d429',1,'ffmpegkit::FFprobeKit::executeWithArguments()']]], + ['executewithargumentsasync_1769',['executeWithArgumentsAsync',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#aebbcef6767331a8e71bbc44021265b53',1,'ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback)'],['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a4d60c1563a9262b209cc31a22475c56e',1,'ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afe2fec9021b0bb8cb523d587d170545c',1,'ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aeab0cfb5df1ecf8ef4fb9c1feed8ce94',1,'ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr< std::list< std::string >> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback)']]], + ['exit_5fprogram_1770',['exit_program',['../d7/dcc/fftools__cmdutils_8c.html#a00fcf983c7dd20dd65568b3ebc20ed44',1,'exit_program(int ret): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16',1,'exit_program(int ret) av_noreturn: fftools_cmdutils.c']]], + ['expand_5ffilename_5ftemplate_1771',['expand_filename_template',['../d7/dcc/fftools__cmdutils_8c.html#a7ba283df692ef6c663ed34d968e796c6',1,'fftools_cmdutils.c']]] +]; diff --git a/docs/linux/html/search/functions_5.html b/docs/linux/html/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/docs/linux/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_5.js b/docs/linux/html/search/functions_5.js new file mode 100644 index 0000000..293a271 --- /dev/null +++ b/docs/linux/html/search/functions_5.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['fail_1772',['fail',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a028bdf7bd5506d9a9c574db0970bf0c2',1,'ffmpegkit::AbstractSession::fail()'],['../d5/d0e/classffmpegkit_1_1_session.html#a0437449324dc9c28a6abbee57b97b478',1,'ffmpegkit::Session::fail()']]], + ['ffmpeg_5fcleanup_1773',['ffmpeg_cleanup',['../d7/d48/fftools__ffmpeg_8c.html#aba1cc9fe65233e8e346f8da1a6a59fa8',1,'fftools_ffmpeg.c']]], + ['ffmpeg_5fexecute_1774',['ffmpeg_execute',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af42fc9da8015a216f63c1c993d5c1571',1,'ffmpeg_execute(int argc, char **argv): fftools_ffmpeg.c'],['../d7/d48/fftools__ffmpeg_8c.html#af42fc9da8015a216f63c1c993d5c1571',1,'ffmpeg_execute(int argc, char **argv): fftools_ffmpeg.c']]], + ['ffmpeg_5fparse_5foptions_1775',['ffmpeg_parse_options',['../d7/db3/fftools__ffmpeg_8h.html#aaaf7c2b3f63972f1f87face8f73cfdd6',1,'fftools_ffmpeg.h']]], + ['ffmpeg_5fvar_5fcleanup_1776',['ffmpeg_var_cleanup',['../d7/d48/fftools__ffmpeg_8c.html#af10f17795c85dc03132596d99e76abeb',1,'fftools_ffmpeg.c']]], + ['ffmpegexecute_1777',['ffmpegExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#af3040a062ee719588c806685940e7d9e',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegkit_5flog_5fcallback_5ffunction_1778',['ffmpegkit_log_callback_function',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a0c4f621bbe9aa3ac50c196cabd2e16a2',1,'ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs): FFmpegKitConfig.cpp'],['../d7/dcc/fftools__cmdutils_8c.html#a0c4f621bbe9aa3ac50c196cabd2e16a2',1,'ffmpegkit_log_callback_function(void *ptr, int level, const char *format, va_list vargs): FFmpegKitConfig.cpp']]], + ['ffmpegkit_5fstatistics_5fcallback_5ffunction_1779',['ffmpegkit_statistics_callback_function',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a58f020191bb344e3ba08e1301aeeb715',1,'FFmpegKitConfig.cpp']]], + ['ffmpegkitinitialize_1780',['ffmpegKitInitialize',['../d7/dc8/_arch_detect_8cpp.html#aa061971a1537d94184b8e552df340e9b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d8/d78/_f_fmpeg_kit_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp'],['../d0/dc3/_f_fprobe_kit_8cpp.html#ab2c30dcc3a660a065fa5d6599149ee8b',1,'ffmpegKitInitialize(): FFmpegKitConfig.cpp']]], + ['ffmpegsession_1781',['FFmpegSession',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8319192eb11eb897dce15a6cf25220a1',1,'ffmpegkit::FFmpegSession']]], + ['ffprobe_5fcleanup_1782',['ffprobe_cleanup',['../d8/d78/fftools__ffprobe_8c.html#a8b9c5b8f482dcd7f8e80113cad0ad760',1,'fftools_ffprobe.c']]], + ['ffprobe_5fexecute_1783',['ffprobe_execute',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4a459d7e4c3cfbf3e3d38eba042a8d53',1,'ffprobe_execute(int argc, char **argv): fftools_ffprobe.c'],['../d8/d78/fftools__ffprobe_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53',1,'ffprobe_execute(int argc, char **argv): fftools_ffprobe.c']]], + ['ffprobe_5fshow_5flibrary_5fversions_1784',['ffprobe_show_library_versions',['../d8/d78/fftools__ffprobe_8c.html#a28f0dcb435c2be287ae1c5fa5e31cf03',1,'fftools_ffprobe.c']]], + ['ffprobe_5fshow_5fpixel_5fformats_1785',['ffprobe_show_pixel_formats',['../d8/d78/fftools__ffprobe_8c.html#ad1d3de9114ad0f5c2ead6a551a97e071',1,'fftools_ffprobe.c']]], + ['ffprobe_5fshow_5fprogram_5fversion_1786',['ffprobe_show_program_version',['../d8/d78/fftools__ffprobe_8c.html#aadcabc31187da0553b167873502f105b',1,'fftools_ffprobe.c']]], + ['ffprobe_5fvar_5fcleanup_1787',['ffprobe_var_cleanup',['../d8/d78/fftools__ffprobe_8c.html#a5d50420ae720539a2af54fef56ba2b9c',1,'fftools_ffprobe.c']]], + ['ffprobeexecute_1788',['ffprobeExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a8c62c5d0c322e263f9fc926f3f8972b2',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffprobesession_1789',['FFprobeSession',['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#aa0bd393bfe05d4e175d4da37fae90052',1,'ffmpegkit::FFprobeSession']]], + ['fftools_5fcopy_5fmetadata_1790',['fftools_copy_metadata',['../d7/db3/fftools__ffmpeg_8h.html#ada7285da9f88d7f0a0b31eaf66a33200',1,'fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ada7285da9f88d7f0a0b31eaf66a33200',1,'fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['fftools_5fread_5ffile_1791',['fftools_read_file',['../d7/db3/fftools__ffmpeg_8h.html#a2b7c43b1c753d5dce457b81d54fdad32',1,'fftools_read_file(const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2b7c43b1c753d5dce457b81d54fdad32',1,'fftools_read_file(const char *filename): fftools_ffmpeg_opt.c']]], + ['filter_5fcodec_5fopts_1792',['filter_codec_opts',['../d7/dcc/fftools__cmdutils_8c.html#a6e5214136137bdd2bee321d1fe8c2ae8',1,'filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6e5214136137bdd2bee321d1fe8c2ae8',1,'filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec): fftools_cmdutils.c']]], + ['filtergraph_5fis_5fsimple_1793',['filtergraph_is_simple',['../d7/db3/fftools__ffmpeg_8h.html#ad60a50ce02efbab762effbbdd7eda05e',1,'filtergraph_is_simple(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ad60a50ce02efbab762effbbdd7eda05e',1,'filtergraph_is_simple(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['find_5fcodec_5for_5fdie_1794',['find_codec_or_die',['../d7/db3/fftools__ffmpeg_8h.html#a218998d876650f9f9ea661f30fecad36',1,'find_codec_or_die(const char *name, enum AVMediaType type, int encoder): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a218998d876650f9f9ea661f30fecad36',1,'find_codec_or_die(const char *name, enum AVMediaType type, int encoder): fftools_ffmpeg_opt.c']]], + ['find_5foption_1795',['find_option',['../d7/dcc/fftools__cmdutils_8c.html#a15c4349cbdb92f3c9308430c64155880',1,'fftools_cmdutils.c']]], + ['finish_5fgroup_1796',['finish_group',['../d7/dcc/fftools__cmdutils_8c.html#a78b32a226e4f9c879551b61e586d0f29',1,'fftools_cmdutils.c']]], + ['finish_5foutput_5fstream_1797',['finish_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a603a43eb595edc7f66cf508c6815d228',1,'fftools_ffmpeg.c']]], + ['flat_5fescape_5fkey_5fstr_1798',['flat_escape_key_str',['../d8/d78/fftools__ffprobe_8c.html#ab5f15995534591d673ddcc1c16954a3c',1,'fftools_ffprobe.c']]], + ['flat_5fescape_5fvalue_5fstr_1799',['flat_escape_value_str',['../d8/d78/fftools__ffprobe_8c.html#ab1fcff7be2d63a537f30526dbb75e95e',1,'fftools_ffprobe.c']]], + ['flat_5finit_1800',['flat_init',['../d8/d78/fftools__ffprobe_8c.html#a769b0eaf8e88b483c3d7c6ff124c6152',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fint_1801',['flat_print_int',['../d8/d78/fftools__ffprobe_8c.html#a3f40008742005be325593118510b0152',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fsection_5fheader_1802',['flat_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a6daa840f13c7ffd6f1c80e557ce0a658',1,'fftools_ffprobe.c']]], + ['flat_5fprint_5fstr_1803',['flat_print_str',['../d8/d78/fftools__ffprobe_8c.html#a97c040dae8caa4ad5db2eef36d041a71',1,'fftools_ffprobe.c']]], + ['flush_5fencoders_1804',['flush_encoders',['../d7/d48/fftools__ffmpeg_8c.html#adfd9959ab0ec5f8d63e3f5b2cc929590',1,'fftools_ffmpeg.c']]], + ['forward_5freport_1805',['forward_report',['../d7/d48/fftools__ffmpeg_8c.html#a2503e45acfd6573b686e00ce38519051',1,'fftools_ffmpeg.c']]], + ['from_1806',['from',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html#a400b4bc94371afdec99dcec23b41c3f5',1,'ffmpegkit::MediaInformationJsonParser']]], + ['fromwitherror_1807',['fromWithError',['../da/d53/classffmpegkit_1_1_media_information_json_parser.html#abe7288ce093e0ccbb2714592d07fdb7a',1,'ffmpegkit::MediaInformationJsonParser']]], + ['fs_5fcreate_5fdir_1808',['fs_create_dir',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aeb01e0d661bdcdd64b4aa00fcec86813',1,'FFmpegKitConfig.cpp']]], + ['fs_5fexists_1809',['fs_exists',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a288ebcda2f93938ea373bee836c27568',1,'FFmpegKitConfig.cpp']]] +]; diff --git a/docs/linux/html/search/functions_6.html b/docs/linux/html/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/docs/linux/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_6.js b/docs/linux/html/search/functions_6.js new file mode 100644 index 0000000..20b9a72 --- /dev/null +++ b/docs/linux/html/search/functions_6.js @@ -0,0 +1,115 @@ +var searchData= +[ + ['get_5fbenchmark_5ftime_5fstamps_1810',['get_benchmark_time_stamps',['../d7/d48/fftools__ffmpeg_8c.html#a18d3980caddd835d0192f7ff2ed1b9b2',1,'fftools_ffmpeg.c']]], + ['get_5fbuffer_1811',['get_buffer',['../d7/d48/fftools__ffmpeg_8c.html#a8aac50e0d8fe8a1bb2d79b56b9e57b0a',1,'fftools_ffmpeg.c']]], + ['get_5fcodecs_5fsorted_1812',['get_codecs_sorted',['../d7/dcc/fftools__cmdutils_8c.html#abbde8c2611500387c0dd5fa7851e9395',1,'fftools_cmdutils.c']]], + ['get_5fcompliance_5fnormal_5fpix_5ffmts_1813',['get_compliance_normal_pix_fmts',['../d2/d36/fftools__ffmpeg__filter_8c.html#a2019621f4b0b465a1305cec6943e4d26',1,'fftools_ffmpeg_filter.c']]], + ['get_5fformat_1814',['get_format',['../d7/d48/fftools__ffmpeg_8c.html#a360baf543db2a3aa9b2a91740eefdbd3',1,'fftools_ffmpeg.c']]], + ['get_5finput_5fpacket_1815',['get_input_packet',['../d7/d48/fftools__ffmpeg_8c.html#acd2e6084ff647db5f4e2ca46a1bfcc7a',1,'fftools_ffmpeg.c']]], + ['get_5finput_5fstream_1816',['get_input_stream',['../d7/d48/fftools__ffmpeg_8c.html#ae4fb6d6ec74b5529f4cfe5f4f2bddbd9',1,'fftools_ffmpeg.c']]], + ['get_5fline_1817',['get_line',['../d7/db3/fftools__ffmpeg_8h.html#a663c23e27b0412e3d67205757114d16b',1,'get_line(AVIOContext *s): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a663c23e27b0412e3d67205757114d16b',1,'get_line(AVIOContext *s): fftools_ffmpeg_opt.c']]], + ['get_5fmedia_5ftype_5fchar_1818',['get_media_type_char',['../d7/dcc/fftools__cmdutils_8c.html#a8a10d00329fa22b369c9b36167947c02',1,'fftools_cmdutils.c']]], + ['get_5fost_5ffilters_1819',['get_ost_filters',['../d7/db3/fftools__ffmpeg_8h.html#a55e636661397aed6950fd1f4667e3439',1,'get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a55e636661397aed6950fd1f4667e3439',1,'get_ost_filters(OptionsContext *o, AVFormatContext *oc, OutputStream *ost): fftools_ffmpeg_opt.c']]], + ['get_5fpreset_5ffile_1820',['get_preset_file',['../d7/dcc/fftools__cmdutils_8c.html#a4ba31d95fc6fc14e603fa86e7a007409',1,'get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4ba31d95fc6fc14e603fa86e7a007409',1,'get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name): fftools_cmdutils.c']]], + ['get_5fpreset_5ffile_5f2_1821',['get_preset_file_2',['../d7/db3/fftools__ffmpeg_8h.html#aa9e1780c2ce777fc9a0d205b5769324b',1,'get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa9e1780c2ce777fc9a0d205b5769324b',1,'get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s): fftools_ffmpeg_opt.c']]], + ['get_5frotation_1822',['get_rotation',['../d7/dcc/fftools__cmdutils_8c.html#a907c42e3f98cc1183a8788033d0aaaf2',1,'get_rotation(AVStream *st): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2',1,'get_rotation(AVStream *st): fftools_cmdutils.c']]], + ['getalllogs_1823',['getAllLogs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aac9ea68506e6850c61129387e9267f8b',1,'ffmpegkit::AbstractSession::getAllLogs()'],['../d5/d0e/classffmpegkit_1_1_session.html#a5454b0181929ebe18efb4a14a776c396',1,'ffmpegkit::Session::getAllLogs()']]], + ['getalllogsasstring_1824',['getAllLogsAsString',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a45ae0bcffbc0941e69b504e8f9597509',1,'ffmpegkit::AbstractSession::getAllLogsAsString()'],['../d5/d0e/classffmpegkit_1_1_session.html#a07cac9cccb5c166fcc62e6f24e66bf81',1,'ffmpegkit::Session::getAllLogsAsString()']]], + ['getalllogsasstringwithtimeout_1825',['getAllLogsAsStringWithTimeout',['../d2/d41/classffmpegkit_1_1_abstract_session.html#adff747b9c88db9c08dcdba0998bfd4fd',1,'ffmpegkit::AbstractSession::getAllLogsAsStringWithTimeout()'],['../d5/d0e/classffmpegkit_1_1_session.html#a16fb68a703d240c6e0f24cb69e445f27',1,'ffmpegkit::Session::getAllLogsAsStringWithTimeout()']]], + ['getalllogswithtimeout_1826',['getAllLogsWithTimeout',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a8956c557d46197a5c9692493d9767039',1,'ffmpegkit::AbstractSession::getAllLogsWithTimeout()'],['../d5/d0e/classffmpegkit_1_1_session.html#a7a67c262c9ed675a12a78bceefa25905',1,'ffmpegkit::Session::getAllLogsWithTimeout()']]], + ['getallproperties_1827',['getAllProperties',['../d9/d9f/classffmpegkit_1_1_chapter.html#a170e52ca9bf97eb9aab0adda659962d2',1,'ffmpegkit::Chapter::getAllProperties()'],['../df/d06/classffmpegkit_1_1_media_information.html#a91df7abd5ecd4f5ab0fec89269007868',1,'ffmpegkit::MediaInformation::getAllProperties()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac246ef7534992f755753800f4c45e890',1,'ffmpegkit::StreamInformation::getAllProperties()']]], + ['getallstatistics_1828',['getAllStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a6fd4b901a5481bd14884154fdc68d2ba',1,'ffmpegkit::FFmpegSession']]], + ['getallstatisticswithtimeout_1829',['getAllStatisticsWithTimeout',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8b32a642cc207cd8c784bff3cb68ec00',1,'ffmpegkit::FFmpegSession']]], + ['getarch_1830',['getArch',['../d1/df7/classffmpegkit_1_1_arch_detect.html#aa8ec8ec6da18cda523df453b9fb3530c',1,'ffmpegkit::ArchDetect']]], + ['getarguments_1831',['getArguments',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ad64ef04aef27be8ff64610906e3f1a6b',1,'ffmpegkit::AbstractSession::getArguments()'],['../d5/d0e/classffmpegkit_1_1_session.html#ac8c565b60b800c2f53314a3b6ed0d076',1,'ffmpegkit::Session::getArguments()']]], + ['getaverageframerate_1832',['getAverageFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac27c84a91d6d06f446ac5f4afb4615aa',1,'ffmpegkit::StreamInformation']]], + ['getbitrate_1833',['getBitrate',['../df/d06/classffmpegkit_1_1_media_information.html#a16b41096a7dabcea735917890f11b64a',1,'ffmpegkit::MediaInformation::getBitrate()'],['../d0/de7/classffmpegkit_1_1_statistics.html#ac705739059ba21b388130969bd6716b6',1,'ffmpegkit::Statistics::getBitrate()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#af43fe6809a6703f41760313986f72d74',1,'ffmpegkit::StreamInformation::getBitrate()']]], + ['getbuilddate_1834',['getBuildDate',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae81bcfffeb93c5154d4234ba5a449eb8',1,'ffmpegkit::FFmpegKitConfig']]], + ['getchannellayout_1835',['getChannelLayout',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af7f8aea6ba889711fed371b6a9875f4b',1,'ffmpegkit::StreamInformation']]], + ['getchapters_1836',['getChapters',['../df/d06/classffmpegkit_1_1_media_information.html#a7daefcefb77c0aaead7fc053a73568ba',1,'ffmpegkit::MediaInformation']]], + ['getcodec_1837',['getCodec',['../d7/d9e/classffmpegkit_1_1_stream_information.html#afe7dcb620b1fac7770f9395540a6d25b',1,'ffmpegkit::StreamInformation']]], + ['getcodeclong_1838',['getCodecLong',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a9aea9264e39e25d72ccabf3ee6c1a06e',1,'ffmpegkit::StreamInformation']]], + ['getcodectimebase_1839',['getCodecTimeBase',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aef11514e2d044c1fe8e6518e64140284',1,'ffmpegkit::StreamInformation']]], + ['getcommand_1840',['getCommand',['../d2/d41/classffmpegkit_1_1_abstract_session.html#abbff9035abb4be844fdec3c1bb85ad7f',1,'ffmpegkit::AbstractSession::getCommand()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad0335e493390f541b3990955cf58effb',1,'ffmpegkit::Session::getCommand()']]], + ['getcompletecallback_1841',['getCompleteCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a72e8226c1f963444f293ca123649ad51',1,'ffmpegkit::FFmpegSession::getCompleteCallback()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a17a851c3339bc21065be607b4e37205c',1,'ffmpegkit::FFprobeSession::getCompleteCallback()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a907e4c65f883904788479e61471863e7',1,'ffmpegkit::MediaInformationSession::getCompleteCallback()']]], + ['getcreatetime_1842',['getCreateTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a6275bb3c30d03d2206592278185d42b4',1,'ffmpegkit::AbstractSession::getCreateTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad60dc768bc3ac021109788d699a3c02f',1,'ffmpegkit::Session::getCreateTime()']]], + ['getdisplayaspectratio_1843',['getDisplayAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aa2a4d991f5f5c6f0a351eda5c7996081',1,'ffmpegkit::StreamInformation']]], + ['getduration_1844',['getDuration',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2e6c6f9f02c25cd8b3094f3fb388a581',1,'ffmpegkit::AbstractSession::getDuration()'],['../df/d06/classffmpegkit_1_1_media_information.html#a1263766d0af68ee5cb518d2ec5f689b6',1,'ffmpegkit::MediaInformation::getDuration()'],['../d5/d0e/classffmpegkit_1_1_session.html#a2c29ba3c1d1e7cf98ad1cd33ccf80496',1,'ffmpegkit::Session::getDuration()']]], + ['getend_1845',['getEnd',['../d9/d9f/classffmpegkit_1_1_chapter.html#aa6d603dc178c14733e385e57575310d3',1,'ffmpegkit::Chapter']]], + ['getendtime_1846',['getEndTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a42c94094ebb152fd0dee322e28f1c832',1,'ffmpegkit::AbstractSession::getEndTime()'],['../d9/d9f/classffmpegkit_1_1_chapter.html#abe4ba956fd4fa6895e89cf2298a09fa5',1,'ffmpegkit::Chapter::getEndTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#aaf74622e964e402e86f86f2fc51516fd',1,'ffmpegkit::Session::getEndTime()']]], + ['getexternallibraries_1847',['getExternalLibraries',['../dd/dee/classffmpegkit_1_1_packages.html#ad4cb7153ab807db7950a740673155540',1,'ffmpegkit::Packages']]], + ['getfailstacktrace_1848',['getFailStackTrace',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ab2db6272ef27d49949107f1d7657cadc',1,'ffmpegkit::AbstractSession::getFailStackTrace()'],['../d5/d0e/classffmpegkit_1_1_session.html#a84d46f5c402e5513b73be1a044052894',1,'ffmpegkit::Session::getFailStackTrace()']]], + ['getffmpegsessioncompletecallback_1849',['getFFmpegSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aa9f1f3590db0b5e86fd4b4677e32077a',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffmpegsessions_1850',['getFFmpegSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ad344deabaab4618515cd45a5b24a66c9',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffmpegversion_1851',['getFFmpegVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae46ef5e084039fcbba1229a6df01f476',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffprobesessioncompletecallback_1852',['getFFprobeSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aac26e5373d4d6b4d01bbf6dd1954c102',1,'ffmpegkit::FFmpegKitConfig']]], + ['getffprobesessions_1853',['getFFprobeSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4f18e5d8e6e35cd7cd39298304daf20b',1,'ffmpegkit::FFmpegKitConfig']]], + ['getfilename_1854',['getFilename',['../df/d06/classffmpegkit_1_1_media_information.html#accaadfb31a5cdab63c3efe71af492268',1,'ffmpegkit::MediaInformation']]], + ['getformat_1855',['getFormat',['../df/d06/classffmpegkit_1_1_media_information.html#ac65be2b19adbc51ff4debe94281e0058',1,'ffmpegkit::MediaInformation::getFormat()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac12d2e1373a24c00686f6481b7c91eac',1,'ffmpegkit::StreamInformation::getFormat()']]], + ['getheight_1856',['getHeight',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a4c356504dc80666b204499e493afaaa3',1,'ffmpegkit::StreamInformation']]], + ['getid_1857',['getId',['../d9/d9f/classffmpegkit_1_1_chapter.html#ad06d908c0e64bfd2368ed62f257efc43',1,'ffmpegkit::Chapter']]], + ['getindex_1858',['getIndex',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a18ef5d6ecef3763d0614a3fc7a8967d9',1,'ffmpegkit::StreamInformation']]], + ['getlastcompletedsession_1859',['getLastCompletedSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aae61aa578905dee229d78885f49c4723',1,'ffmpegkit::FFmpegKitConfig']]], + ['getlastreceivedstatistics_1860',['getLastReceivedStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a8793e8ef7fad7c9652ad067da2b14c58',1,'ffmpegkit::FFmpegSession']]], + ['getlastsession_1861',['getLastSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a33d369d906baa4e54f388c37ea0fb833',1,'ffmpegkit::FFmpegKitConfig']]], + ['getlevel_1862',['getLevel',['../db/d1c/classffmpegkit_1_1_log.html#a270dab112d0cee844ca0f44e862d6869',1,'ffmpegkit::Log']]], + ['getlogcallback_1863',['getLogCallback',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a5c293803198b3a3aa137efc80bcbf7ab',1,'ffmpegkit::AbstractSession::getLogCallback()'],['../d5/d0e/classffmpegkit_1_1_session.html#a8f53bebf7a57af94915b55d0ed843f2e',1,'ffmpegkit::Session::getLogCallback()']]], + ['getlogdata_1864',['getLogData',['../d5/d18/class_callback_data.html#a4e28ab4aeffa4b298cf1f5176803de5f',1,'CallbackData']]], + ['getloglevel_1865',['getLogLevel',['../d5/d18/class_callback_data.html#acaf74ab1a753455e368d35336601913b',1,'CallbackData::getLogLevel()'],['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a698a6084ff38d14a4b9a05c06240dc61',1,'ffmpegkit::FFmpegKitConfig::getLogLevel()']]], + ['getlogredirectionstrategy_1866',['getLogRedirectionStrategy',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae123c336330266b34a01da81c7b9b0bb',1,'ffmpegkit::AbstractSession::getLogRedirectionStrategy()'],['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4dbd1586599e260e97dccffa875872fd',1,'ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()'],['../d5/d0e/classffmpegkit_1_1_session.html#a279d6f2564448ff711d03401fd1e18ba',1,'ffmpegkit::Session::getLogRedirectionStrategy()']]], + ['getlogs_1867',['getLogs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#adf48bfff50be8766d896a718ae3c7102',1,'ffmpegkit::AbstractSession::getLogs()'],['../d5/d0e/classffmpegkit_1_1_session.html#a5121d4443a1d5cb048c3433d8743fcd0',1,'ffmpegkit::Session::getLogs()']]], + ['getlogsasstring_1868',['getLogsAsString',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a2a8031eeb92a9857cc8c8273b80d6d9e',1,'ffmpegkit::AbstractSession::getLogsAsString()'],['../d5/d0e/classffmpegkit_1_1_session.html#ac710f753ff41150e149f30108a6a9902',1,'ffmpegkit::Session::getLogsAsString()']]], + ['getlongformat_1869',['getLongFormat',['../df/d06/classffmpegkit_1_1_media_information.html#a65e50fd4b3bdf79a9230ea38f6c6121f',1,'ffmpegkit::MediaInformation']]], + ['getmaxrss_1870',['getmaxrss',['../d7/d48/fftools__ffmpeg_8c.html#a5be8624c1f375fb6ad9bd97bcc05f898',1,'fftools_ffmpeg.c']]], + ['getmediainformation_1871',['getMediaInformation',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a4209a1e1730019b6e59f6fbd08d5604c',1,'ffmpegkit::FFprobeKit::getMediaInformation(const std::string path)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a71cd562f26f7552685745dd233994483',1,'ffmpegkit::FFprobeKit::getMediaInformation(const std::string path, const int waitTimeout)'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a873ee7cac5b463ef1afd5b5c15859033',1,'ffmpegkit::MediaInformationSession::getMediaInformation()']]], + ['getmediainformationasync_1872',['getMediaInformationAsync',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#afe71f0fd406cca0049f79e92948a281b',1,'ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback)'],['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a5297c7a1732d87a8da9232bbf62cddf4',1,'ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout)']]], + ['getmediainformationexecute_1873',['getMediaInformationExecute',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a7a5113b2ea8715b29dfc31d867422f07',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediainformationfromcommand_1874',['getMediaInformationFromCommand',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a6854d0a8008dc27f59d02f4b43e753ec',1,'ffmpegkit::FFprobeKit']]], + ['getmediainformationsessioncompletecallback_1875',['getMediaInformationSessionCompleteCallback',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#afb324ff63f1c7fde24b48f8e150735c5',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediainformationsessions_1876',['getMediaInformationSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a145b6d196a005442878be12f003421af',1,'ffmpegkit::FFmpegKitConfig']]], + ['getmediaproperties_1877',['getMediaProperties',['../df/d06/classffmpegkit_1_1_media_information.html#a3437f117b3a206535730514738d27259',1,'ffmpegkit::MediaInformation']]], + ['getmessage_1878',['getMessage',['../db/d1c/classffmpegkit_1_1_log.html#a62537032ac22b577790d0fd65d94229f',1,'ffmpegkit::Log']]], + ['getnumberproperty_1879',['getNumberProperty',['../d9/d9f/classffmpegkit_1_1_chapter.html#a1427eb42943904d75f264006798ab1fa',1,'ffmpegkit::Chapter::getNumberProperty()'],['../df/d06/classffmpegkit_1_1_media_information.html#ac720cbde6de30ba47507dea0200bb04e',1,'ffmpegkit::MediaInformation::getNumberProperty()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a19d79ecbcd7eef198a01874854774768',1,'ffmpegkit::StreamInformation::getNumberProperty()']]], + ['getoutput_1880',['getOutput',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4c0bf6d0eefd029d9c077dd04b557e20',1,'ffmpegkit::AbstractSession::getOutput()'],['../d5/d0e/classffmpegkit_1_1_session.html#a3132ed21a2856ccea1bc53f13747b9d1',1,'ffmpegkit::Session::getOutput()']]], + ['getpackagename_1881',['getPackageName',['../dd/dee/classffmpegkit_1_1_packages.html#a1903c222baa302b49faeccfc8afc0e59',1,'ffmpegkit::Packages']]], + ['getproperties_1882',['getProperties',['../d9/d9f/classffmpegkit_1_1_chapter.html#a59a64e4ac36c20bf3869ec42df2cdefe',1,'ffmpegkit::Chapter::getProperties()'],['../df/d06/classffmpegkit_1_1_media_information.html#a175a800908b60d1c2ed5c04aa1eb13f0',1,'ffmpegkit::MediaInformation::getProperties()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a88de2af97e8e28ac01715d10276d1d93',1,'ffmpegkit::StreamInformation::getProperties()']]], + ['getrealframerate_1883',['getRealFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aaad42c352be412be5cffe5e5b61fd30e',1,'ffmpegkit::StreamInformation']]], + ['getreturncode_1884',['getReturnCode',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a831bba85f9e0f0011e0ef2a5a0416b05',1,'ffmpegkit::AbstractSession::getReturnCode()'],['../d5/d0e/classffmpegkit_1_1_session.html#a6e787ead46a84f3e253aa0254c8c1f3c',1,'ffmpegkit::Session::getReturnCode()']]], + ['getsampleaspectratio_1885',['getSampleAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a65524aca33aff405286898b3ad9a552d',1,'ffmpegkit::StreamInformation']]], + ['getsampleformat_1886',['getSampleFormat',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a36540718a572460afa0f90eff96abbe1',1,'ffmpegkit::StreamInformation']]], + ['getsamplerate_1887',['getSampleRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a78bb76541dea78dab575ce8adc5d0e03',1,'ffmpegkit::StreamInformation']]], + ['getsession_1888',['getSession',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a73cc75ec0760d8937a2e94615576556d',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionhistorysize_1889',['getSessionHistorySize',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a2c531daca0d3c849a7c544b3cd846a09',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionid_1890',['getSessionId',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a3053747e2f546263d68dbdd698f7234b',1,'ffmpegkit::AbstractSession::getSessionId()'],['../d5/d18/class_callback_data.html#afb7cbdb5349d1ffea250bfc08213514a',1,'CallbackData::getSessionId()'],['../db/d1c/classffmpegkit_1_1_log.html#a4cb644f8a9e4c39e94811d59f4a8e8e8',1,'ffmpegkit::Log::getSessionId()'],['../d5/d0e/classffmpegkit_1_1_session.html#a8cc37ef959603974566a41bf8b350afd',1,'ffmpegkit::Session::getSessionId()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a53301a783bcc852889308575d91b7d6c',1,'ffmpegkit::Statistics::getSessionId()']]], + ['getsessions_1891',['getSessions',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ae4f3b63d47826b18765517bec9109c3a',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsessionsbystate_1892',['getSessionsByState',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a83149b18d46a1b264c5f2ca3aab802a4',1,'ffmpegkit::FFmpegKitConfig']]], + ['getsize_1893',['getSize',['../df/d06/classffmpegkit_1_1_media_information.html#a7b31540e51abbdd9a4138854c4a575ca',1,'ffmpegkit::MediaInformation::getSize()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a420280eb09a90c318e0a2d154a155424',1,'ffmpegkit::Statistics::getSize()']]], + ['getspeed_1894',['getSpeed',['../d0/de7/classffmpegkit_1_1_statistics.html#a795fd05741ec99b38ab2bf414a7ce5f5',1,'ffmpegkit::Statistics']]], + ['getstart_1895',['getStart',['../d9/d9f/classffmpegkit_1_1_chapter.html#a76874b4f2586039dc9ee7bbea5b547fa',1,'ffmpegkit::Chapter']]], + ['getstarttime_1896',['getStartTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aaffadb42d205ff5df0f03e32f190d01d',1,'ffmpegkit::AbstractSession::getStartTime()'],['../d9/d9f/classffmpegkit_1_1_chapter.html#a136f984b2c6e87099986ec37774fffed',1,'ffmpegkit::Chapter::getStartTime()'],['../df/d06/classffmpegkit_1_1_media_information.html#a414c9d22ead16701f3b874b8163719da',1,'ffmpegkit::MediaInformation::getStartTime()'],['../d5/d0e/classffmpegkit_1_1_session.html#a37d0fefa1af768293efbb27cb6f3b963',1,'ffmpegkit::Session::getStartTime()']]], + ['getstate_1897',['getState',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ac09abdfa6ca35b9e47c63e91051e2dd6',1,'ffmpegkit::AbstractSession::getState()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad4975f0b84898dbf73a2d735dc9fed41',1,'ffmpegkit::Session::getState()']]], + ['getstatistics_1898',['getStatistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#ad4ae61e0493f1f78b409c37eda4839b0',1,'ffmpegkit::FFmpegSession']]], + ['getstatisticsbitrate_1899',['getStatisticsBitrate',['../d5/d18/class_callback_data.html#aa8c015ca125f12e88b25c319b8f717a3',1,'CallbackData']]], + ['getstatisticscallback_1900',['getStatisticsCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a1d51f396704a25191ce6b9d2f8099e78',1,'ffmpegkit::FFmpegSession']]], + ['getstatisticsfps_1901',['getStatisticsFps',['../d5/d18/class_callback_data.html#add9e5cd3ecc037c98d99bdc7ce5c90d0',1,'CallbackData']]], + ['getstatisticsframenumber_1902',['getStatisticsFrameNumber',['../d5/d18/class_callback_data.html#a7f3e53ac431208a02a350c083fb725ba',1,'CallbackData']]], + ['getstatisticsquality_1903',['getStatisticsQuality',['../d5/d18/class_callback_data.html#a2be0d8fc9397a173bd47694ae766714e',1,'CallbackData']]], + ['getstatisticssize_1904',['getStatisticsSize',['../d5/d18/class_callback_data.html#a8c52fa5e18231fc95cc18b29463b236a',1,'CallbackData']]], + ['getstatisticsspeed_1905',['getStatisticsSpeed',['../d5/d18/class_callback_data.html#a515dceae6c3219c64c7c329d2a8ac6aa',1,'CallbackData']]], + ['getstatisticstime_1906',['getStatisticsTime',['../d5/d18/class_callback_data.html#ab9dbf9c19854fc85f37bd35c6019bf8f',1,'CallbackData']]], + ['getstreams_1907',['getStreams',['../df/d06/classffmpegkit_1_1_media_information.html#a527a348cb1a4c937d271674f047bdd3c',1,'ffmpegkit::MediaInformation']]], + ['getstringproperty_1908',['getStringProperty',['../d9/d9f/classffmpegkit_1_1_chapter.html#ae7290f1d87ae0e83d7e6ba0bae0a7810',1,'ffmpegkit::Chapter::getStringProperty()'],['../df/d06/classffmpegkit_1_1_media_information.html#a883a9eb9b1869bbac4dacea2cdbae5b0',1,'ffmpegkit::MediaInformation::getStringProperty()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a90c8ddcbf98d3c0114bc970fcec97faf',1,'ffmpegkit::StreamInformation::getStringProperty()']]], + ['gettags_1909',['getTags',['../d9/d9f/classffmpegkit_1_1_chapter.html#afd452a2bad4365301caa2f4505021eb9',1,'ffmpegkit::Chapter::getTags()'],['../df/d06/classffmpegkit_1_1_media_information.html#ae2e96b613cb56cfdbfa5ab7ad916cc22',1,'ffmpegkit::MediaInformation::getTags()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a69f85bf5a51df2e9256ab38da05dcb00',1,'ffmpegkit::StreamInformation::getTags()']]], + ['gettime_1910',['getTime',['../d0/de7/classffmpegkit_1_1_statistics.html#a0421bb26e547add2f0e757ed41e00dc8',1,'ffmpegkit::Statistics']]], + ['gettimebase_1911',['getTimeBase',['../d9/d9f/classffmpegkit_1_1_chapter.html#ae7a7355ceb87873dba1061a4284b40b6',1,'ffmpegkit::Chapter::getTimeBase()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#ac1e1c074c81d957dd733edf2d4c648ba',1,'ffmpegkit::StreamInformation::getTimeBase()']]], + ['gettype_1912',['getType',['../d5/d18/class_callback_data.html#acf586114d95611c797323c3a6da4fb1c',1,'CallbackData::getType()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a14c329ea3d29c8a7fee5f65c1249af47',1,'ffmpegkit::StreamInformation::getType()']]], + ['getvalue_1913',['getValue',['../d4/dcf/classffmpegkit_1_1_return_code.html#abff20bc1b0baa824985f648db5a02277',1,'ffmpegkit::ReturnCode']]], + ['getversion_1914',['getVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a0c93081c2b97ba3f8440ea1ab28b7953',1,'ffmpegkit::FFmpegKitConfig']]], + ['getvideofps_1915',['getVideoFps',['../d0/de7/classffmpegkit_1_1_statistics.html#a716e9a4224e4df7d198c5d823217299f',1,'ffmpegkit::Statistics']]], + ['getvideoframenumber_1916',['getVideoFrameNumber',['../d0/de7/classffmpegkit_1_1_statistics.html#a601e49918576def99a353fa6ef465591',1,'ffmpegkit::Statistics']]], + ['getvideoquality_1917',['getVideoQuality',['../d0/de7/classffmpegkit_1_1_statistics.html#a7a6b16aec34a2ba318bdb82e8fa8d824',1,'ffmpegkit::Statistics']]], + ['getwidth_1918',['getWidth',['../d7/d9e/classffmpegkit_1_1_stream_information.html#abbf574198e5b668db49b9c859bffcad2',1,'ffmpegkit::StreamInformation']]], + ['got_5feagain_1919',['got_eagain',['../d7/d48/fftools__ffmpeg_8c.html#a94a52b0309bc05208e547d00c4ad3cba',1,'fftools_ffmpeg.c']]], + ['grow_5farray_1920',['GROW_ARRAY',['../d2/d36/fftools__ffmpeg__filter_8c.html#a524d36d95eb785bd247fc9537eb24df5',1,'GROW_ARRAY(fg->outputs, fg->nb_outputs): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#aacde78ff027dc6373a8306ed6e4ad573',1,'GROW_ARRAY(ist->filters, ist->nb_filters): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a6ed214ceef0ba03c6a2b957381f5c4da',1,'GROW_ARRAY(filtergraphs, nb_filtergraphs): fftools_ffmpeg_filter.c'],['../d7/dcc/fftools__cmdutils_8c.html#a5a234190bf25a47320f57fd5ba9cea6a',1,'grow_array(void *array, int elem_size, int *size, int new_size): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a5a234190bf25a47320f57fd5ba9cea6a',1,'grow_array(void *array, int elem_size, int *size, int new_size): fftools_cmdutils.c']]], + ['guess_5finput_5fchannel_5flayout_1921',['guess_input_channel_layout',['../d7/d48/fftools__ffmpeg_8c.html#a2c6d81c909bf3abbf4685cfadd458a87',1,'guess_input_channel_layout(InputStream *ist): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2c6d81c909bf3abbf4685cfadd458a87',1,'guess_input_channel_layout(InputStream *ist): fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_7.html b/docs/linux/html/search/functions_7.html new file mode 100644 index 0000000..7de3106 --- /dev/null +++ b/docs/linux/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_7.js b/docs/linux/html/search/functions_7.js new file mode 100644 index 0000000..b74cc7f --- /dev/null +++ b/docs/linux/html/search/functions_7.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['hw_5fdevice_5fadd_1922',['hw_device_add',['../d1/dba/fftools__ffmpeg__hw_8c.html#a27d1714061bcef2cc6c6ef59c2b54bd3',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fdefault_5fname_1923',['hw_device_default_name',['../d1/dba/fftools__ffmpeg__hw_8c.html#a2ff6a6bf8a6713b6d9218d5ad537e72b',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5ffree_5fall_1924',['hw_device_free_all',['../d7/db3/fftools__ffmpeg_8h.html#a7b352c0afc44da703891d7538bbcf737',1,'hw_device_free_all(void): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a7b352c0afc44da703891d7538bbcf737',1,'hw_device_free_all(void): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fget_5fby_5fname_1925',['hw_device_get_by_name',['../d7/db3/fftools__ffmpeg_8h.html#ae46735072274c02ae8a17b80b8faa4dd',1,'hw_device_get_by_name(const char *name): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#ae46735072274c02ae8a17b80b8faa4dd',1,'hw_device_get_by_name(const char *name): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fget_5fby_5ftype_1926',['hw_device_get_by_type',['../d1/dba/fftools__ffmpeg__hw_8c.html#ae9e48d5142d26822d8e0c5170248df02',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5finit_5ffrom_5fstring_1927',['hw_device_init_from_string',['../d7/db3/fftools__ffmpeg_8h.html#ad60c6eadc7b29c15236419760b2e0094',1,'hw_device_init_from_string(const char *arg, HWDevice **dev): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a3fdd5667b2f22f69baa2f711b13537fb',1,'hw_device_init_from_string(const char *arg, HWDevice **dev_out): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5finit_5ffrom_5ftype_1928',['hw_device_init_from_type',['../d1/dba/fftools__ffmpeg__hw_8c.html#ac2df78054133e8e90276b1d12af466da',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fmatch_5fby_5fcodec_1929',['hw_device_match_by_codec',['../d1/dba/fftools__ffmpeg__hw_8c.html#af9f7b75f708b69b75bf8ca4e980114af',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5fdecode_1930',['hw_device_setup_for_decode',['../d7/db3/fftools__ffmpeg_8h.html#a77e8d12a4bdb9110a2d815b9aa5f8d02',1,'hw_device_setup_for_decode(InputStream *ist): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a77e8d12a4bdb9110a2d815b9aa5f8d02',1,'hw_device_setup_for_decode(InputStream *ist): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5fencode_1931',['hw_device_setup_for_encode',['../d7/db3/fftools__ffmpeg_8h.html#a01128ebf95f6a3b130f446b13b171c52',1,'hw_device_setup_for_encode(OutputStream *ost): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a01128ebf95f6a3b130f446b13b171c52',1,'hw_device_setup_for_encode(OutputStream *ost): fftools_ffmpeg_hw.c']]], + ['hw_5fdevice_5fsetup_5ffor_5ffilter_1932',['hw_device_setup_for_filter',['../d7/db3/fftools__ffmpeg_8h.html#a801831a4517a8db980bbf18c6db58cad',1,'hw_device_setup_for_filter(FilterGraph *fg): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a801831a4517a8db980bbf18c6db58cad',1,'hw_device_setup_for_filter(FilterGraph *fg): fftools_ffmpeg_hw.c']]], + ['hwaccel_5fdecode_5finit_1933',['hwaccel_decode_init',['../d7/db3/fftools__ffmpeg_8h.html#a518f7a9a1bd1b5544a39fdbd1d925663',1,'hwaccel_decode_init(AVCodecContext *avctx): fftools_ffmpeg_hw.c'],['../d1/dba/fftools__ffmpeg__hw_8c.html#a518f7a9a1bd1b5544a39fdbd1d925663',1,'hwaccel_decode_init(AVCodecContext *avctx): fftools_ffmpeg_hw.c']]], + ['hwaccel_5fretrieve_5fdata_1934',['hwaccel_retrieve_data',['../d1/dba/fftools__ffmpeg__hw_8c.html#a5a881e2fd908765c2df11400a6c0c7d9',1,'fftools_ffmpeg_hw.c']]] +]; diff --git a/docs/linux/html/search/functions_8.html b/docs/linux/html/search/functions_8.html new file mode 100644 index 0000000..7422be2 --- /dev/null +++ b/docs/linux/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_8.js b/docs/linux/html/search/functions_8.js new file mode 100644 index 0000000..68d4a91 --- /dev/null +++ b/docs/linux/html/search/functions_8.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['if_1935',['if',['../d2/d36/fftools__ffmpeg__filter_8c.html#ab505e1817b7afc70dafeb97efb0b9b30',1,'if(!fg) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a28f43fe53e0defac04de32a9cdf0fcc7',1,'if(!(fg->outputs[0]=av_mallocz(sizeof(*fg->outputs[0])))) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#ac0d3021e0385614141d0102b205f748d',1,'if(!(fg->inputs[0]=av_mallocz(sizeof(*fg->inputs[0])))) exit_program(1): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a711f54c589361ec8c3c0ba6a3dac5553',1,'if(!fg->inputs[0]->frame_queue) exit_program(1): fftools_ffmpeg_filter.c']]], + ['ifilter_5fhas_5fall_5finput_5fformats_1936',['ifilter_has_all_input_formats',['../d7/d48/fftools__ffmpeg_8c.html#abe27a2d9d065be49e6580984bfe80639',1,'fftools_ffmpeg.c']]], + ['ifilter_5fparameters_5ffrom_5fcodecpar_1937',['ifilter_parameters_from_codecpar',['../d7/d48/fftools__ffmpeg_8c.html#af46fcadeb44ca81755a251c59bd3d78f',1,'fftools_ffmpeg.c']]], + ['ifilter_5fparameters_5ffrom_5fframe_1938',['ifilter_parameters_from_frame',['../d7/db3/fftools__ffmpeg_8h.html#a0e8b6e753bb0f299b554d18f3589944a',1,'ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a0e8b6e753bb0f299b554d18f3589944a',1,'ifilter_parameters_from_frame(InputFilter *ifilter, const AVFrame *frame): fftools_ffmpeg_filter.c']]], + ['ifilter_5fsend_5feof_1939',['ifilter_send_eof',['../d7/d48/fftools__ffmpeg_8c.html#af6db4eeaee5d848f75aebb60927cc9d4',1,'fftools_ffmpeg.c']]], + ['ifilter_5fsend_5fframe_1940',['ifilter_send_frame',['../d7/d48/fftools__ffmpeg_8c.html#a7327043132cd8fc6043a82eb04a375a1',1,'fftools_ffmpeg.c']]], + ['ignoresignal_1941',['ignoreSignal',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#aaa5681c6fbc9ff144f78d0f6d1febcd7',1,'ffmpegkit::FFmpegKitConfig']]], + ['ini_5fescape_5fstr_1942',['ini_escape_str',['../d8/d78/fftools__ffprobe_8c.html#ad51c8cc0f7f0800595fc06e1a4f96eda',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fint_1943',['ini_print_int',['../d8/d78/fftools__ffprobe_8c.html#a14b1c0b1907a1585879c8364d79993fd',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fsection_5fheader_1944',['ini_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#a67b79e7e7cd22f7088d81033d62bca46',1,'fftools_ffprobe.c']]], + ['ini_5fprint_5fstr_1945',['ini_print_str',['../d8/d78/fftools__ffprobe_8c.html#a0ee2c507882ae31e92c01dff25f14393',1,'fftools_ffprobe.c']]], + ['init_5fcomplex_5ffiltergraph_1946',['init_complex_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#afdeaca7898e15c0cb645228fd5bb9184',1,'init_complex_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#afdeaca7898e15c0cb645228fd5bb9184',1,'init_complex_filtergraph(FilterGraph *fg): fftools_ffmpeg_filter.c']]], + ['init_5fcomplex_5ffilters_1947',['init_complex_filters',['../d7/db3/fftools__ffmpeg_8h.html#a7ff9fc15df210f9a62862e23e6a18d70',1,'init_complex_filters(void): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ff9fc15df210f9a62862e23e6a18d70',1,'init_complex_filters(void): fftools_ffmpeg_opt.c']]], + ['init_5fdynload_1948',['init_dynload',['../d7/dcc/fftools__cmdutils_8c.html#a0f4db71e6407040a01316c537db5040c',1,'init_dynload(void): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c',1,'init_dynload(void): fftools_cmdutils.c']]], + ['init_5fencoder_5ftime_5fbase_1949',['init_encoder_time_base',['../d7/d48/fftools__ffmpeg_8c.html#af347e179754a8ebece457e4a9985717b',1,'fftools_ffmpeg.c']]], + ['init_5finput_5ffilter_1950',['init_input_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#a68aafc55c81956dab85081fbdc12dec6',1,'fftools_ffmpeg_filter.c']]], + ['init_5finput_5fstream_1951',['init_input_stream',['../d7/d48/fftools__ffmpeg_8c.html#a2b55a894aa10247fb5d5e065bc1b1655',1,'fftools_ffmpeg.c']]], + ['init_5foptions_1952',['init_options',['../d7/db3/fftools__ffmpeg_8h.html#ae65e836132b235a3c7dbc7bd00b35d54',1,'init_options(OptionsContext *o): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae65e836132b235a3c7dbc7bd00b35d54',1,'init_options(OptionsContext *o): fftools_ffmpeg_opt.c']]], + ['init_5fopts_1953',['init_opts',['../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a',1,'fftools_cmdutils.h']]], + ['init_5foutput_5fbsfs_1954',['init_output_bsfs',['../d7/d48/fftools__ffmpeg_8c.html#a433b8659111b2f6ae74ab1fa29445f2c',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5ffilter_1955',['init_output_filter',['../d7/db3/fftools__ffmpeg_8h.html#aab8ea01d3694d9b0e70b09a5f1f386e4',1,'init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aab8ea01d3694d9b0e70b09a5f1f386e4',1,'init_output_filter(OutputFilter *ofilter, OptionsContext *o, AVFormatContext *oc): fftools_ffmpeg_opt.c']]], + ['init_5foutput_5fstream_1956',['init_output_stream',['../d7/d48/fftools__ffmpeg_8c.html#a906f8498cdec75ab84457f6b929115c6',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fencode_1957',['init_output_stream_encode',['../d7/d48/fftools__ffmpeg_8c.html#a44476e48d5e06f4ee53c6e2fdbb62ca0',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fstreamcopy_1958',['init_output_stream_streamcopy',['../d7/d48/fftools__ffmpeg_8c.html#ac6e13f95a03d441765f0e4645cc8cf7e',1,'fftools_ffmpeg.c']]], + ['init_5foutput_5fstream_5fwrapper_1959',['init_output_stream_wrapper',['../d7/d48/fftools__ffmpeg_8c.html#a6fed1803386760e0d661709f2d199673',1,'fftools_ffmpeg.c']]], + ['init_5fparse_5fcontext_1960',['init_parse_context',['../d7/dcc/fftools__cmdutils_8c.html#a64b3f85793c74c02a8f0ba9148e788c5',1,'fftools_cmdutils.c']]], + ['init_5freport_1961',['init_report',['../d7/dcc/fftools__cmdutils_8c.html#af0097496b83f2029f059d317c97392f3',1,'fftools_cmdutils.c']]], + ['init_5fsimple_5ffiltergraph_1962',['init_simple_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#a82f6df78dc4d5a93f9708b27f16de2b5',1,'fftools_ffmpeg.h']]], + ['insert_5ffilter_1963',['insert_filter',['../d2/d36/fftools__ffmpeg__filter_8c.html#add10aa9fae87dc2259bc821b29dee0f8',1,'fftools_ffmpeg_filter.c']]], + ['insert_5ftrim_1964',['insert_trim',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9464282dd90b2de622c38126485d1a80',1,'fftools_ffmpeg_filter.c']]], + ['is_5fdevice_1965',['is_device',['../d7/dcc/fftools__cmdutils_8c.html#adc5954c85a43ad60fd2cdb356c25e3d7',1,'fftools_cmdutils.c']]], + ['iscancel_1966',['isCancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a3b5cad4e0b089084501753789d7aabac',1,'ffmpegkit::ReturnCode']]], + ['isffmpeg_1967',['isFFmpeg',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1de92273a4f99fd1afd1333845a50081',1,'ffmpegkit::AbstractSession::isFFmpeg()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a775982f92212bb2a5d9a94f7c2f00c10',1,'ffmpegkit::FFmpegSession::isFFmpeg()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a150f7a4f5f196a3b65433cfb73ed36d4',1,'ffmpegkit::FFprobeSession::isFFmpeg()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a8564e2ec6735cb868c6d78dbc33554f5',1,'ffmpegkit::MediaInformationSession::isFFmpeg()'],['../d5/d0e/classffmpegkit_1_1_session.html#ad4f761bdc94926fb9ec97f21d2a7df02',1,'ffmpegkit::Session::isFFmpeg()']]], + ['isffprobe_1968',['isFFprobe',['../d2/d41/classffmpegkit_1_1_abstract_session.html#afcd5ca2f7f654ca06feaef2de3993a34',1,'ffmpegkit::AbstractSession::isFFprobe()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a241bdf03cea442fb29261ff64763faac',1,'ffmpegkit::FFmpegSession::isFFprobe()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a23da7c24a487747ee61ab0836fb8428c',1,'ffmpegkit::FFprobeSession::isFFprobe()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#aa95a1267abc565c3ffc3163085805cdf',1,'ffmpegkit::MediaInformationSession::isFFprobe()'],['../d5/d0e/classffmpegkit_1_1_session.html#a2486e9f904b06d9eae1a4a8a047c22ff',1,'ffmpegkit::Session::isFFprobe()']]], + ['isltsbuild_1969',['isLTSBuild',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ac25bdbe25218002b4cd5e1a3dc2a1d13',1,'ffmpegkit::FFmpegKitConfig']]], + ['ismediainformation_1970',['isMediaInformation',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae7d0123e0b30a1adb727bdf2173d3313',1,'ffmpegkit::AbstractSession::isMediaInformation()'],['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#acb5ae95c41830a8cd38b989979c42bc1',1,'ffmpegkit::FFmpegSession::isMediaInformation()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#a17e2678ef159b9e764842d5540b20f89',1,'ffmpegkit::FFprobeSession::isMediaInformation()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#adb9c1dc1d62ca03a7474c9ace6e9fa89',1,'ffmpegkit::MediaInformationSession::isMediaInformation()'],['../d5/d0e/classffmpegkit_1_1_session.html#abf6734f48296077fd8a7644960c2e08b',1,'ffmpegkit::Session::isMediaInformation()']]], + ['issuccess_1971',['isSuccess',['../d4/dcf/classffmpegkit_1_1_return_code.html#a8b7899aaf19e2cbc2bde14ae687f268b',1,'ffmpegkit::ReturnCode']]], + ['ist_5fin_5ffiltergraph_1972',['ist_in_filtergraph',['../d7/db3/fftools__ffmpeg_8h.html#a907a40c8c03e3a392e13da4ac4d74453',1,'fftools_ffmpeg.h']]], + ['isvaluecancel_1973',['isValueCancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a5d2459eff24cb4ededa0b6256d1697b9',1,'ffmpegkit::ReturnCode']]], + ['isvalueerror_1974',['isValueError',['../d4/dcf/classffmpegkit_1_1_return_code.html#a2d59d53262a3aff0dfbd02183598f7df',1,'ffmpegkit::ReturnCode']]], + ['isvaluesuccess_1975',['isValueSuccess',['../d4/dcf/classffmpegkit_1_1_return_code.html#aa1feaa2bbfa730b1b9850a9d712e3ea0',1,'ffmpegkit::ReturnCode']]] +]; diff --git a/docs/linux/html/search/functions_9.html b/docs/linux/html/search/functions_9.html new file mode 100644 index 0000000..befd4fa --- /dev/null +++ b/docs/linux/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_9.js b/docs/linux/html/search/functions_9.js new file mode 100644 index 0000000..f44c5cb --- /dev/null +++ b/docs/linux/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['json_5fescape_5fstr_1976',['json_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a22074d8436f247bb35e365f99f40c93d',1,'fftools_ffprobe.c']]], + ['json_5finit_1977',['json_init',['../d8/d78/fftools__ffprobe_8c.html#a1f10ae6402c08dd0e9cbee4f6f3b7ac1',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fint_1978',['json_print_int',['../d8/d78/fftools__ffprobe_8c.html#a67e3a50677ee0b8f41025a26f7e2cff3',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fitem_5fstr_1979',['json_print_item_str',['../d8/d78/fftools__ffprobe_8c.html#a5dec917109d895dbfc12fe1201220cc3',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fsection_5ffooter_1980',['json_print_section_footer',['../d8/d78/fftools__ffprobe_8c.html#a2e666bda924feac07dfb8fa91b53f374',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fsection_5fheader_1981',['json_print_section_header',['../d8/d78/fftools__ffprobe_8c.html#ae3deeea42ed4991391f2f8c4663bfd5d',1,'fftools_ffprobe.c']]], + ['json_5fprint_5fstr_1982',['json_print_str',['../d8/d78/fftools__ffprobe_8c.html#ab417d52a4e3ba43e32c41ae29b89395d',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_a.html b/docs/linux/html/search/functions_a.html new file mode 100644 index 0000000..a81e963 --- /dev/null +++ b/docs/linux/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_a.js b/docs/linux/html/search/functions_a.js new file mode 100644 index 0000000..f64a068 --- /dev/null +++ b/docs/linux/html/search/functions_a.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['listffprobesessions_1983',['listFFprobeSessions',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#aec0c1a0ef90a48f8e51630dfd77da6ce',1,'ffmpegkit::FFprobeKit']]], + ['listmediainformationsessions_1984',['listMediaInformationSessions',['../df/d3f/classffmpegkit_1_1_f_fprobe_kit.html#a3407c34719eee4dbfe76340c856ce691',1,'ffmpegkit::FFprobeKit']]], + ['listsessions_1985',['listSessions',['../db/d71/classffmpegkit_1_1_f_fmpeg_kit.html#a77729f9b4d54caa00602be422a4c0fa9',1,'ffmpegkit::FFmpegKit']]], + ['locate_5foption_1986',['locate_option',['../d7/dcc/fftools__cmdutils_8c.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb',1,'locate_option(int argc, char **argv, const OptionDef *options, const char *optname): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb',1,'locate_option(int argc, char **argv, const OptionDef *options, const char *optname): fftools_cmdutils.c']]], + ['log_1987',['Log',['../db/d1c/classffmpegkit_1_1_log.html#afa85b789f60074a47bb21005f788f1e2',1,'ffmpegkit::Log']]], + ['log_5fcallback_1988',['log_callback',['../d8/d78/fftools__ffprobe_8c.html#a036ce6396284db04f4ce560e2b92b89b',1,'fftools_ffprobe.c']]], + ['log_5fcallback_5fhelp_1989',['log_callback_help',['../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2',1,'fftools_cmdutils.h']]], + ['log_5fcallback_5fnull_1990',['log_callback_null',['../d7/d48/fftools__ffmpeg_8c.html#a79c04bfda90dc3b1887eeb43dd05a075',1,'fftools_ffmpeg.c']]], + ['log_5fcallback_5freport_1991',['log_callback_report',['../d7/dcc/fftools__cmdutils_8c.html#ac1543a3e6957a77715b9dd49e9f264f5',1,'fftools_cmdutils.c']]], + ['log_5fread_5finterval_1992',['log_read_interval',['../d8/d78/fftools__ffprobe_8c.html#a959b3207d76ed78281feeec3d1b990b0',1,'fftools_ffprobe.c']]], + ['logcallbackdataadd_1993',['logCallbackDataAdd',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a3905ca459cdb59e362e6a549a9bcdbd8',1,'FFmpegKitConfig.cpp']]], + ['logleveltostring_1994',['logLevelToString',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#ada26e691d38c8bfa840ed820aebe76c7',1,'ffmpegkit::FFmpegKitConfig']]] +]; diff --git a/docs/linux/html/search/functions_b.html b/docs/linux/html/search/functions_b.html new file mode 100644 index 0000000..345265d --- /dev/null +++ b/docs/linux/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_b.js b/docs/linux/html/search/functions_b.js new file mode 100644 index 0000000..9e264db --- /dev/null +++ b/docs/linux/html/search/functions_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['mark_5fsection_5fshow_5fentries_1995',['mark_section_show_entries',['../d8/d78/fftools__ffprobe_8c.html#ae2809d325eb11942025562d2e5e300d2',1,'fftools_ffprobe.c']]], + ['match_5fgroup_5fseparator_1996',['match_group_separator',['../d7/dcc/fftools__cmdutils_8c.html#a029335d12e282d56b7fec7abb40389d5',1,'fftools_cmdutils.c']]], + ['match_5fsection_1997',['match_section',['../d8/d78/fftools__ffprobe_8c.html#a9f1d8914421ec39c5001ab02e7a8922b',1,'fftools_ffprobe.c']]], + ['mediainformation_1998',['MediaInformation',['../df/d06/classffmpegkit_1_1_media_information.html#a2a60b762ef3016ecfc3558d50a5e4e2a',1,'ffmpegkit::MediaInformation']]], + ['mediainformationsession_1999',['MediaInformationSession',['../df/db7/classffmpegkit_1_1_media_information_session.html#a691c07daaa9bfe292275354002dadb64',1,'ffmpegkit::MediaInformationSession']]], + ['messagesintransmit_2000',['messagesInTransmit',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4f6b1eacd532a12d7c8af23a10ef26ca',1,'ffmpegkit::FFmpegKitConfig']]] +]; diff --git a/docs/linux/html/search/functions_c.html b/docs/linux/html/search/functions_c.html new file mode 100644 index 0000000..858bfd6 --- /dev/null +++ b/docs/linux/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_c.js b/docs/linux/html/search/functions_c.js new file mode 100644 index 0000000..ed65af1 --- /dev/null +++ b/docs/linux/html/search/functions_c.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['need_5foutput_2001',['need_output',['../d7/d48/fftools__ffmpeg_8c.html#a19c0b9ce7a779f9cafb2f1b639843ea2',1,'fftools_ffmpeg.c']]], + ['new_5fattachment_5fstream_2002',['new_attachment_stream',['../d7/db3/fftools__ffmpeg_8h.html#a0c3773fd5bc3734795991b7a8eda2565',1,'new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0c3773fd5bc3734795991b7a8eda2565',1,'new_attachment_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5faudio_5fstream_2003',['new_audio_stream',['../d7/db3/fftools__ffmpeg_8h.html#a15a211f78437d8b76343ffb6a5ed7691',1,'new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a15a211f78437d8b76343ffb6a5ed7691',1,'new_audio_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fdata_5fstream_2004',['new_data_stream',['../d7/db3/fftools__ffmpeg_8h.html#ab1202336863f378d4602072dfa5efdf5',1,'new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab1202336863f378d4602072dfa5efdf5',1,'new_data_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5foutput_5fstream_2005',['new_output_stream',['../d7/db3/fftools__ffmpeg_8h.html#a80cef4274f0f47914ca35f6da2252eeb',1,'new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a80cef4274f0f47914ca35f6da2252eeb',1,'new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVMediaType type, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fsubtitle_5fstream_2006',['new_subtitle_stream',['../d7/db3/fftools__ffmpeg_8h.html#a226ddaa939f9e92fefe8590b96711b29',1,'new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a226ddaa939f9e92fefe8590b96711b29',1,'new_subtitle_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5funknown_5fstream_2007',['new_unknown_stream',['../d7/db3/fftools__ffmpeg_8h.html#ad63f18efd0a1c58dfecf770f75868198',1,'new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad63f18efd0a1c58dfecf770f75868198',1,'new_unknown_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['new_5fvideo_5fstream_2008',['new_video_stream',['../d7/db3/fftools__ffmpeg_8h.html#adc3928a88e1ab2eacb04c5fa1b6bfe00',1,'new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#adc3928a88e1ab2eacb04c5fa1b6bfe00',1,'new_video_stream(OptionsContext *o, AVFormatContext *oc, int source_index): fftools_ffmpeg_opt.c']]], + ['next_5fcodec_5ffor_5fid_2009',['next_codec_for_id',['../d7/dcc/fftools__cmdutils_8c.html#a876a4b3377bdea2767ee77d185ee1d03',1,'fftools_cmdutils.c']]], + ['none_5fescape_5fstr_2010',['none_escape_str',['../d8/d78/fftools__ffprobe_8c.html#a5359bbdf55f0dd0fc710cce3d9f3b8f0',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/functions_d.html b/docs/linux/html/search/functions_d.html new file mode 100644 index 0000000..2f09f51 --- /dev/null +++ b/docs/linux/html/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_d.js b/docs/linux/html/search/functions_d.js new file mode 100644 index 0000000..7a19149 --- /dev/null +++ b/docs/linux/html/search/functions_d.js @@ -0,0 +1,68 @@ +var searchData= +[ + ['open_5ffiles_2011',['open_files',['../d7/db3/fftools__ffmpeg_8h.html#a94b7523ab981f616ed14978d06d70ac9',1,'fftools_ffmpeg.h']]], + ['open_5finput_5ffile_2012',['open_input_file',['../d7/db3/fftools__ffmpeg_8h.html#a540336d8019a727fad05b1d6c53e7c15',1,'open_input_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a540336d8019a727fad05b1d6c53e7c15',1,'open_input_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../d8/d78/fftools__ffprobe_8c.html#ae09451501c598ccaa188bb20a1ebb84c',1,'open_input_file(InputFile *ifile, const char *filename, const char *print_filename): fftools_ffprobe.c']]], + ['open_5foutput_5ffile_2013',['open_output_file',['../d7/db3/fftools__ffmpeg_8h.html#ae9aaf2d6ff0cf3a0a665445d00365a68',1,'open_output_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae9aaf2d6ff0cf3a0a665445d00365a68',1,'open_output_file(OptionsContext *o, const char *filename): fftools_ffmpeg_opt.c']]], + ['operator_3c_3c_2014',['operator<<',['../d2/d25/namespaceffmpegkit.html#a7e9ba2846f91ff69d4ddf92e6e14164c',1,'ffmpegkit']]], + ['opt_5fabort_5fon_2015',['opt_abort_on',['../d7/d48/fftools__ffmpeg_8c.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5c02784e9a4c52395dd293ac626055c3',1,'opt_abort_on(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fattach_2016',['opt_attach',['../d7/d48/fftools__ffmpeg_8c.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6daca6c13986317750131ee7a05844ee',1,'opt_attach(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5fcodec_2017',['opt_audio_codec',['../d7/d48/fftools__ffmpeg_8c.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae9cffaa367854d0de61e1f2fa780fdf4',1,'opt_audio_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5ffilters_2018',['opt_audio_filters',['../d7/d48/fftools__ffmpeg_8c.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9ee898e4ccb3070653e59a5615c4c5aa',1,'opt_audio_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5fframes_2019',['opt_audio_frames',['../d7/d48/fftools__ffmpeg_8c.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7764402c86633630b61750779ce41c2e',1,'opt_audio_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5faudio_5fqscale_2020',['opt_audio_qscale',['../d7/d48/fftools__ffmpeg_8c.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa92bf94652218255e5386329ec0edbd5',1,'opt_audio_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fbitrate_2021',['opt_bitrate',['../d7/d48/fftools__ffmpeg_8c.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad5081d8deb9d504a42ce8548068c2096',1,'opt_bitrate(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fchannel_5flayout_2022',['opt_channel_layout',['../d7/d48/fftools__ffmpeg_8c.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a02ab698433dae7a8b706e326a7bd9f8f',1,'opt_channel_layout(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fcodec_5fdebug_2023',['opt_codec_debug',['../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f',1,'fftools_cmdutils.h']]], + ['opt_5fcpucount_2024',['opt_cpucount',['../d7/dcc/fftools__cmdutils_8c.html#a8bc82376a974a97ef9384792d30b4cc4',1,'opt_cpucount(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8bc82376a974a97ef9384792d30b4cc4',1,'opt_cpucount(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fcpuflags_2025',['opt_cpuflags',['../d7/dcc/fftools__cmdutils_8c.html#a0bc08eaf2739c5b0977996228a81a129',1,'opt_cpuflags(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0bc08eaf2739c5b0977996228a81a129',1,'opt_cpuflags(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fdata_5fcodec_2026',['opt_data_codec',['../d7/d48/fftools__ffmpeg_8c.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a190b363d38befc8e1dbfc4f68992bffa',1,'opt_data_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fdata_5fframes_2027',['opt_data_frames',['../d7/d48/fftools__ffmpeg_8c.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a65414dc020391d0ec9ed39ad9920dd0f',1,'opt_data_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fdefault_2028',['opt_default',['../d7/dcc/fftools__cmdutils_8c.html#a24c4e9b816e053a3facd267d56daf1ed',1,'opt_default(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed',1,'opt_default(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fdefault_5fnew_2029',['opt_default_new',['../d7/db3/fftools__ffmpeg_8h.html#adb46b97d7f835a8aab51ffdc8287ae8a',1,'opt_default_new(OptionsContext *o, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#adb46b97d7f835a8aab51ffdc8287ae8a',1,'opt_default_new(OptionsContext *o, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffilter_5fcomplex_2030',['opt_filter_complex',['../d7/d48/fftools__ffmpeg_8c.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a266b53c47514391446a21cb6d50f099d',1,'opt_filter_complex(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffilter_5fcomplex_5fscript_2031',['opt_filter_complex_script',['../d7/d48/fftools__ffmpeg_8c.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a23208b7fc9f279c60f006ad45c827146',1,'opt_filter_complex_script(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffilter_5fhw_5fdevice_2032',['opt_filter_hw_device',['../d7/d48/fftools__ffmpeg_8c.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6fc46048a19a5b21c2d0e21875aad2cb',1,'opt_filter_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ffind_2033',['opt_find',['../d7/dcc/fftools__cmdutils_8c.html#ae13404e5cf277e5deb0e643213acace0',1,'fftools_cmdutils.c']]], + ['opt_5fformat_2034',['opt_format',['../d8/d78/fftools__ffprobe_8c.html#a30b725c5e42860674f678532e83aebbd',1,'fftools_ffprobe.c']]], + ['opt_5finit_5fhw_5fdevice_2035',['opt_init_hw_device',['../d7/d48/fftools__ffmpeg_8c.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#afbf861d556934c3dcf48cee107df6473',1,'opt_init_hw_device(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5finput_5ffile_2036',['opt_input_file',['../d8/d78/fftools__ffprobe_8c.html#abbd9416c0740a6e1835807deb3998ec6',1,'fftools_ffprobe.c']]], + ['opt_5finput_5ffile_5fi_2037',['opt_input_file_i',['../d8/d78/fftools__ffprobe_8c.html#ab6d82985dbdaf11496d0f70ae12ed93b',1,'fftools_ffprobe.c']]], + ['opt_5floglevel_2038',['opt_loglevel',['../d7/dcc/fftools__cmdutils_8c.html#a0655c99b1344272c17f0dc8eb480c598',1,'opt_loglevel(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0655c99b1344272c17f0dc8eb480c598',1,'opt_loglevel(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fmap_2039',['opt_map',['../d7/d48/fftools__ffmpeg_8c.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a83bedb407ba3c293570b773d4c157ca0',1,'opt_map(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fmap_5fchannel_2040',['opt_map_channel',['../d7/d48/fftools__ffmpeg_8c.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae6d1db10a80aaa34ec2c41f9d45d05b5',1,'opt_map_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fmax_5falloc_2041',['opt_max_alloc',['../d7/dcc/fftools__cmdutils_8c.html#ae2131affd4cd632364d24b0d0a809fc3',1,'opt_max_alloc(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae2131affd4cd632364d24b0d0a809fc3',1,'opt_max_alloc(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fold2new_2042',['opt_old2new',['../d7/d48/fftools__ffmpeg_8c.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ac4901465fa02f303211b5bd221b312ac',1,'opt_old2new(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5foutput_5ffile_2043',['opt_output_file',['../d7/db3/fftools__ffmpeg_8h.html#a2e59243bbc0b968591a6f197cf39a382',1,'fftools_ffmpeg.h']]], + ['opt_5fpreset_2044',['opt_preset',['../d7/d48/fftools__ffmpeg_8c.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#abaf811ecede8a95cd17d4cedd6247ea7',1,'opt_preset(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fpretty_2045',['opt_pretty',['../d8/d78/fftools__ffprobe_8c.html#a59e8f23a103f7613755c2fdce846f9b0',1,'fftools_ffprobe.c']]], + ['opt_5fprint_5ffilename_2046',['opt_print_filename',['../d8/d78/fftools__ffprobe_8c.html#ab45a85014bbc500f22836075209af718',1,'fftools_ffprobe.c']]], + ['opt_5fprofile_2047',['opt_profile',['../d7/d48/fftools__ffmpeg_8c.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a54e869e9bf4cd94ebe110ee0c8e407bb',1,'opt_profile(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fprogress_2048',['opt_progress',['../d7/d48/fftools__ffmpeg_8c.html#ae76c7a8880f594c7d0f7df762aac7a89',1,'opt_progress(void *optctx, const char *opt, const char *arg): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ae76c7a8880f594c7d0f7df762aac7a89',1,'opt_progress(void *optctx, const char *opt, const char *arg): fftools_ffmpeg.h']]], + ['opt_5fqscale_2049',['opt_qscale',['../d7/d48/fftools__ffmpeg_8c.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1f383de2e1d88e44f8ad03e24c1c2300',1,'opt_qscale(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fread_5fintervals_2050',['opt_read_intervals',['../d8/d78/fftools__ffprobe_8c.html#a34e56be87f6c37cc788638d6e64a9334',1,'fftools_ffprobe.c']]], + ['opt_5frecording_5ftimestamp_2051',['opt_recording_timestamp',['../d7/d48/fftools__ffmpeg_8c.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aea75291d8c8437ac12c8e2c64e0a9d7d',1,'opt_recording_timestamp(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5freport_2052',['opt_report',['../d7/dcc/fftools__cmdutils_8c.html#ae83addf5abc14d1dd046f315499ed6bf',1,'opt_report(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae83addf5abc14d1dd046f315499ed6bf',1,'opt_report(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fsameq_2053',['opt_sameq',['../d7/d48/fftools__ffmpeg_8c.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a204f57aa5e962e076ad6a222602587d3',1,'opt_sameq(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fsdp_5ffile_2054',['opt_sdp_file',['../d7/d48/fftools__ffmpeg_8c.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a08a511c7cab7d97a7dc013197a716016',1,'opt_sdp_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fsections_2055',['opt_sections',['../d8/d78/fftools__ffprobe_8c.html#ae67941dae31c7f2608af95ac2135ad12',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fentries_2056',['opt_show_entries',['../d8/d78/fftools__ffprobe_8c.html#a9f39904b54f6e93ace1c19e242c81e51',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fformat_5fentry_2057',['opt_show_format_entry',['../d8/d78/fftools__ffprobe_8c.html#a748e566e25160276f93e5a90e962a6ae',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5foptional_5ffields_2058',['opt_show_optional_fields',['../d8/d78/fftools__ffprobe_8c.html#a65d3b57796cbc55cba8cf980ef0a8759',1,'fftools_ffprobe.c']]], + ['opt_5fshow_5fversions_2059',['opt_show_versions',['../d8/d78/fftools__ffprobe_8c.html#af8ad5bf16936082af37e8c129a723b3b',1,'fftools_ffprobe.c']]], + ['opt_5fstats_5fperiod_2060',['opt_stats_period',['../d7/d48/fftools__ffmpeg_8c.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aca8fb43a0670d7c55f53d82e219d9237',1,'opt_stats_period(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fstreamid_2061',['opt_streamid',['../d7/d48/fftools__ffmpeg_8c.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1969322d3a144cc144a0a92f88e8add1',1,'opt_streamid(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fsubtitle_5fcodec_2062',['opt_subtitle_codec',['../d7/d48/fftools__ffmpeg_8c.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4a588b5f7cb9e583ca84529ae89b0382',1,'opt_subtitle_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftarget_2063',['opt_target',['../d7/d48/fftools__ffmpeg_8c.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7b688fe508a8d85961a487d4eb3f3121',1,'opt_target(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftimecode_2064',['opt_timecode',['../d7/d48/fftools__ffmpeg_8c.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0ddbb61c6a7dbbe50a723774a342e060',1,'opt_timecode(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5ftimelimit_2065',['opt_timelimit',['../d7/dcc/fftools__cmdutils_8c.html#a995b064d5b67208fae49232687dd5eaa',1,'opt_timelimit(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa',1,'opt_timelimit(void *optctx, const char *opt, const char *arg): fftools_cmdutils.c']]], + ['opt_5fvaapi_5fdevice_2066',['opt_vaapi_device',['../d7/d48/fftools__ffmpeg_8c.html#ae8bfeed67a697b21437dd56531f1b370',1,'fftools_ffmpeg.c']]], + ['opt_5fvideo_5fchannel_2067',['opt_video_channel',['../d7/d48/fftools__ffmpeg_8c.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f9afad553b7838b7c592b61b108eb8b',1,'opt_video_channel(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fcodec_2068',['opt_video_codec',['../d7/d48/fftools__ffmpeg_8c.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a63165e9cf0b0c917a42834d1f1972073',1,'opt_video_codec(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5ffilters_2069',['opt_video_filters',['../d7/d48/fftools__ffmpeg_8c.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a67b88ce0f88b9b220671a44632d129a4',1,'opt_video_filters(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fframes_2070',['opt_video_frames',['../d7/d48/fftools__ffmpeg_8c.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a980e27c6f6226db3cd1e0fff390df29b',1,'opt_video_frames(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvideo_5fstandard_2071',['opt_video_standard',['../d7/d48/fftools__ffmpeg_8c.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4d934208acdc296fd2b2c79c34851163',1,'opt_video_standard(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvstats_2072',['opt_vstats',['../d7/d48/fftools__ffmpeg_8c.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f725a766755b848221895b283f206a8',1,'opt_vstats(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvstats_5ffile_2073',['opt_vstats_file',['../d7/d48/fftools__ffmpeg_8c.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a1050d5bf2b6ea7a93a749a25a8a7db17',1,'opt_vstats_file(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['opt_5fvsync_2074',['opt_vsync',['../d7/d48/fftools__ffmpeg_8c.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2b0b7b6ba4d8f6bec8f9bb410606787a',1,'opt_vsync(void *optctx, const char *opt, const char *arg): fftools_ffmpeg_opt.c']]], + ['output_5fpacket_2075',['output_packet',['../d7/d48/fftools__ffmpeg_8c.html#ae1db4cbd8e2d2dd46fa384e1c93835fc',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_e.html b/docs/linux/html/search/functions_e.html new file mode 100644 index 0000000..ee5afa6 --- /dev/null +++ b/docs/linux/html/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_e.js b/docs/linux/html/search/functions_e.js new file mode 100644 index 0000000..633acf7 --- /dev/null +++ b/docs/linux/html/search/functions_e.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['parse_5fforced_5fkey_5fframes_2076',['parse_forced_key_frames',['../d7/d48/fftools__ffmpeg_8c.html#a64d2227a8af6a247040fc50ab547dc0e',1,'fftools_ffmpeg.c']]], + ['parse_5floglevel_2077',['parse_loglevel',['../d7/dcc/fftools__cmdutils_8c.html#a812390811ecf2673409d4d2191b3696a',1,'parse_loglevel(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a',1,'parse_loglevel(int argc, char **argv, const OptionDef *options): fftools_cmdutils.c']]], + ['parse_5fmatrix_5fcoeffs_2078',['parse_matrix_coeffs',['../d7/db3/fftools__ffmpeg_8h.html#a9324d262380638a863ba421a6905e89b',1,'parse_matrix_coeffs(uint16_t *dest, const char *str): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9324d262380638a863ba421a6905e89b',1,'parse_matrix_coeffs(uint16_t *dest, const char *str): fftools_ffmpeg_opt.c']]], + ['parse_5fmeta_5ftype_2079',['parse_meta_type',['../d7/db3/fftools__ffmpeg_8h.html#a119ac6dfc6c391d979611c6878497fb8',1,'parse_meta_type(char *arg, char *type, int *index, const char **stream_spec): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a119ac6dfc6c391d979611c6878497fb8',1,'parse_meta_type(char *arg, char *type, int *index, const char **stream_spec): fftools_ffmpeg_opt.c']]], + ['parse_5fnumber_5for_5fdie_2080',['parse_number_or_die',['../d7/dcc/fftools__cmdutils_8c.html#aee611299e84dab23d614366f993e96ae',1,'parse_number_or_die(const char *context, const char *numstr, int type, double min, double max): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae',1,'parse_number_or_die(const char *context, const char *numstr, int type, double min, double max): fftools_cmdutils.c']]], + ['parse_5foptgroup_2081',['parse_optgroup',['../d7/dcc/fftools__cmdutils_8c.html#ae0e1bd04fd160c44d7e36623314380e4',1,'parse_optgroup(void *optctx, OptionGroup *g): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4',1,'parse_optgroup(void *optctx, OptionGroup *g): fftools_cmdutils.c']]], + ['parse_5foption_2082',['parse_option',['../d7/dcc/fftools__cmdutils_8c.html#a0f7f4bf6a990541888b7f4ece3456547',1,'parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547',1,'parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options): fftools_cmdutils.c']]], + ['parse_5foptions_2083',['parse_options',['../d7/dcc/fftools__cmdutils_8c.html#a8863e994be95bc81bbedff194aa2842f',1,'parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *)): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a188aa7e7bee8039b9399865cc3507336',1,'parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *)): fftools_cmdutils.h']]], + ['parse_5fread_5finterval_2084',['parse_read_interval',['../d8/d78/fftools__ffprobe_8c.html#a4aaed4c4829ad9d8c7ec29554fd4fbe0',1,'fftools_ffprobe.c']]], + ['parse_5fread_5fintervals_2085',['parse_read_intervals',['../d8/d78/fftools__ffprobe_8c.html#af075be31a1321aa2dba0b2aee1cbb9b7',1,'fftools_ffprobe.c']]], + ['parse_5ftime_5for_5fdie_2086',['parse_time_or_die',['../d7/dcc/fftools__cmdutils_8c.html#aa60d6deab0047c29fc1f6602f812774f',1,'parse_time_or_die(const char *context, const char *timestr, int is_duration): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f',1,'parse_time_or_die(const char *context, const char *timestr, int is_duration): fftools_cmdutils.c']]], + ['parsearguments_2087',['parseArguments',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a34379177499de1479be1150569857b20',1,'ffmpegkit::FFmpegKitConfig']]], + ['pipeindexgenerator_2088',['pipeIndexGenerator',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad70c8bb8a0bffa5c70283e7f1cb054c6',1,'FFmpegKitConfig.cpp']]], + ['prepare_5fapp_5farguments_2089',['prepare_app_arguments',['../d7/dcc/fftools__cmdutils_8c.html#a0cd6e5cbbafaff05295a751def5d32ad',1,'fftools_cmdutils.c']]], + ['print_5fall_5flibs_5finfo_2090',['print_all_libs_info',['../d7/dcc/fftools__cmdutils_8c.html#a5cbcf8cc28fc02a8789f72b592981816',1,'fftools_cmdutils.c']]], + ['print_5fbuildconf_2091',['print_buildconf',['../d7/dcc/fftools__cmdutils_8c.html#a6cfd6aae52ff802c6ec1fce41c52011a',1,'fftools_cmdutils.c']]], + ['print_5fchroma_5flocation_2092',['print_chroma_location',['../d8/d78/fftools__ffprobe_8c.html#a5f600d819733590331cfb1b8af8ca177',1,'fftools_ffprobe.c']]], + ['print_5fcodec_2093',['print_codec',['../d7/dcc/fftools__cmdutils_8c.html#ac5cf0f0047f2fbb773b73e95919d4821',1,'fftools_cmdutils.c']]], + ['print_5fcodecs_2094',['print_codecs',['../d7/dcc/fftools__cmdutils_8c.html#a450c5caed499581d5ed96ff54640acb1',1,'fftools_cmdutils.c']]], + ['print_5fcodecs_5ffor_5fid_2095',['print_codecs_for_id',['../d7/dcc/fftools__cmdutils_8c.html#afc1654f711a83402bae9c130fe706b52',1,'fftools_cmdutils.c']]], + ['print_5fcolor_5frange_2096',['print_color_range',['../d8/d78/fftools__ffprobe_8c.html#a3a51210006ca1979e7d49c8170a9a5eb',1,'fftools_ffprobe.c']]], + ['print_5fcolor_5fspace_2097',['print_color_space',['../d8/d78/fftools__ffprobe_8c.html#a564eedd302b706d75fe3e94fc8a1d2b6',1,'fftools_ffprobe.c']]], + ['print_5fcolor_5ftrc_2098',['print_color_trc',['../d8/d78/fftools__ffprobe_8c.html#a9f12e0b749ea8ddfca49e1c2002edbdb',1,'fftools_ffprobe.c']]], + ['print_5fdynamic_5fhdr10_5fplus_2099',['print_dynamic_hdr10_plus',['../d8/d78/fftools__ffprobe_8c.html#afea45f3be2ae6f508c0391ab5e3102fa',1,'fftools_ffprobe.c']]], + ['print_5ferror_2100',['print_error',['../d7/dcc/fftools__cmdutils_8c.html#a2911387e778b01a25f0e65eabadf1b7b',1,'print_error(const char *filename, int err): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b',1,'print_error(const char *filename, int err): fftools_cmdutils.c']]], + ['print_5ffinal_5fstats_2101',['print_final_stats',['../d7/d48/fftools__ffmpeg_8c.html#a379e18554a7d7ecb27d37c0dc6f3ebba',1,'fftools_ffmpeg.c']]], + ['print_5fpkt_5fside_5fdata_2102',['print_pkt_side_data',['../d8/d78/fftools__ffprobe_8c.html#a871274cbaf46fa6acf28c160345954a3',1,'fftools_ffprobe.c']]], + ['print_5fprimaries_2103',['print_primaries',['../d8/d78/fftools__ffprobe_8c.html#a2845f55225678183230cf8fa93561bc3',1,'fftools_ffprobe.c']]], + ['print_5fprogram_5finfo_2104',['print_program_info',['../d7/dcc/fftools__cmdutils_8c.html#abb783aa7b42b09843a310b93edd9badb',1,'fftools_cmdutils.c']]], + ['print_5freport_2105',['print_report',['../d7/d48/fftools__ffmpeg_8c.html#ac639722e5e5a6a26c78eca5e9122909d',1,'fftools_ffmpeg.c']]], + ['print_5fsdp_2106',['print_sdp',['../d7/d48/fftools__ffmpeg_8c.html#a2e002b603f4f756cbe614fb2e5cbb0dd',1,'fftools_ffmpeg.c']]], + ['print_5fsection_2107',['print_section',['../d8/d78/fftools__ffprobe_8c.html#aa77d3d730a5abf2f7490fb63c1f56398',1,'fftools_ffprobe.c']]], + ['probe_5ffile_2108',['probe_file',['../d8/d78/fftools__ffprobe_8c.html#a5af59ba6f6680dfaeb2ab6ad323e3fc0',1,'fftools_ffprobe.c']]], + ['process_5fframe_2109',['process_frame',['../d8/d78/fftools__ffprobe_8c.html#a3da11c48c949cfc9b67360e5e3b107bc',1,'fftools_ffprobe.c']]], + ['process_5finput_2110',['process_input',['../d7/d48/fftools__ffmpeg_8c.html#a79192afe1e714610704c94cca1e6601b',1,'fftools_ffmpeg.c']]], + ['process_5finput_5fpacket_2111',['process_input_packet',['../d7/d48/fftools__ffmpeg_8c.html#a280fede5cdf5e514980ee8b629303c78',1,'fftools_ffmpeg.c']]], + ['process_5flog_2112',['process_log',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a0d16654c1a9fc809524f5d21772ae0e7',1,'FFmpegKitConfig.cpp']]], + ['process_5fstatistics_2113',['process_statistics',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ac62f4c21473a7259bf05e61832a73012',1,'FFmpegKitConfig.cpp']]], + ['psnr_2114',['psnr',['../d7/d48/fftools__ffmpeg_8c.html#a3da49e34ea9fb9a212c4929d2ba403e2',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/functions_f.html b/docs/linux/html/search/functions_f.html new file mode 100644 index 0000000..f17c412 --- /dev/null +++ b/docs/linux/html/search/functions_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/functions_f.js b/docs/linux/html/search/functions_f.js new file mode 100644 index 0000000..2a73644 --- /dev/null +++ b/docs/linux/html/search/functions_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['qsv_5finit_2115',['qsv_init',['../d7/db3/fftools__ffmpeg_8h.html#ac1583448d7e49fae8d141dbddf267ff4',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/mag_sel.png b/docs/linux/html/search/mag_sel.png new file mode 100644 index 0000000..39c0ed5 Binary files /dev/null and b/docs/linux/html/search/mag_sel.png differ diff --git a/docs/linux/html/search/namespaces_0.html b/docs/linux/html/search/namespaces_0.html new file mode 100644 index 0000000..76996d1 --- /dev/null +++ b/docs/linux/html/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/namespaces_0.js b/docs/linux/html/search/namespaces_0.js new file mode 100644 index 0000000..80195a0 --- /dev/null +++ b/docs/linux/html/search/namespaces_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ffmpegkit_1614',['ffmpegkit',['../d2/d25/namespaceffmpegkit.html',1,'']]] +]; diff --git a/docs/linux/html/search/nomatches.html b/docs/linux/html/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/docs/linux/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/linux/html/search/related_0.html b/docs/linux/html/search/related_0.html new file mode 100644 index 0000000..bbe15fa --- /dev/null +++ b/docs/linux/html/search/related_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/related_0.js b/docs/linux/html/search/related_0.js new file mode 100644 index 0000000..55e3068 --- /dev/null +++ b/docs/linux/html/search/related_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3c_3c_3082',['operator<<',['../d4/dcf/classffmpegkit_1_1_return_code.html#a2ba683f8da4b7b6bcf913588045c35a7',1,'ffmpegkit::ReturnCode']]] +]; diff --git a/docs/linux/html/search/search.css b/docs/linux/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/docs/linux/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/linux/html/search/search.js b/docs/linux/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/docs/linux/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_0.js b/docs/linux/html/search/typedefs_0.js new file mode 100644 index 0000000..3a15036 --- /dev/null +++ b/docs/linux/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['benchmarktimestamps_2947',['BenchmarkTimeStamps',['../d7/d48/fftools__ffmpeg_8c.html#a556ba3dffaac6f6e98a41a843baf898b',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/typedefs_1.html b/docs/linux/html/search/typedefs_1.html new file mode 100644 index 0000000..9b8bf72 --- /dev/null +++ b/docs/linux/html/search/typedefs_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_1.js b/docs/linux/html/search/typedefs_1.js new file mode 100644 index 0000000..2fa164d --- /dev/null +++ b/docs/linux/html/search/typedefs_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['compactcontext_2948',['CompactContext',['../d8/d78/fftools__ffprobe_8c.html#ac2e50d024b5343b7ae1b50a04b41e6b8',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_2.html b/docs/linux/html/search/typedefs_2.html new file mode 100644 index 0000000..d18982f --- /dev/null +++ b/docs/linux/html/search/typedefs_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_2.js b/docs/linux/html/search/typedefs_2.js new file mode 100644 index 0000000..c035a00 --- /dev/null +++ b/docs/linux/html/search/typedefs_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['defaultcontext_2949',['DefaultContext',['../d8/d78/fftools__ffprobe_8c.html#a2577b2d2c58a9d67e28f594d3c56b795',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_3.html b/docs/linux/html/search/typedefs_3.html new file mode 100644 index 0000000..8941740 --- /dev/null +++ b/docs/linux/html/search/typedefs_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_3.js b/docs/linux/html/search/typedefs_3.js new file mode 100644 index 0000000..a22b86f --- /dev/null +++ b/docs/linux/html/search/typedefs_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['ffmpegsessioncompletecallback_2950',['FFmpegSessionCompleteCallback',['../d2/d25/namespaceffmpegkit.html#afc007c369cdeebeca5cbf663ab966443',1,'ffmpegkit']]], + ['ffprobesessioncompletecallback_2951',['FFprobeSessionCompleteCallback',['../d2/d25/namespaceffmpegkit.html#af3f451cbb99c4dc36e2e2141a33cdf38',1,'ffmpegkit']]], + ['filtergraph_2952',['FilterGraph',['../d7/db3/fftools__ffmpeg_8h.html#a6c3bd7b7eadf5174d97374f2e938ed50',1,'fftools_ffmpeg.h']]], + ['flatcontext_2953',['FlatContext',['../d8/d78/fftools__ffprobe_8c.html#aa873e04a40f701a5828f633e88aa62cc',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_4.html b/docs/linux/html/search/typedefs_4.html new file mode 100644 index 0000000..933bd3b --- /dev/null +++ b/docs/linux/html/search/typedefs_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_4.js b/docs/linux/html/search/typedefs_4.js new file mode 100644 index 0000000..60f5dcb --- /dev/null +++ b/docs/linux/html/search/typedefs_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hwaccel_2954',['HWAccel',['../d7/db3/fftools__ffmpeg_8h.html#adb2ebe744084bda695b14e4c3def78ae',1,'fftools_ffmpeg.h']]], + ['hwdevice_2955',['HWDevice',['../d7/db3/fftools__ffmpeg_8h.html#adf4b6ab8e752e62efbc132c2f039d5b5',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/typedefs_5.html b/docs/linux/html/search/typedefs_5.html new file mode 100644 index 0000000..7712e6f --- /dev/null +++ b/docs/linux/html/search/typedefs_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_5.js b/docs/linux/html/search/typedefs_5.js new file mode 100644 index 0000000..b583eb5 --- /dev/null +++ b/docs/linux/html/search/typedefs_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['inicontext_2956',['INIContext',['../d8/d78/fftools__ffprobe_8c.html#aecd7ea33fc4176e73b161f87643322c6',1,'fftools_ffprobe.c']]], + ['inputfile_2957',['InputFile',['../d7/db3/fftools__ffmpeg_8h.html#a0578f87b05bf4a826ca598e8b9b54fd4',1,'InputFile(): fftools_ffmpeg.h'],['../d8/d78/fftools__ffprobe_8c.html#a0578f87b05bf4a826ca598e8b9b54fd4',1,'InputFile(): fftools_ffprobe.c']]], + ['inputfilter_2958',['InputFilter',['../d7/db3/fftools__ffmpeg_8h.html#a9d3edfcf90acb75a8605f84910763531',1,'fftools_ffmpeg.h']]], + ['inputstream_2959',['InputStream',['../d7/db3/fftools__ffmpeg_8h.html#af4ae9e3cb7870ef1ee99d840f2a66833',1,'InputStream(): fftools_ffmpeg.h'],['../d8/d78/fftools__ffprobe_8c.html#af4ae9e3cb7870ef1ee99d840f2a66833',1,'InputStream(): fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_6.html b/docs/linux/html/search/typedefs_6.html new file mode 100644 index 0000000..25aa6dd --- /dev/null +++ b/docs/linux/html/search/typedefs_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_6.js b/docs/linux/html/search/typedefs_6.js new file mode 100644 index 0000000..4558a76 --- /dev/null +++ b/docs/linux/html/search/typedefs_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsoncontext_2960',['JSONContext',['../d8/d78/fftools__ffprobe_8c.html#a8387b1297305ecf25b16c9c5be841a31',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_7.html b/docs/linux/html/search/typedefs_7.html new file mode 100644 index 0000000..6cb2dde --- /dev/null +++ b/docs/linux/html/search/typedefs_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_7.js b/docs/linux/html/search/typedefs_7.js new file mode 100644 index 0000000..6f5ae3f --- /dev/null +++ b/docs/linux/html/search/typedefs_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['logbuffer_2961',['LogBuffer',['../d8/d78/fftools__ffprobe_8c.html#a83bea2bdf095e7e39b33a895b7a9aa1d',1,'fftools_ffprobe.c']]], + ['logcallback_2962',['LogCallback',['../d2/d25/namespaceffmpegkit.html#a961de60de61ed79c2c7dfee08c9fa939',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/typedefs_8.html b/docs/linux/html/search/typedefs_8.html new file mode 100644 index 0000000..52ab5aa --- /dev/null +++ b/docs/linux/html/search/typedefs_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_8.js b/docs/linux/html/search/typedefs_8.js new file mode 100644 index 0000000..6f00ba3 --- /dev/null +++ b/docs/linux/html/search/typedefs_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mediainformationsessioncompletecallback_2963',['MediaInformationSessionCompleteCallback',['../d2/d25/namespaceffmpegkit.html#a909392d52220d37ab6e39bd7f4d6abb1',1,'ffmpegkit']]] +]; diff --git a/docs/linux/html/search/typedefs_9.html b/docs/linux/html/search/typedefs_9.html new file mode 100644 index 0000000..7b6dd85 --- /dev/null +++ b/docs/linux/html/search/typedefs_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_9.js b/docs/linux/html/search/typedefs_9.js new file mode 100644 index 0000000..e9a598d --- /dev/null +++ b/docs/linux/html/search/typedefs_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['option_2964',['Option',['../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515',1,'fftools_cmdutils.h']]], + ['optiondef_2965',['OptionDef',['../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3',1,'fftools_cmdutils.h']]], + ['optiongroup_2966',['OptionGroup',['../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760',1,'fftools_cmdutils.h']]], + ['optiongroupdef_2967',['OptionGroupDef',['../d8/d4e/fftools__cmdutils_8h.html#ae685e65315debd1ee1fc81b88f45568a',1,'fftools_cmdutils.h']]], + ['optiongrouplist_2968',['OptionGroupList',['../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203',1,'fftools_cmdutils.h']]], + ['optionparsecontext_2969',['OptionParseContext',['../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8',1,'fftools_cmdutils.h']]], + ['optionscontext_2970',['OptionsContext',['../d7/db3/fftools__ffmpeg_8h.html#ad4704d50df836f3c02d818183aa47a22',1,'fftools_ffmpeg.h']]], + ['outputfile_2971',['OutputFile',['../d7/db3/fftools__ffmpeg_8h.html#a653db234f8dd70d221d3cc74139e0ab6',1,'fftools_ffmpeg.h']]], + ['outputfilter_2972',['OutputFilter',['../d7/db3/fftools__ffmpeg_8h.html#ac46893d613405fae678c0c4134b41cdc',1,'fftools_ffmpeg.h']]], + ['outputstream_2973',['OutputStream',['../d7/db3/fftools__ffmpeg_8h.html#a8f49aa35e4150e4b998d7c5a9678c9ac',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/typedefs_a.html b/docs/linux/html/search/typedefs_a.html new file mode 100644 index 0000000..ba5e668 --- /dev/null +++ b/docs/linux/html/search/typedefs_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_a.js b/docs/linux/html/search/typedefs_a.js new file mode 100644 index 0000000..68b19a6 --- /dev/null +++ b/docs/linux/html/search/typedefs_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readinterval_2974',['ReadInterval',['../d8/d78/fftools__ffprobe_8c.html#a997981f7bca04cb6bb56c29389f993a7',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_b.html b/docs/linux/html/search/typedefs_b.html new file mode 100644 index 0000000..9b59855 --- /dev/null +++ b/docs/linux/html/search/typedefs_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_b.js b/docs/linux/html/search/typedefs_b.js new file mode 100644 index 0000000..77a32ed --- /dev/null +++ b/docs/linux/html/search/typedefs_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['specifieropt_2975',['SpecifierOpt',['../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a',1,'fftools_cmdutils.h']]], + ['statisticscallback_2976',['StatisticsCallback',['../d2/d25/namespaceffmpegkit.html#a250a65ad52e13fa88362845eb4b848ef',1,'ffmpegkit']]], + ['streammap_2977',['StreamMap',['../d7/db3/fftools__ffmpeg_8h.html#ab186ed6c2bbe1ddb9f0da92e20d05018',1,'fftools_ffmpeg.h']]] +]; diff --git a/docs/linux/html/search/typedefs_c.html b/docs/linux/html/search/typedefs_c.html new file mode 100644 index 0000000..1924d70 --- /dev/null +++ b/docs/linux/html/search/typedefs_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_c.js b/docs/linux/html/search/typedefs_c.js new file mode 100644 index 0000000..72e0a85 --- /dev/null +++ b/docs/linux/html/search/typedefs_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['writer_2978',['Writer',['../d8/d78/fftools__ffprobe_8c.html#af51bd880557b9b7f3af54512f3351a86',1,'fftools_ffprobe.c']]], + ['writercontext_2979',['WriterContext',['../d8/d78/fftools__ffprobe_8c.html#a07a5981333df2c8291714a3cabbf5722',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/typedefs_d.html b/docs/linux/html/search/typedefs_d.html new file mode 100644 index 0000000..1b48087 --- /dev/null +++ b/docs/linux/html/search/typedefs_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/typedefs_d.js b/docs/linux/html/search/typedefs_d.js new file mode 100644 index 0000000..9095b45 --- /dev/null +++ b/docs/linux/html/search/typedefs_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmlcontext_2980',['XMLContext',['../d8/d78/fftools__ffprobe_8c.html#a5c7587eca2fb75fa09310bf9c0e755db',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/variables_0.html b/docs/linux/html/search/variables_0.html new file mode 100644 index 0000000..bf3eba5 --- /dev/null +++ b/docs/linux/html/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_0.js b/docs/linux/html/search/variables_0.js new file mode 100644 index 0000000..6b77969 --- /dev/null +++ b/docs/linux/html/search/variables_0.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['_5farchdetectinitializer_2247',['_archDetectInitializer',['../d7/dc8/_arch_detect_8cpp.html#a89a7cd1471560a637aad0e2ba7284b82',1,'ArchDetect.cpp']]], + ['_5farguments_2248',['_arguments',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4aed000dcbf01e62625264085dd95b63',1,'ffmpegkit::AbstractSession']]], + ['_5fbitrate_2249',['_bitrate',['../d0/de7/classffmpegkit_1_1_statistics.html#a0b0c1d052ae2cfb5d3faa34176a74622',1,'ffmpegkit::Statistics']]], + ['_5fchapters_2250',['_chapters',['../df/d06/classffmpegkit_1_1_media_information.html#af3ba067f1934efc4c75b4a0954214b22',1,'ffmpegkit::MediaInformation']]], + ['_5fchaptervalue_2251',['_chapterValue',['../d9/d9f/classffmpegkit_1_1_chapter.html#ab0d2c01a4744004945366b71fd9b1699',1,'ffmpegkit::Chapter']]], + ['_5fcompletecallback_2252',['_completeCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a2c348d427271175dda1cda6b21661215',1,'ffmpegkit::FFmpegSession::_completeCallback()'],['../da/d5c/classffmpegkit_1_1_f_fprobe_session.html#ab84b1cf34ad729a840ebddae63277c25',1,'ffmpegkit::FFprobeSession::_completeCallback()'],['../df/db7/classffmpegkit_1_1_media_information_session.html#a2bd1acba0891ff9ccc965ee24902d86d',1,'ffmpegkit::MediaInformationSession::_completeCallback()']]], + ['_5fcreatetime_2253',['_createTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4c698d2998f119cb602bf4896df80dcc',1,'ffmpegkit::AbstractSession']]], + ['_5fendtime_2254',['_endTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a4591f4cf16d26d0c624db8e12539caf1',1,'ffmpegkit::AbstractSession']]], + ['_5ffailstacktrace_2255',['_failStackTrace',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a0bf669dac5d9c41b1ed6bab171c60d9e',1,'ffmpegkit::AbstractSession']]], + ['_5fffmpegkitconfiginitializer_2256',['_ffmpegKitConfigInitializer',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af4d455c0aa581ccf8b38d974c6cff61d',1,'FFmpegKitConfig.cpp']]], + ['_5fffmpegkitinitializeri_2257',['_ffmpegKitInitializeri',['../d8/d78/_f_fmpeg_kit_8cpp.html#a89c1ad017f2b75cf35ea3e0f442032a1',1,'FFmpegKit.cpp']]], + ['_5fffprobekitinitializer_2258',['_ffprobeKitInitializer',['../d0/dc3/_f_fprobe_kit_8cpp.html#a4917fbf9516dd0e2da421e038792f5f2',1,'FFprobeKit.cpp']]], + ['_5flevel_2259',['_level',['../db/d1c/classffmpegkit_1_1_log.html#a63c39ee136f3dfa7527eaafc161f52cc',1,'ffmpegkit::Log']]], + ['_5flogcallback_2260',['_logCallback',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aba96e6f428f0bdbc90c847f2d192e13b',1,'ffmpegkit::AbstractSession']]], + ['_5flogdata_2261',['_logData',['../d5/d18/class_callback_data.html#a7a86a12c9439a8e600be891fe301fbe5',1,'CallbackData']]], + ['_5floglevel_2262',['_logLevel',['../d5/d18/class_callback_data.html#a79558599b866e66e40e04a25395bb79c',1,'CallbackData']]], + ['_5flogredirectionstrategy_2263',['_logRedirectionStrategy',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1f38b4df6a03ef81e75c15ffd712fad7',1,'ffmpegkit::AbstractSession']]], + ['_5flogs_2264',['_logs',['../d2/d41/classffmpegkit_1_1_abstract_session.html#af90c8c4cf0d3ebef5f855f49ff0d76e2',1,'ffmpegkit::AbstractSession']]], + ['_5fmediainformation_2265',['_mediaInformation',['../df/db7/classffmpegkit_1_1_media_information_session.html#a6110474e9292e78307329fbb82df4e34',1,'ffmpegkit::MediaInformationSession']]], + ['_5fmediainformationvalue_2266',['_mediaInformationValue',['../df/d06/classffmpegkit_1_1_media_information.html#af072dfce1f4573539d35d69ca514169b',1,'ffmpegkit::MediaInformation']]], + ['_5fmessage_2267',['_message',['../db/d1c/classffmpegkit_1_1_log.html#a3da2b7b5d4de743196fba77ca4c91c0e',1,'ffmpegkit::Log']]], + ['_5freturncode_2268',['_returnCode',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a55734f7c203f442965d158a8ffcd7fb7',1,'ffmpegkit::AbstractSession']]], + ['_5fsessionid_2269',['_sessionId',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a1afeac359e1289115c59dbb6e7f4cce0',1,'ffmpegkit::AbstractSession::_sessionId()'],['../d5/d18/class_callback_data.html#a8a47943edf33647e89419ac9112f70aa',1,'CallbackData::_sessionId()'],['../db/d1c/classffmpegkit_1_1_log.html#ace89fec41625e91ef054c501e96c0ffe',1,'ffmpegkit::Log::_sessionId()'],['../d0/de7/classffmpegkit_1_1_statistics.html#a0e501b9c8fc0736661eac8f93ca687d8',1,'ffmpegkit::Statistics::_sessionId()']]], + ['_5fsize_2270',['_size',['../d0/de7/classffmpegkit_1_1_statistics.html#a8a64933526c6d744bea69f9a5a615f22',1,'ffmpegkit::Statistics']]], + ['_5fspeed_2271',['_speed',['../d0/de7/classffmpegkit_1_1_statistics.html#a27cb348856182bb97737e195c20b0faa',1,'ffmpegkit::Statistics']]], + ['_5fstarttime_2272',['_startTime',['../d2/d41/classffmpegkit_1_1_abstract_session.html#ae6b76510cc55681bf9cce4d31ce002cd',1,'ffmpegkit::AbstractSession']]], + ['_5fstate_2273',['_state',['../d2/d41/classffmpegkit_1_1_abstract_session.html#a88a0d79327ea759b22d7ec4590124807',1,'ffmpegkit::AbstractSession']]], + ['_5fstatistics_2274',['_statistics',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a5f908728471ffa2b5339a287db95092e',1,'ffmpegkit::FFmpegSession']]], + ['_5fstatisticsbitrate_2275',['_statisticsBitrate',['../d5/d18/class_callback_data.html#a3a42926bb5ae5c8ba07d998ef904d105',1,'CallbackData']]], + ['_5fstatisticscallback_2276',['_statisticsCallback',['../d2/dee/classffmpegkit_1_1_f_fmpeg_session.html#a4f9a86af91583b9b846b2c6695fcd7e5',1,'ffmpegkit::FFmpegSession']]], + ['_5fstatisticsfps_2277',['_statisticsFps',['../d5/d18/class_callback_data.html#a798fd8152dc3ddb6122c205f4553dd2b',1,'CallbackData']]], + ['_5fstatisticsframenumber_2278',['_statisticsFrameNumber',['../d5/d18/class_callback_data.html#aa0922877b5fbf3eadef11d97aca2aecd',1,'CallbackData']]], + ['_5fstatisticsquality_2279',['_statisticsQuality',['../d5/d18/class_callback_data.html#a88071942961cb139f41e722a994db720',1,'CallbackData']]], + ['_5fstatisticssize_2280',['_statisticsSize',['../d5/d18/class_callback_data.html#a11359add9d304df4d8ae066f7608f658',1,'CallbackData']]], + ['_5fstatisticsspeed_2281',['_statisticsSpeed',['../d5/d18/class_callback_data.html#a3e4c36dfe43915d577bfcb620d5dc723',1,'CallbackData']]], + ['_5fstatisticstime_2282',['_statisticsTime',['../d5/d18/class_callback_data.html#a35c7f6411925d4d4c1e312747431d7f7',1,'CallbackData']]], + ['_5fstreaminformationvalue_2283',['_streamInformationValue',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af0a185607ed4449a0e55017a24b8c443',1,'ffmpegkit::StreamInformation']]], + ['_5fstreams_2284',['_streams',['../df/d06/classffmpegkit_1_1_media_information.html#aef3e3e832107d2ee973e7268ec64fbb2',1,'ffmpegkit::MediaInformation']]], + ['_5ftime_2285',['_time',['../d0/de7/classffmpegkit_1_1_statistics.html#a46c10ecf572649a1791f2ef47534966c',1,'ffmpegkit::Statistics']]], + ['_5ftype_2286',['_type',['../d5/d18/class_callback_data.html#ad609333b292ef6ddbf6362c98e25cc1b',1,'CallbackData']]], + ['_5fvalue_2287',['_value',['../d4/dcf/classffmpegkit_1_1_return_code.html#a9541cba537e303541540469944bc14e9',1,'ffmpegkit::ReturnCode']]], + ['_5fvideofps_2288',['_videoFps',['../d0/de7/classffmpegkit_1_1_statistics.html#a08f93fea220159d25fcad6533a19571e',1,'ffmpegkit::Statistics']]], + ['_5fvideoframenumber_2289',['_videoFrameNumber',['../d0/de7/classffmpegkit_1_1_statistics.html#ae4fb9aa691c1baecdd815d1dcb864baa',1,'ffmpegkit::Statistics']]], + ['_5fvideoquality_2290',['_videoQuality',['../d0/de7/classffmpegkit_1_1_statistics.html#a3ce543b047014effa3b926122e81cf74',1,'ffmpegkit::Statistics']]] +]; diff --git a/docs/linux/html/search/variables_1.html b/docs/linux/html/search/variables_1.html new file mode 100644 index 0000000..49fe59a --- /dev/null +++ b/docs/linux/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_1.js b/docs/linux/html/search/variables_1.js new file mode 100644 index 0000000..a3e6fa3 --- /dev/null +++ b/docs/linux/html/search/variables_1.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['abort_5fon_5fflags_2291',['abort_on_flags',['../d7/db3/fftools__ffmpeg_8h.html#a3194c206b4bc6007ec56e8c7cf6596e9',1,'abort_on_flags(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a3194c206b4bc6007ec56e8c7cf6596e9',1,'abort_on_flags(): fftools_ffmpeg_opt.c']]], + ['accurate_5fseek_2292',['accurate_seek',['../df/d77/struct_options_context.html#a58cdaa9e499f724c724822155f886aa2',1,'OptionsContext::accurate_seek()'],['../d8/d99/struct_input_file.html#a0d2afa337cfd75b91096045ed941a494',1,'InputFile::accurate_seek()']]], + ['apad_2293',['apad',['../df/d77/struct_options_context.html#aaaa5ad7ac13bf15c516f988c818d6efb',1,'OptionsContext::apad()'],['../db/dde/struct_output_stream.html#a76d4d92835e9dd3d0619e79e4fb762c6',1,'OutputStream::apad()']]], + ['arg_2294',['arg',['../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95',1,'OptionGroup']]], + ['argname_2295',['argname',['../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f',1,'OptionDef']]], + ['attachment_5ffilename_2296',['attachment_filename',['../db/dde/struct_output_stream.html#aa65108bd50cba339c4ad09ffc5fe77ac',1,'OutputStream']]], + ['attachments_2297',['attachments',['../df/d77/struct_options_context.html#accc18b7847026b5885533035c97b50ba',1,'OptionsContext']]], + ['audio_5fchannel_5fmaps_2298',['audio_channel_maps',['../df/d77/struct_options_context.html#afbfd63b5be2c974c0a2dbf1911ab678b',1,'OptionsContext']]], + ['audio_5fchannels_2299',['audio_channels',['../df/d77/struct_options_context.html#a8d31ed47dd3c6a795047bd4e92e60b4e',1,'OptionsContext']]], + ['audio_5fchannels_5fmap_2300',['audio_channels_map',['../db/dde/struct_output_stream.html#a343c63e0cf4f0aca4fb4727b2e6fa829',1,'OutputStream']]], + ['audio_5fchannels_5fmapped_2301',['audio_channels_mapped',['../db/dde/struct_output_stream.html#a50bc46d7c7636e2abbfe066872d0c1d0',1,'OutputStream']]], + ['audio_5fdisable_2302',['audio_disable',['../df/d77/struct_options_context.html#aa38553d671e91b5ad6d136923055e5bb',1,'OptionsContext']]], + ['audio_5fdrift_5fthreshold_2303',['audio_drift_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a8454a6a2632a5ce0f2983c9499649ede',1,'audio_drift_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8454a6a2632a5ce0f2983c9499649ede',1,'audio_drift_threshold(): fftools_ffmpeg_opt.c']]], + ['audio_5fsample_5frate_2304',['audio_sample_rate',['../df/d77/struct_options_context.html#a2dff4fd7f6b8f7028e4e4fe43f0d3249',1,'OptionsContext']]], + ['audio_5fsync_5fmethod_2305',['audio_sync_method',['../d7/db3/fftools__ffmpeg_8h.html#a7ebbd72251d3d58fe5b316928a40bed3',1,'audio_sync_method(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ebbd72251d3d58fe5b316928a40bed3',1,'audio_sync_method(): fftools_ffmpeg_opt.c']]], + ['audio_5fvolume_2306',['audio_volume',['../d7/db3/fftools__ffmpeg_8h.html#a363b436188dcb847ebce8ec575fdb395',1,'audio_volume(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a363b436188dcb847ebce8ec575fdb395',1,'audio_volume(): fftools_ffmpeg_opt.c']]], + ['auto_5fconversion_5ffilters_2307',['auto_conversion_filters',['../d7/db3/fftools__ffmpeg_8h.html#aebed4ab68dafa693f99e1fa92decedb7',1,'auto_conversion_filters(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aebed4ab68dafa693f99e1fa92decedb7',1,'auto_conversion_filters(): fftools_ffmpeg_opt.c']]], + ['autorotate_2308',['autorotate',['../df/d77/struct_options_context.html#a69b72bacd7b4ac7c63d9799cd6b8cc7f',1,'OptionsContext::autorotate()'],['../d3/d6e/struct_input_stream.html#abcb8222561f1ee84a2f7a2157bed356c',1,'InputStream::autorotate()']]], + ['autoscale_2309',['autoscale',['../df/d77/struct_options_context.html#a0dd62107607248dc89ed14f7db77182e',1,'OptionsContext::autoscale()'],['../db/dde/struct_output_stream.html#a4aabbeb1e0b98e2211be7f36a3cde2aa',1,'OutputStream::autoscale()']]], + ['avcodec_5fopts_2310',['avcodec_opts',['../d8/d4e/fftools__cmdutils_8h.html#a5b7d57e5b7a108a1f788c92c9bb58d8e',1,'fftools_cmdutils.h']]], + ['avfilter_2311',['avfilter',['../db/dde/struct_output_stream.html#ac35ecb04b8b6ca22d10180918de95be4',1,'OutputStream']]], + ['avformat_5fopts_2312',['avformat_opts',['../d8/d4e/fftools__cmdutils_8h.html#a4a485ee1ca1f65f58e326ba65cded348',1,'fftools_cmdutils.h']]] +]; diff --git a/docs/linux/html/search/variables_10.html b/docs/linux/html/search/variables_10.html new file mode 100644 index 0000000..92982ac --- /dev/null +++ b/docs/linux/html/search/variables_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_10.js b/docs/linux/html/search/variables_10.js new file mode 100644 index 0000000..48dc20a --- /dev/null +++ b/docs/linux/html/search/variables_10.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['packets_5fwritten_2784',['packets_written',['../db/dde/struct_output_stream.html#a5a6eb3819ace72b542142a7082ceced3',1,'OutputStream']]], + ['parent_5fcategory_2785',['parent_category',['../dd/d15/struct_log_buffer.html#a3aff058881abaa39e0ad52a188465b09',1,'LogBuffer']]], + ['parent_5fname_2786',['parent_name',['../dd/d15/struct_log_buffer.html#a67849aab90d8b99804199a05790d7945',1,'LogBuffer']]], + ['pass_2787',['pass',['../df/d77/struct_options_context.html#a1cdd2a22cff6d812f00a5fb06664f134',1,'OptionsContext']]], + ['passlogfiles_2788',['passlogfiles',['../df/d77/struct_options_context.html#a964798ad981fce4fa7f38a4c281a23fa',1,'OptionsContext']]], + ['pict_5ftype_2789',['pict_type',['../db/dde/struct_output_stream.html#a606467e84f8cc1c55a33fe253accc581',1,'OutputStream']]], + ['pix_5ffmt_2790',['pix_fmt',['../df/d37/struct_h_w_accel.html#a379aaf6aad89d4c2036baf423e3bbb5e',1,'HWAccel']]], + ['pkt_2791',['pkt',['../d3/d6e/struct_input_stream.html#a9d7d1e08713e8fb98d18d1ef6367e8e6',1,'InputStream::pkt()'],['../d8/d99/struct_input_file.html#a025ca3ac4d4e6b9ebe7f6a8f548f8ca6',1,'InputFile::pkt()'],['../db/dde/struct_output_stream.html#a34db2d7b3922da876db8ed464d7a5114',1,'OutputStream::pkt()']]], + ['presets_2792',['presets',['../df/d77/struct_options_context.html#ae4626f848474b1ce5648eb4936074020',1,'OptionsContext']]], + ['prev_5fsub_2793',['prev_sub',['../d3/d6e/struct_input_stream.html#a620e4a8547e0bedc99f562539fc30421',1,'InputStream']]], + ['print_5fformat_2794',['print_format',['../d8/d78/fftools__ffprobe_8c.html#ae06059755546c6c056d086755a2cb183',1,'fftools_ffprobe.c']]], + ['print_5finput_5ffilename_2795',['print_input_filename',['../d8/d78/fftools__ffprobe_8c.html#a531c7f37d6bd8955feadf5fe43c1b574',1,'fftools_ffprobe.c']]], + ['print_5finteger_2796',['print_integer',['../d6/dff/struct_writer.html#a6b757628daceb0e7d1271086ed4329a7',1,'Writer']]], + ['print_5frational_2797',['print_rational',['../d6/dff/struct_writer.html#a7e1995fb5f379a4b7c63d0b0464f541b',1,'Writer']]], + ['print_5fsection_2798',['print_section',['../d2/ddd/struct_compact_context.html#af0b37847b18bd84f3d786c7e824356ee',1,'CompactContext']]], + ['print_5fsection_5ffooter_2799',['print_section_footer',['../d6/dff/struct_writer.html#ab59c327a5f35dc6befaa9275e440bf98',1,'Writer']]], + ['print_5fsection_5fheader_2800',['print_section_header',['../d6/dff/struct_writer.html#a978214b80ca8a1074b18c057215cb423',1,'Writer']]], + ['print_5fstats_2801',['print_stats',['../d7/db3/fftools__ffmpeg_8h.html#a2e982c39d1861f0c59ccdd2fb028ec68',1,'print_stats(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2e982c39d1861f0c59ccdd2fb028ec68',1,'print_stats(): fftools_ffmpeg_opt.c']]], + ['print_5fstring_2802',['print_string',['../d6/dff/struct_writer.html#a004534de75d5c156c9ad3c5f280a95bd',1,'Writer']]], + ['priv_2803',['priv',['../d1/da2/struct_writer_context.html#a5b071322a7adc4478ba1c381bdc68202',1,'WriterContext']]], + ['priv_5fclass_2804',['priv_class',['../d6/dff/struct_writer.html#a66be370a26c5bf349d83fc61dd584ca0',1,'Writer']]], + ['priv_5fsize_2805',['priv_size',['../d6/dff/struct_writer.html#a648833a5a5c772b6b2141559ab7be92a',1,'Writer']]], + ['program_2806',['program',['../df/d77/struct_options_context.html#ad5b2e0fb210c4bb546852fc813af0797',1,'OptionsContext']]], + ['program_5fbirth_5fyear_2807',['program_birth_year',['../d7/dcc/fftools__cmdutils_8c.html#a83fbf976c7976ea554e7bda1d266b0a2',1,'program_birth_year(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2',1,'program_birth_year(): fftools_cmdutils.c']]], + ['program_5fexit_2808',['program_exit',['../d7/dcc/fftools__cmdutils_8c.html#a70a33336401e81adb9d98c23ec4e77b7',1,'fftools_cmdutils.c']]], + ['program_5fname_2809',['program_name',['../d7/dcc/fftools__cmdutils_8c.html#a6afce516a5adaeabd7087b767bab5886',1,'program_name(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886',1,'program_name(): fftools_cmdutils.c']]], + ['progress_5favio_2810',['progress_avio',['../d7/d48/fftools__ffmpeg_8c.html#a863888d6549c9004ae0aec0bfa0b6994',1,'progress_avio(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a863888d6549c9004ae0aec0bfa0b6994',1,'progress_avio(): fftools_ffmpeg.c']]], + ['pts_2811',['pts',['../d3/d6e/struct_input_stream.html#a5e77505bdc5afbc6ab5cf613894925b4',1,'InputStream']]] +]; diff --git a/docs/linux/html/search/variables_11.html b/docs/linux/html/search/variables_11.html new file mode 100644 index 0000000..94f1a8c --- /dev/null +++ b/docs/linux/html/search/variables_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_11.js b/docs/linux/html/search/variables_11.js new file mode 100644 index 0000000..760f9c0 --- /dev/null +++ b/docs/linux/html/search/variables_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['qp_5fhist_2812',['qp_hist',['../d7/db3/fftools__ffmpeg_8h.html#ad2242da08cbe3afb277b3be3579935fe',1,'qp_hist(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ad2242da08cbe3afb277b3be3579935fe',1,'qp_hist(): fftools_ffmpeg_opt.c']]], + ['qp_5fhistogram_2813',['qp_histogram',['../d7/d48/fftools__ffmpeg_8c.html#a7c5fbe0152e9099ad6dfee42cb2ceb90',1,'fftools_ffmpeg.c']]], + ['qscale_2814',['qscale',['../df/d77/struct_options_context.html#ac2f888221004268627ea9acb47f831e6',1,'OptionsContext']]], + ['quality_2815',['quality',['../db/dde/struct_output_stream.html#a8a3c873067ba39a2d4f310d2e4a06d54',1,'OutputStream']]] +]; diff --git a/docs/linux/html/search/variables_12.html b/docs/linux/html/search/variables_12.html new file mode 100644 index 0000000..61c013a --- /dev/null +++ b/docs/linux/html/search/variables_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_12.js b/docs/linux/html/search/variables_12.js new file mode 100644 index 0000000..bd305bc --- /dev/null +++ b/docs/linux/html/search/variables_12.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['rate_5femu_2816',['rate_emu',['../df/d77/struct_options_context.html#a3132753aec8bcb63437da6a28c8104e2',1,'OptionsContext::rate_emu()'],['../d8/d99/struct_input_file.html#a44943da9b6e2a44ba3951a6203b1acc4',1,'InputFile::rate_emu()']]], + ['rc_5foverrides_2817',['rc_overrides',['../df/d77/struct_options_context.html#acab9897a7ab3fdfb2109e1cc7ed10678',1,'OptionsContext']]], + ['read_5fintervals_2818',['read_intervals',['../d8/d78/fftools__ffprobe_8c.html#a5a138c620aa1aa853f8ff5e63227575c',1,'fftools_ffprobe.c']]], + ['read_5fintervals_5fnb_2819',['read_intervals_nb',['../d8/d78/fftools__ffprobe_8c.html#a01876b12bd2535f8d0a4b55fb95e0031',1,'fftools_ffprobe.c']]], + ['readrate_2820',['readrate',['../df/d77/struct_options_context.html#a601c608cec57061ad592d4469ee59295',1,'OptionsContext::readrate()'],['../d8/d99/struct_input_file.html#ad14ffedb84d846d902218fca35352270',1,'InputFile::readrate()']]], + ['real_5fusec_2821',['real_usec',['../d5/d8e/struct_benchmark_time_stamps.html#a8639f0bbe9044fc765f4ec5b3968a488',1,'BenchmarkTimeStamps']]], + ['recast_5fmedia_2822',['recast_media',['../da/d66/fftools__ffmpeg__opt_8c.html#a3cff2fc900e1d019995720f12f7b6bc0',1,'fftools_ffmpeg_opt.c']]], + ['received_5fnb_5fsignals_2823',['received_nb_signals',['../d7/d48/fftools__ffmpeg_8c.html#aa67220b3d47d990ba75e7099f11cfa68',1,'fftools_ffmpeg.c']]], + ['received_5fsigterm_2824',['received_sigterm',['../d7/d48/fftools__ffmpeg_8c.html#a1a9c2c01a83c8bbcd4eb7a8af9a0b160',1,'fftools_ffmpeg.c']]], + ['reconfiguration_2825',['reconfiguration',['../d9/de7/struct_filter_graph.html#a7bc2aac4115ac1a2fc951e5d0a403824',1,'FilterGraph']]], + ['recording_5ftime_2826',['recording_time',['../df/d77/struct_options_context.html#a6e38d08faed408a51e45aaf80938d5d6',1,'OptionsContext::recording_time()'],['../d8/d99/struct_input_file.html#a66ab0bb6b0332c27bb6b51a0b67d1459',1,'InputFile::recording_time()'],['../de/df2/struct_output_file.html#ad160ce6520aad386bead7eb45f6f55a0',1,'OutputFile::recording_time()']]], + ['redirectionenabled_2827',['redirectionEnabled',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aad49c603a65074ce7a5d491ce9a54eb5',1,'FFmpegKitConfig.cpp']]], + ['ref_5fpar_2828',['ref_par',['../db/dde/struct_output_stream.html#a9f511baf1fef17812bf650c35c828382',1,'OutputStream']]], + ['registered_5fwriters_2829',['registered_writers',['../d8/d78/fftools__ffprobe_8c.html#aea7091c23f35973b98bc9572f6d249ea',1,'fftools_ffprobe.c']]], + ['reinit_5ffilters_2830',['reinit_filters',['../df/d77/struct_options_context.html#a9350e7c932cffac2c0abb0084f2e01c6',1,'OptionsContext::reinit_filters()'],['../d3/d6e/struct_input_stream.html#a809d93e64e76fe2f142102e58dc82a1e',1,'InputStream::reinit_filters()']]], + ['report_5fcallback_2831',['report_callback',['../d7/dcc/fftools__cmdutils_8c.html#ab144f8d36db79a4fa550cd011f39748a',1,'report_callback(): fftools_ffmpeg.c'],['../d7/d48/fftools__ffmpeg_8c.html#ab144f8d36db79a4fa550cd011f39748a',1,'report_callback(): fftools_ffmpeg.c']]], + ['report_5ffile_2832',['report_file',['../d7/dcc/fftools__cmdutils_8c.html#a573c884451d6e0ad896ccffbb322be1a',1,'fftools_cmdutils.c']]], + ['report_5ffile_5flevel_2833',['report_file_level',['../d7/dcc/fftools__cmdutils_8c.html#a416cc137d25668a65eab016aa74562e7',1,'fftools_cmdutils.c']]], + ['resample_5fopts_2834',['resample_opts',['../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9',1,'OptionGroup::resample_opts()'],['../db/dde/struct_output_stream.html#a84762af19c6801936fd49d53170a3682',1,'OutputStream::resample_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a63b299e1c6a109e847bc2416887ce3d6',1,'resample_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6',1,'resample_opts(): fftools_cmdutils.h']]], + ['ret_2835',['ret',['../d3/d6e/struct_input_stream.html#a6ae65382f22317b94b7ccfe00024d31a',1,'InputStream']]], + ['return_2836',['return',['../d2/d36/fftools__ffmpeg__filter_8c.html#a9717e7bbecb906637e86cef6da3d83c2',1,'fftools_ffmpeg_filter.c']]], + ['rotate_5foverridden_2837',['rotate_overridden',['../db/dde/struct_output_stream.html#ae27ba6d2051d62f704c5693133b58b11',1,'OutputStream']]], + ['rotate_5foverride_5fvalue_2838',['rotate_override_value',['../db/dde/struct_output_stream.html#a3752b3243f9a089543bc1dc67b3de3fc',1,'OutputStream']]], + ['run_5fas_5fdaemon_2839',['run_as_daemon',['../d7/d48/fftools__ffmpeg_8c.html#a17041c631bc79b0997f251ba11dcebc9',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/variables_13.html b/docs/linux/html/search/variables_13.html new file mode 100644 index 0000000..87b7ca6 --- /dev/null +++ b/docs/linux/html/search/variables_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_13.js b/docs/linux/html/search/variables_13.js new file mode 100644 index 0000000..6dd6e9d --- /dev/null +++ b/docs/linux/html/search/variables_13.js @@ -0,0 +1,67 @@ +var searchData= +[ + ['sample_5faspect_5fratio_2840',['sample_aspect_ratio',['../d7/d0c/struct_input_filter.html#abbd8721ddcadbfb453a4f5cdf6301c25',1,'InputFilter']]], + ['sample_5ffmts_2841',['sample_fmts',['../df/d77/struct_options_context.html#a8bc8d11aba421af1826e6ec27aaa5e3d',1,'OptionsContext']]], + ['sample_5frate_2842',['sample_rate',['../d7/d0c/struct_input_filter.html#a1c8870375203b3594e67e632119bbc10',1,'InputFilter::sample_rate()'],['../d0/d0f/struct_output_filter.html#ab0be1ec413ca98912667f1bf76fd2588',1,'OutputFilter::sample_rate()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a9feef5270e0e54f103868362df0cd27a',1,'sample_rate(): fftools_ffmpeg_filter.c']]], + ['sample_5frates_2843',['sample_rates',['../d0/d0f/struct_output_filter.html#a9f66eff9402b2790dfcea63a0010aecc',1,'OutputFilter::sample_rates()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a12ee30995b3ac94a573f01870d1289e8',1,'sample_rates(): fftools_ffmpeg_filter.c']]], + ['samples_5fdecoded_2844',['samples_decoded',['../d3/d6e/struct_input_stream.html#aa8aa609acb39eb21da43f02cdfb036eb',1,'InputStream']]], + ['samples_5fencoded_2845',['samples_encoded',['../db/dde/struct_output_stream.html#acb999bb958bdd5ba3d55d5063ebaa5b0',1,'OutputStream']]], + ['saw_5ffirst_5fts_2846',['saw_first_ts',['../d3/d6e/struct_input_stream.html#a09d78f4795c4ff17dd54204450f2d394',1,'InputStream']]], + ['sdp_5ffilename_2847',['sdp_filename',['../d7/db3/fftools__ffmpeg_8h.html#a23afba338ad9fc8a6e65ba0f6400ebc3',1,'sdp_filename(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a23afba338ad9fc8a6e65ba0f6400ebc3',1,'sdp_filename(): fftools_ffmpeg_opt.c']]], + ['section_2848',['section',['../d1/da2/struct_writer_context.html#a1a3764eca79f01c7935f6b00fb703ae9',1,'WriterContext']]], + ['section_5fpbuf_2849',['section_pbuf',['../d1/da2/struct_writer_context.html#a5c4e2da0240ebfea6358065cfc923e4e',1,'WriterContext']]], + ['sections_2850',['sections',['../d1/da2/struct_writer_context.html#aa7cd84605a2d2d861d6540e07fa8dd73',1,'WriterContext::sections()'],['../d8/d78/fftools__ffprobe_8c.html#a3c91feaf7e473df8ac146d0728af4647',1,'sections(): fftools_ffprobe.c']]], + ['seek_5ftimestamp_2851',['seek_timestamp',['../df/d77/struct_options_context.html#af81d53f595b3e6793b44515fe556eedb',1,'OptionsContext::seek_timestamp()'],['../d8/d99/struct_input_file.html#a586cfcb259a3a1641d1ed073f6bd4fe5',1,'InputFile::seek_timestamp()']]], + ['selected_5fstreams_2852',['selected_streams',['../d8/d78/fftools__ffprobe_8c.html#a6f14a8b07b51a4a2fb96ffbabd345f99',1,'fftools_ffprobe.c']]], + ['sep_2853',['sep',['../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028',1,'OptionGroupDef::sep()'],['../d3/db7/struct_flat_context.html#a529baa5a1cba47d2eb62f49b0a4fd03b',1,'FlatContext::sep()']]], + ['sep_5fstr_2854',['sep_str',['../d3/db7/struct_flat_context.html#a509af19cca73c04f13342034fee165c7',1,'FlatContext']]], + ['sessionhistorylist_2855',['sessionHistoryList',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a91279b41a9623a8794c9791189b4c605',1,'FFmpegKitConfig.cpp']]], + ['sessionhistorymap_2856',['sessionHistoryMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a92a7aa53e0c1e139b5af39b15d55f0fb',1,'FFmpegKitConfig.cpp']]], + ['sessionhistorysize_2857',['sessionHistorySize',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a24cad55e657bdaad060a621460d029f6',1,'FFmpegKitConfig.cpp']]], + ['sessionintransitmessagecountmap_2858',['sessionInTransitMessageCountMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a53e4ea34fef452476a41ab0da78798a6',1,'FFmpegKitConfig.cpp']]], + ['sessionmap_2859',['sessionMap',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7ac6ebfd0f3870da834f75c028660b79',1,'FFmpegKitConfig.cpp']]], + ['sessionmutex_2860',['sessionMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a5e72e0487e678b8e5bd78285460f1ae2',1,'FFmpegKitConfig.cpp']]], + ['shortest_2861',['shortest',['../df/d77/struct_options_context.html#ae2d67d4b8daf3a4900bef1db8882b163',1,'OptionsContext::shortest()'],['../de/df2/struct_output_file.html#acfef99893985d28ae7f7f6a92e6d1bd7',1,'OutputFile::shortest()']]], + ['show_5fall_5fentries_2862',['show_all_entries',['../d9/d11/structsection.html#a19d0aa8f9d7128239086ceb8212ee518',1,'section']]], + ['show_5fdata_5fhash_2863',['show_data_hash',['../d8/d78/fftools__ffprobe_8c.html#a454d7e55cf5de7faad0b735f68e0bc61',1,'fftools_ffprobe.c']]], + ['show_5foptional_5ffields_2864',['show_optional_fields',['../d8/d78/fftools__ffprobe_8c.html#ae7dd9fc2d0b5d24a9a95c4c97c9c2222',1,'fftools_ffprobe.c']]], + ['show_5fprivate_5fdata_2865',['show_private_data',['../d8/d78/fftools__ffprobe_8c.html#a8eaf692f904fdf199ae0ebe0f19613e6',1,'fftools_ffprobe.c']]], + ['show_5fvalue_5funit_2866',['show_value_unit',['../d8/d78/fftools__ffprobe_8c.html#aa358f32c4225e2f89e6001798b6da3f1',1,'fftools_ffprobe.c']]], + ['si_5fprefixes_2867',['si_prefixes',['../d8/d78/fftools__ffprobe_8c.html#aa5019d8f947a814648461266ef1a5476',1,'fftools_ffprobe.c']]], + ['source_5findex_2868',['source_index',['../db/dde/struct_output_stream.html#a2a77c9bd86203478143c85e26e67df3d',1,'OutputStream']]], + ['specifier_2869',['specifier',['../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81',1,'SpecifierOpt']]], + ['st_2870',['st',['../d3/d6e/struct_input_stream.html#acf438e2a33238676cb3f68b39ae18049',1,'InputStream::st()'],['../db/dde/struct_output_stream.html#ac11510a2eeed3e6a14f0fbc85db2e088',1,'OutputStream::st()']]], + ['start_2871',['start',['../d3/d6e/struct_input_stream.html#a6718f5f7b2206b2848af5e35ae3a9186',1,'InputStream::start()'],['../d8/dee/struct_read_interval.html#a5b03e4fa1bae4e8fcc11c8d07076b07a',1,'ReadInterval::start()']]], + ['start_5fat_5fzero_2872',['start_at_zero',['../d7/db3/fftools__ffmpeg_8h.html#a9133815d152568ea1d45114b7866253a',1,'start_at_zero(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a9133815d152568ea1d45114b7866253a',1,'start_at_zero(): fftools_ffmpeg_opt.c']]], + ['start_5fis_5foffset_2873',['start_is_offset',['../d8/dee/struct_read_interval.html#af0ab0e88c32d4fc333a3561b9bca21f9',1,'ReadInterval']]], + ['start_5ftime_2874',['start_time',['../df/d77/struct_options_context.html#a279a94fdf145188a7999ec4620fa83d6',1,'OptionsContext::start_time()'],['../d8/d99/struct_input_file.html#af29c0dd6f71cb1454c23abebca06f604',1,'InputFile::start_time()'],['../de/df2/struct_output_file.html#aa4fee66db612c26276b5de30d834d5e0',1,'OutputFile::start_time()']]], + ['start_5ftime_5feof_2875',['start_time_eof',['../df/d77/struct_options_context.html#a91cbd517481a882c0e2ae831e40b1585',1,'OptionsContext']]], + ['statisticscallback_2876',['statisticsCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a94447b62a78f7c737729ced2596527d2',1,'FFmpegKitConfig.cpp']]], + ['stats_5fperiod_2877',['stats_period',['../d7/db3/fftools__ffmpeg_8h.html#a18d8c3bcec71d962707be76f1bb8f05e',1,'stats_period(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a18d8c3bcec71d962707be76f1bb8f05e',1,'stats_period(): fftools_ffmpeg_opt.c']]], + ['stdin_5finteraction_2878',['stdin_interaction',['../d7/db3/fftools__ffmpeg_8h.html#a48480a652b5966f72dc167d6bb44b061',1,'stdin_interaction(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a48480a652b5966f72dc167d6bb44b061',1,'stdin_interaction(): fftools_ffmpeg_opt.c']]], + ['stop_5ftime_2879',['stop_time',['../df/d77/struct_options_context.html#ac73bbf437507775263f8ea53b17f05c6',1,'OptionsContext']]], + ['str_2880',['str',['../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4',1,'SpecifierOpt']]], + ['stream_5fcopy_2881',['stream_copy',['../db/dde/struct_output_stream.html#a9ac0b71747fe93f498224dacf1b0b674',1,'OutputStream']]], + ['stream_5fidx_2882',['stream_idx',['../d6/d2c/struct_audio_channel_map.html#a32f90014a8e83a47c8ef3893bc1c100e',1,'AudioChannelMap']]], + ['stream_5findex_2883',['stream_index',['../db/d60/struct_stream_map.html#a2982108d57751e19c308fe338361b066',1,'StreamMap']]], + ['stream_5fmaps_2884',['stream_maps',['../df/d77/struct_options_context.html#a4675becf36ed5d3e6510b3e9c9ac4d77',1,'OptionsContext']]], + ['stream_5fspecifier_2885',['stream_specifier',['../d8/d78/fftools__ffprobe_8c.html#a5082290e1ad8a823c88862ddae6d135c',1,'fftools_ffprobe.c']]], + ['streamid_5fmap_2886',['streamid_map',['../df/d77/struct_options_context.html#a9c7cad5690796e35bc68e5a931cee22c',1,'OptionsContext']]], + ['streams_2887',['streams',['../d8/d99/struct_input_file.html#a2253004c4ad8d6cb3256821c656bcf19',1,'InputFile']]], + ['string_5fvalidation_2888',['string_validation',['../d1/da2/struct_writer_context.html#ae4d434ae00d70b9f03be447b7c8fc02b',1,'WriterContext']]], + ['string_5fvalidation_5freplacement_2889',['string_validation_replacement',['../d1/da2/struct_writer_context.html#a347ccaf7bdb45104accb665cab1b093f',1,'WriterContext']]], + ['string_5fvalidation_5futf8_5fflags_2890',['string_validation_utf8_flags',['../d1/da2/struct_writer_context.html#ac2b79828ee0384f432182d1a03bf0083',1,'WriterContext']]], + ['sub2video_2891',['sub2video',['../d3/d6e/struct_input_stream.html#acc9fee6e45ff302a2c1a06a053cbaa22',1,'InputStream']]], + ['sub_5fqueue_2892',['sub_queue',['../d4/dfd/struct_input_stream_1_1sub2video.html#ad2b2360342940822238e5ba6c1f48718',1,'InputStream::sub2video']]], + ['subtitle_2893',['subtitle',['../d3/d6e/struct_input_stream.html#ae37fb0410a65c6b2e5a38614f4481f07',1,'InputStream']]], + ['subtitle_5fdisable_2894',['subtitle_disable',['../df/d77/struct_options_context.html#af54b258dc24371896f1278cc2652472e',1,'OptionsContext']]], + ['subtitle_5fout_2895',['subtitle_out',['../d7/d48/fftools__ffmpeg_8c.html#ade129f2073eabef96dbc06850238cef6',1,'fftools_ffmpeg.c']]], + ['success_2896',['Success',['../d4/dcf/classffmpegkit_1_1_return_code.html#a4c6517c8495a3ee52afd849a77440105',1,'ffmpegkit::ReturnCode']]], + ['swr_5fopts_2897',['swr_opts',['../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d',1,'OptionGroup::swr_opts()'],['../db/dde/struct_output_stream.html#a0c7606649d3fd916e9eaf19e12fd92c7',1,'OutputStream::swr_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a011fa5c3ecc237f646a56085659f53f3',1,'swr_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3',1,'swr_opts(): fftools_cmdutils.c']]], + ['sws_5fdict_2898',['sws_dict',['../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b',1,'OptionGroup::sws_dict()'],['../db/dde/struct_output_stream.html#ad55eb675077dc7b468f15f02a03ded5a',1,'OutputStream::sws_dict()'],['../d7/dcc/fftools__cmdutils_8c.html#a8c8028bff4ba308f54869748db9f692d',1,'sws_dict(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d',1,'sws_dict(): fftools_cmdutils.c']]], + ['sync_5ffile_5findex_2899',['sync_file_index',['../db/d60/struct_stream_map.html#aebf79dd4732117dab9f6b88ffe0d6fb0',1,'StreamMap']]], + ['sync_5fist_2900',['sync_ist',['../db/dde/struct_output_stream.html#abc0329cada4c47662e2777d392a38efb',1,'OutputStream']]], + ['sync_5fopts_2901',['sync_opts',['../db/dde/struct_output_stream.html#a50f00c2ce0091c940779ac59227ad934',1,'OutputStream']]], + ['sync_5fstream_5findex_2902',['sync_stream_index',['../db/d60/struct_stream_map.html#a8839b093e6e8ae59892cfe68d9dc99c6',1,'StreamMap']]], + ['sys_5fusec_2903',['sys_usec',['../d5/d8e/struct_benchmark_time_stamps.html#a06a44cae9b837e8481ba86a648cbcc95',1,'BenchmarkTimeStamps']]] +]; diff --git a/docs/linux/html/search/variables_14.html b/docs/linux/html/search/variables_14.html new file mode 100644 index 0000000..874fe59 --- /dev/null +++ b/docs/linux/html/search/variables_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_14.js b/docs/linux/html/search/variables_14.js new file mode 100644 index 0000000..bca76df --- /dev/null +++ b/docs/linux/html/search/variables_14.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['terminate_5fline_2904',['terminate_line',['../d2/ddd/struct_compact_context.html#a14c571b1a684a9d550b5649fcbaa93f8',1,'CompactContext']]], + ['thread_5fqueue_5fsize_2905',['thread_queue_size',['../df/d77/struct_options_context.html#a937b3c7359909e3119e2c2e293f6d484',1,'OptionsContext']]], + ['time_5fbase_2906',['time_base',['../d8/d99/struct_input_file.html#a6b5d8ebb8e444603bd2c35f683b2790b',1,'InputFile']]], + ['time_5fbases_2907',['time_bases',['../df/d77/struct_options_context.html#ae02058128d0e80f1bdb47dfaa4480264',1,'OptionsContext']]], + ['top_5ffield_5ffirst_2908',['top_field_first',['../df/d77/struct_options_context.html#aaffc2f112ebe3fe324aa61e61c5388b6',1,'OptionsContext::top_field_first()'],['../d3/d6e/struct_input_stream.html#abc71c343e0ade7e102adb45badfc6243',1,'InputStream::top_field_first()'],['../db/dde/struct_output_stream.html#a236bf5647b00c43936bda537db39ec26',1,'OutputStream::top_field_first()']]], + ['transcode_5finit_5fdone_2909',['transcode_init_done',['../d7/d48/fftools__ffmpeg_8c.html#a72854b6777d538ea0fb18d2552741072',1,'fftools_ffmpeg.c']]], + ['ts_5foffset_2910',['ts_offset',['../d8/d99/struct_input_file.html#a098fa89f90be39e95d5e42041e8cebfb',1,'InputFile']]], + ['ts_5fscale_2911',['ts_scale',['../df/d77/struct_options_context.html#ae68be6f99547b37890753351e7a41b10',1,'OptionsContext::ts_scale()'],['../d3/d6e/struct_input_stream.html#a0dae26daa277d99147113de4ea449bc1',1,'InputStream::ts_scale()']]], + ['type_2912',['type',['../de/dc7/struct_h_w_device.html#ad5294ac2b414deacbe2aac7b9c8ba987',1,'HWDevice::type()'],['../d7/d0c/struct_input_filter.html#aa033b48aa4612dc26aa8e66e83f932bc',1,'InputFilter::type()'],['../d0/d0f/struct_output_filter.html#aed4c46a5df26ff71f3f718a0056af294',1,'OutputFilter::type()']]] +]; diff --git a/docs/linux/html/search/variables_15.html b/docs/linux/html/search/variables_15.html new file mode 100644 index 0000000..3ca8799 --- /dev/null +++ b/docs/linux/html/search/variables_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_15.js b/docs/linux/html/search/variables_15.js new file mode 100644 index 0000000..e8f4616 --- /dev/null +++ b/docs/linux/html/search/variables_15.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['u_2913',['u',['../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521',1,'SpecifierOpt::u()'],['../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212',1,'OptionDef::u()']]], + ['ui64_2914',['ui64',['../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d',1,'SpecifierOpt']]], + ['unavailable_2915',['unavailable',['../db/dde/struct_output_stream.html#a4f86ebf7f573017f4010e2ccd07ffa65',1,'OutputStream']]], + ['uninit_2916',['uninit',['../d6/dff/struct_writer.html#adfa6b21c67d1c8eafd448cfd1f1b644a',1,'Writer']]], + ['unique_5fname_2917',['unique_name',['../d9/d11/structsection.html#a87a965308809cb32330476fbac8ad894',1,'section']]], + ['unit_2918',['unit',['../d9/d6d/structunit__value.html#a318959a4ba5a58de0585e5e95290f04a',1,'unit_value']]], + ['unit_5fbit_5fper_5fsecond_5fstr_2919',['unit_bit_per_second_str',['../d8/d78/fftools__ffprobe_8c.html#a6f91be66e703437cdc2b1773ecb334a5',1,'fftools_ffprobe.c']]], + ['unit_5fbyte_5fstr_2920',['unit_byte_str',['../d8/d78/fftools__ffprobe_8c.html#a250f4947756e7a8ec614472a3d7cd7f8',1,'fftools_ffprobe.c']]], + ['unit_5fhertz_5fstr_2921',['unit_hertz_str',['../d8/d78/fftools__ffprobe_8c.html#a529e1f2a208d7b15cacd0664001d8776',1,'fftools_ffprobe.c']]], + ['unit_5fsecond_5fstr_2922',['unit_second_str',['../d8/d78/fftools__ffprobe_8c.html#a22df03c677e303d34bbadd91b0cc8259',1,'fftools_ffprobe.c']]], + ['use_5fbyte_5fvalue_5fbinary_5fprefix_2923',['use_byte_value_binary_prefix',['../d8/d78/fftools__ffprobe_8c.html#a19c990a79036edf4e40bd8a21381895d',1,'fftools_ffprobe.c']]], + ['use_5fvalue_5fprefix_2924',['use_value_prefix',['../d8/d78/fftools__ffprobe_8c.html#ad362e718f93320491ed082eb1a6075ab',1,'fftools_ffprobe.c']]], + ['use_5fvalue_5fsexagesimal_5fformat_2925',['use_value_sexagesimal_format',['../d8/d78/fftools__ffprobe_8c.html#ace811d67e33a26ad25d9ad46199c9c64',1,'fftools_ffprobe.c']]], + ['user_5fset_5fdiscard_2926',['user_set_discard',['../d3/d6e/struct_input_stream.html#a86b730f87f0f8ebd088f94af51d91b96',1,'InputStream']]], + ['user_5fusec_2927',['user_usec',['../d5/d8e/struct_benchmark_time_stamps.html#ad0f18c644b145f2ef6c7bd37c22d7cd6',1,'BenchmarkTimeStamps']]] +]; diff --git a/docs/linux/html/search/variables_16.html b/docs/linux/html/search/variables_16.html new file mode 100644 index 0000000..2b5a433 --- /dev/null +++ b/docs/linux/html/search/variables_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_16.js b/docs/linux/html/search/variables_16.js new file mode 100644 index 0000000..f092597 --- /dev/null +++ b/docs/linux/html/search/variables_16.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['val_2928',['val',['../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236',1,'Option::val()'],['../d9/d6d/structunit__value.html#aa6f21618a8e5c2349c473b8de34dca09',1,'unit_value::val()']]], + ['video_5fdisable_2929',['video_disable',['../df/d77/struct_options_context.html#a9cef7b5ff74cf5f810d8bae95b516c66',1,'OptionsContext']]], + ['video_5fsync_5fmethod_2930',['video_sync_method',['../d7/db3/fftools__ffmpeg_8h.html#a2f1889d8ac7f17c1a7b5168bb4b32d17',1,'video_sync_method(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2f1889d8ac7f17c1a7b5168bb4b32d17',1,'video_sync_method(): fftools_ffmpeg_opt.c']]], + ['videotoolbox_5fpixfmt_2931',['videotoolbox_pixfmt',['../d7/db3/fftools__ffmpeg_8h.html#ae8d49a71f90c4ef48c8666d8ea86b445',1,'fftools_ffmpeg.h']]], + ['vstats_5ffile_2932',['vstats_file',['../d7/d48/fftools__ffmpeg_8c.html#aadf678a3a88dfccc1dc85f2fee5842fc',1,'fftools_ffmpeg.c']]], + ['vstats_5ffilename_2933',['vstats_filename',['../d7/db3/fftools__ffmpeg_8h.html#a767f4348992f8faeaf443a3b0292d87a',1,'vstats_filename(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a767f4348992f8faeaf443a3b0292d87a',1,'vstats_filename(): fftools_ffmpeg_opt.c']]], + ['vstats_5fversion_2934',['vstats_version',['../d7/db3/fftools__ffmpeg_8h.html#a71ada39e51376d4fa3efbc6ed705d39b',1,'vstats_version(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a71ada39e51376d4fa3efbc6ed705d39b',1,'vstats_version(): fftools_ffmpeg_opt.c']]] +]; diff --git a/docs/linux/html/search/variables_17.html b/docs/linux/html/search/variables_17.html new file mode 100644 index 0000000..16914b7 --- /dev/null +++ b/docs/linux/html/search/variables_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_17.js b/docs/linux/html/search/variables_17.js new file mode 100644 index 0000000..c71aaa9 --- /dev/null +++ b/docs/linux/html/search/variables_17.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['w_2935',['w',['../d4/dfd/struct_input_stream_1_1sub2video.html#a0bd83c4ad9f5301d63e49a9f94b8cf7d',1,'InputStream::sub2video']]], + ['want_5fsdp_2936',['want_sdp',['../d7/d48/fftools__ffmpeg_8c.html#aee22300aab0a785e62da0d08de0c20d2',1,'fftools_ffmpeg.c']]], + ['warned_5fcfg_2937',['warned_cfg',['../d7/dcc/fftools__cmdutils_8c.html#a84ffa6a1f128e14278d2e604e325a730',1,'fftools_cmdutils.c']]], + ['width_2938',['width',['../d7/d0c/struct_input_filter.html#af86da4dd2e5092c08e8b171b52c6fa66',1,'InputFilter::width()'],['../d0/d0f/struct_output_filter.html#a0a621d752f3ab33e67f0a8f22bee4118',1,'OutputFilter::width()']]], + ['within_5ftag_2939',['within_tag',['../d7/db2/struct_x_m_l_context.html#ae41c7821d5808844d337094fd2d7537f',1,'XMLContext']]], + ['wrap_5fcorrection_5fdone_2940',['wrap_correction_done',['../d3/d6e/struct_input_stream.html#a8ee44633b600f2b31541b213f0a4b322',1,'InputStream']]], + ['writer_2941',['writer',['../d1/da2/struct_writer_context.html#ae5665d3128f57b9024da5d5d029c83a4',1,'WriterContext']]], + ['writer_5fclass_2942',['writer_class',['../d8/d78/fftools__ffprobe_8c.html#aeada6140ff6d151ac2cf6519c673bb8b',1,'fftools_ffprobe.c']]], + ['writer_5foptions_2943',['writer_options',['../d8/d78/fftools__ffprobe_8c.html#a99b4a3e44b880281d305859ff21bf452',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/variables_18.html b/docs/linux/html/search/variables_18.html new file mode 100644 index 0000000..782b3bf --- /dev/null +++ b/docs/linux/html/search/variables_18.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_18.js b/docs/linux/html/search/variables_18.js new file mode 100644 index 0000000..381c2c0 --- /dev/null +++ b/docs/linux/html/search/variables_18.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['xml_5foptions_2944',['xml_options',['../d8/d78/fftools__ffprobe_8c.html#a46b2fdfc02184988ee512a9286623950',1,'fftools_ffprobe.c']]], + ['xml_5fwriter_2945',['xml_writer',['../d8/d78/fftools__ffprobe_8c.html#af6e3a7af3f399c18f51e228fd5e1d55b',1,'fftools_ffprobe.c']]], + ['xsd_5fstrict_2946',['xsd_strict',['../d7/db2/struct_x_m_l_context.html#a1db2a42cba43c5bd67bf41836350e28a',1,'XMLContext']]] +]; diff --git a/docs/linux/html/search/variables_2.html b/docs/linux/html/search/variables_2.html new file mode 100644 index 0000000..0c8a18c --- /dev/null +++ b/docs/linux/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_2.js b/docs/linux/html/search/variables_2.js new file mode 100644 index 0000000..5bc4911 --- /dev/null +++ b/docs/linux/html/search/variables_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['bin_5fstr_2313',['bin_str',['../d8/d78/fftools__ffprobe_8c.html#abb7465ed8c0c9af5cf6babf5e228fa15',1,'fftools_ffprobe.c']]], + ['bin_5fval_2314',['bin_val',['../d8/d78/fftools__ffprobe_8c.html#abe26d15b985a069bc10d6d6ce66276ad',1,'fftools_ffprobe.c']]], + ['bitexact_2315',['bitexact',['../df/d77/struct_options_context.html#a1da3f7560a0c9e44cfd8293a5d3d88ab',1,'OptionsContext']]], + ['bitstream_5ffilters_2316',['bitstream_filters',['../df/d77/struct_options_context.html#af81dac28de42b072acb1fa1a4f6f5186',1,'OptionsContext']]], + ['bsf_5fctx_2317',['bsf_ctx',['../db/dde/struct_output_stream.html#acbf75f011ccbdcad1b3b3e4c3f028b5e',1,'OutputStream']]] +]; diff --git a/docs/linux/html/search/variables_3.html b/docs/linux/html/search/variables_3.html new file mode 100644 index 0000000..19a31fc --- /dev/null +++ b/docs/linux/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_3.js b/docs/linux/html/search/variables_3.js new file mode 100644 index 0000000..29f8ba1 --- /dev/null +++ b/docs/linux/html/search/variables_3.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['callbackdatalist_2318',['callbackDataList',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a29384fb01e2fec31549a7606ba4ddaa6',1,'FFmpegKitConfig.cpp']]], + ['callbackdatamutex_2319',['callbackDataMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a2fe28290abcdf0328092c99c3d404c49',1,'FFmpegKitConfig.cpp']]], + ['callbackmonitor_2320',['callbackMonitor',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8fed644d8f39e3aeee05401e6a3e9b65',1,'FFmpegKitConfig.cpp']]], + ['callbackmutex_2321',['callbackMutex',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a066fd3d99930bcb327e0f7c510cdacd0',1,'FFmpegKitConfig.cpp']]], + ['callbackthread_2322',['callbackThread',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a8e98224bd935d38a24a6b1ed48adcc66',1,'FFmpegKitConfig.cpp']]], + ['cancel_2323',['Cancel',['../d4/dcf/classffmpegkit_1_1_return_code.html#a940730ed7b2be7e89596e6be219c0425',1,'ffmpegkit::ReturnCode']]], + ['canvas_5fsizes_2324',['canvas_sizes',['../df/d77/struct_options_context.html#a934768eaa162665ae2142a36c92febd6',1,'OptionsContext']]], + ['category_2325',['category',['../dd/d15/struct_log_buffer.html#a44eb12f4d282804c1fae1335a9206685',1,'LogBuffer']]], + ['cfr_5fnext_5fpts_2326',['cfr_next_pts',['../d3/d6e/struct_input_stream.html#a3a0034bb2959a06111810d2813975b24',1,'InputStream']]], + ['channel_5fidx_2327',['channel_idx',['../d6/d2c/struct_audio_channel_map.html#a8f4845075e76274d0c577c258b24d0bf',1,'AudioChannelMap']]], + ['channel_5flayout_2328',['channel_layout',['../d7/d0c/struct_input_filter.html#aaf4487a0c41b756199c9dde4ea8962b8',1,'InputFilter::channel_layout()'],['../d0/d0f/struct_output_filter.html#ae591539feb7f41d19236244a0dcf3896',1,'OutputFilter::channel_layout()']]], + ['channel_5flayouts_2329',['channel_layouts',['../d0/d0f/struct_output_filter.html#a4f141db3516fc737c8876f817a68b16b',1,'OutputFilter']]], + ['channels_2330',['channels',['../d7/d0c/struct_input_filter.html#ae65ce297679c894d4536e8eaaf623b84',1,'InputFilter']]], + ['chapters_5finput_5ffile_2331',['chapters_input_file',['../df/d77/struct_options_context.html#a9aa6d216666ea426199e6abd0a79d6cb',1,'OptionsContext']]], + ['children_5fids_2332',['children_ids',['../d9/d11/structsection.html#af05c5da5dcb097efe6afa4976a11f48b',1,'section']]], + ['chroma_5fintra_5fmatrices_2333',['chroma_intra_matrices',['../df/d77/struct_options_context.html#aaaa76e6545226073e088cd8cb4530175',1,'OptionsContext']]], + ['class_2334',['class',['../d1/da2/struct_writer_context.html#a9a134275e24f0ed7ceb2108e144b031d',1,'WriterContext::class()'],['../d4/da0/struct_default_context.html#afa8e41a1d7f3eb5e48102d58da4c7db3',1,'DefaultContext::class()'],['../d2/ddd/struct_compact_context.html#a8e0108669bebe76f67bb8ae4869f4843',1,'CompactContext::class()'],['../d3/db7/struct_flat_context.html#acad059863d0d81b605f384b447e49734',1,'FlatContext::class()'],['../da/d4f/struct_i_n_i_context.html#afac90343e8f73c96248fc98ca62606ce',1,'INIContext::class()'],['../d6/d53/struct_j_s_o_n_context.html#a9eab88f84786f4e69f9aaf2e34048b70',1,'JSONContext::class()'],['../d7/db2/struct_x_m_l_context.html#ad6cc91ff4b9016b87e2d7ab9ad6c1a4b',1,'XMLContext::class()']]], + ['codec_5fnames_2335',['codec_names',['../df/d77/struct_options_context.html#a8e23612186bced64639c9f43cc01cbbd',1,'OptionsContext']]], + ['codec_5fopts_2336',['codec_opts',['../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910',1,'OptionGroup::codec_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a08b59fb8c12cbc6db2dd68a367ae49d9',1,'codec_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9',1,'codec_opts(): fftools_cmdutils.h']]], + ['codec_5ftags_2337',['codec_tags',['../df/d77/struct_options_context.html#adff2612c6649f43ac5566b0fb9ba06a0',1,'OptionsContext']]], + ['compact_2338',['compact',['../d6/d53/struct_j_s_o_n_context.html#a1986ad1d679d913fb573ddde03fb83b2',1,'JSONContext']]], + ['compact_5foptions_2339',['compact_options',['../d8/d78/fftools__ffprobe_8c.html#a6035c166e9fff3d1d65fc8315f0552c2',1,'fftools_ffprobe.c']]], + ['compact_5fwriter_2340',['compact_writer',['../d8/d78/fftools__ffprobe_8c.html#a4eb0f77e10a79498e7aa43f3be460452',1,'fftools_ffprobe.c']]], + ['configuredloglevel_2341',['configuredLogLevel',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#aefb40225eb03b1329a1fe7931c312eb8',1,'FFmpegKitConfig.cpp']]], + ['context_5fname_2342',['context_name',['../dd/d15/struct_log_buffer.html#a28b55b034abd862b1b7451c1ca369650',1,'LogBuffer']]], + ['copy_5finitial_5fnonkeyframes_2343',['copy_initial_nonkeyframes',['../df/d77/struct_options_context.html#a261f0aff75b3e2453a2b6780f452028e',1,'OptionsContext::copy_initial_nonkeyframes()'],['../db/dde/struct_output_stream.html#a1c371db7f52c96799a042c70ed85ce2a',1,'OutputStream::copy_initial_nonkeyframes()']]], + ['copy_5fprior_5fstart_2344',['copy_prior_start',['../df/d77/struct_options_context.html#ac333752e0247882de17d4f3faf3511f7',1,'OptionsContext::copy_prior_start()'],['../db/dde/struct_output_stream.html#ab60bee90a33577cbdbb82e9c5fb2cf08',1,'OutputStream::copy_prior_start()']]], + ['copy_5ftb_2345',['copy_tb',['../d7/db3/fftools__ffmpeg_8h.html#a06714cf243e224ec6ebc2340c322d33f',1,'copy_tb(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a06714cf243e224ec6ebc2340c322d33f',1,'copy_tb(): fftools_ffmpeg_opt.c']]], + ['copy_5fts_2346',['copy_ts',['../d7/db3/fftools__ffmpeg_8h.html#a4840dc6953824a08972501cff95620e5',1,'copy_ts(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4840dc6953824a08972501cff95620e5',1,'copy_ts(): fftools_ffmpeg_opt.c']]], + ['copy_5fts_5ffirst_5fpts_2347',['copy_ts_first_pts',['../d7/d48/fftools__ffmpeg_8c.html#a87a4deed57fa61c241031e35789e85b0',1,'fftools_ffmpeg.c']]], + ['copy_5funknown_5fstreams_2348',['copy_unknown_streams',['../d7/d48/fftools__ffmpeg_8c.html#a5ea9613c6b24f9f9aec20afde671ad3a',1,'copy_unknown_streams(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5ea9613c6b24f9f9aec20afde671ad3a',1,'copy_unknown_streams(): fftools_ffmpeg_opt.c']]], + ['csv_5foptions_2349',['csv_options',['../d8/d78/fftools__ffprobe_8c.html#a4de3ef1fed73794735a0a34d60e3667c',1,'fftools_ffprobe.c']]], + ['csv_5fwriter_2350',['csv_writer',['../d8/d78/fftools__ffprobe_8c.html#a802dcbf96298836d8e34a3aeef3e9877',1,'fftools_ffprobe.c']]], + ['ctx_2351',['ctx',['../d8/d99/struct_input_file.html#a4062ac530db413964aa76090995b85cd',1,'InputFile::ctx()'],['../de/df2/struct_output_file.html#a6bfbcb8e4d6564ae0c488d58c0fb0d5f',1,'OutputFile::ctx()']]], + ['cur_5fgroup_2352',['cur_group',['../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13',1,'OptionParseContext']]], + ['current_5ftime_2353',['current_time',['../d7/d48/fftools__ffmpeg_8c.html#a34e7efb0f3ddef2637d934182e7b4ac6',1,'fftools_ffmpeg.c']]] +]; diff --git a/docs/linux/html/search/variables_4.html b/docs/linux/html/search/variables_4.html new file mode 100644 index 0000000..bdc37be --- /dev/null +++ b/docs/linux/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_4.js b/docs/linux/html/search/variables_4.js new file mode 100644 index 0000000..577e354 --- /dev/null +++ b/docs/linux/html/search/variables_4.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['d_2354',['d',['../d9/d6d/structunit__value.html#acfae846f0153d85d80ff7f27740b0c61',1,'unit_value::d()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a1aabac6d068eef6a7bad3fdf50a05cc8',1,'d(): fftools_ffmpeg_filter.c']]], + ['data_5fdisable_2355',['data_disable',['../df/d77/struct_options_context.html#a98dc9e32a35d8357e85325bf995fc9ac',1,'OptionsContext']]], + ['data_5fsize_2356',['data_size',['../d3/d6e/struct_input_stream.html#a6f49309998ba92804b9d16761817811e',1,'InputStream::data_size()'],['../db/dde/struct_output_stream.html#ac0eae8884c54583e58eaa1999b342179',1,'OutputStream::data_size()']]], + ['dbl_2357',['dbl',['../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c',1,'SpecifierOpt']]], + ['debug_5fts_2358',['debug_ts',['../d7/db3/fftools__ffmpeg_8h.html#ae684cc527fec35feafac738f59a5fb34',1,'debug_ts(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae684cc527fec35feafac738f59a5fb34',1,'debug_ts(): fftools_ffmpeg_opt.c']]], + ['dec_2359',['dec',['../d3/d6e/struct_input_stream.html#aec71efef67656157f493555fddbbc1c9',1,'InputStream']]], + ['dec_5fctx_2360',['dec_ctx',['../d3/d6e/struct_input_stream.html#a550ceee60cb995b284b52962dcba6597',1,'InputStream']]], + ['dec_5fstr_2361',['dec_str',['../d8/d78/fftools__ffprobe_8c.html#a817f5961e80633aea76faadb970001df',1,'fftools_ffprobe.c']]], + ['dec_5fval_2362',['dec_val',['../d8/d78/fftools__ffprobe_8c.html#a64cbc6a41a9a16a582ac02e1be7aadd0',1,'fftools_ffprobe.c']]], + ['decode_5ferror_5fstat_2363',['decode_error_stat',['../d7/d48/fftools__ffmpeg_8c.html#ab3e87e9160783294fa6cab727ff3bb63',1,'fftools_ffmpeg.c']]], + ['decoded_5fframe_2364',['decoded_frame',['../d3/d6e/struct_input_stream.html#a1492e008c195bbd4e2c84bccbc5ee216',1,'InputStream']]], + ['decoder_5fopts_2365',['decoder_opts',['../d3/d6e/struct_input_stream.html#ae73dddf18b49b6660263bc3a73a44290',1,'InputStream']]], + ['decoding_5fneeded_2366',['decoding_needed',['../d3/d6e/struct_input_stream.html#ac9fc51324b931c1db5c5c1445fe70c3b',1,'InputStream']]], + ['default_5foptions_2367',['default_options',['../d8/d78/fftools__ffprobe_8c.html#a39c1a4e90638c39af15fa36cca6061a4',1,'fftools_ffprobe.c']]], + ['default_5fwriter_2368',['default_writer',['../d8/d78/fftools__ffprobe_8c.html#ae6d7c58b98b0387aaf9ef9e0122df0f0',1,'fftools_ffprobe.c']]], + ['defaulttimeoutforasynchronousmessagesintransmit_2369',['DefaultTimeoutForAsynchronousMessagesInTransmit',['../d2/d41/classffmpegkit_1_1_abstract_session.html#aeb2c6594ab8cb5c6a186911716e7ce19',1,'ffmpegkit::AbstractSession']]], + ['device_5fref_2370',['device_ref',['../de/dc7/struct_h_w_device.html#ac1615b160aa7dc0f2e314e04cea6aaf9',1,'HWDevice']]], + ['disabled_2371',['disabled',['../db/d60/struct_stream_map.html#a4b146ee6da0df9d55d435d9153636504',1,'StreamMap']]], + ['discard_2372',['discard',['../df/d77/struct_options_context.html#a529c61a5ef7c199d9d118c18abb88e86',1,'OptionsContext::discard()'],['../d3/d6e/struct_input_stream.html#ac39249a26eeec2ed084fcc433ec9825e',1,'InputStream::discard()']]], + ['disposition_2373',['disposition',['../df/d77/struct_options_context.html#a6ef7bc766a94c671d3e9ffbe3ddaa744',1,'OptionsContext::disposition()'],['../db/dde/struct_output_stream.html#add36114220f77c320ff544748163a15d',1,'OutputStream::disposition()']]], + ['do_5fbenchmark_2374',['do_benchmark',['../d7/db3/fftools__ffmpeg_8h.html#a6df30d0ba964de54d8050a9b46a45332',1,'do_benchmark(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6df30d0ba964de54d8050a9b46a45332',1,'do_benchmark(): fftools_ffmpeg_opt.c']]], + ['do_5fbenchmark_5fall_2375',['do_benchmark_all',['../d7/db3/fftools__ffmpeg_8h.html#a8f4c866b64b4928d5f63a1a4570b6137',1,'do_benchmark_all(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8f4c866b64b4928d5f63a1a4570b6137',1,'do_benchmark_all(): fftools_ffmpeg_opt.c']]], + ['do_5fbitexact_2376',['do_bitexact',['../d8/d78/fftools__ffprobe_8c.html#a8b70297e3d3efc93b389122fb7ca6995',1,'fftools_ffprobe.c']]], + ['do_5fcount_5fframes_2377',['do_count_frames',['../d8/d78/fftools__ffprobe_8c.html#a101f705921555301cd428289479f7bbf',1,'fftools_ffprobe.c']]], + ['do_5fcount_5fpackets_2378',['do_count_packets',['../d8/d78/fftools__ffprobe_8c.html#a71724456b8c33b24bce9aa4d7208a333',1,'fftools_ffprobe.c']]], + ['do_5fdeinterlace_2379',['do_deinterlace',['../d7/db3/fftools__ffmpeg_8h.html#a7713e7604e1b50d8f1ba5c3c445dde28',1,'do_deinterlace(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7713e7604e1b50d8f1ba5c3c445dde28',1,'do_deinterlace(): fftools_ffmpeg_opt.c']]], + ['do_5fhex_5fdump_2380',['do_hex_dump',['../d7/db3/fftools__ffmpeg_8h.html#ae2acfe3d539b3a25ffa72f4143215c13',1,'do_hex_dump(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae2acfe3d539b3a25ffa72f4143215c13',1,'do_hex_dump(): fftools_ffmpeg_opt.c']]], + ['do_5fpkt_5fdump_2381',['do_pkt_dump',['../d7/db3/fftools__ffmpeg_8h.html#ae3dab0dd8f469bd52011cfdaa0370ce3',1,'do_pkt_dump(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae3dab0dd8f469bd52011cfdaa0370ce3',1,'do_pkt_dump(): fftools_ffmpeg_opt.c']]], + ['do_5fpsnr_2382',['do_psnr',['../d7/d48/fftools__ffmpeg_8c.html#ae1a832e0aee85dbc82c89e7f91b94619',1,'do_psnr(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae1a832e0aee85dbc82c89e7f91b94619',1,'do_psnr(): fftools_ffmpeg_opt.c']]], + ['do_5fread_5fframes_2383',['do_read_frames',['../d8/d78/fftools__ffprobe_8c.html#a72107ea93b998775aefd899fb86ea859',1,'fftools_ffprobe.c']]], + ['do_5fread_5fpackets_2384',['do_read_packets',['../d8/d78/fftools__ffprobe_8c.html#ad2ba5c9626635585950d178cecf099be',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fchapter_5ftags_2385',['do_show_chapter_tags',['../d8/d78/fftools__ffprobe_8c.html#a45603793f8b6b712dcda6d54b14b93f6',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fchapters_2386',['do_show_chapters',['../d8/d78/fftools__ffprobe_8c.html#ab7e87e361c2b72fcfacf9f13429b91fe',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fdata_2387',['do_show_data',['../d8/d78/fftools__ffprobe_8c.html#a37b47af072408bc43afe922c8e822188',1,'fftools_ffprobe.c']]], + ['do_5fshow_5ferror_2388',['do_show_error',['../d8/d78/fftools__ffprobe_8c.html#a8557f26b7d5a87f4b98564854346071e',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fformat_2389',['do_show_format',['../d8/d78/fftools__ffprobe_8c.html#ae74750d9edd486d94900ae8ed948f8fc',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fformat_5ftags_2390',['do_show_format_tags',['../d8/d78/fftools__ffprobe_8c.html#a8de6748a7ccccc2a063f9cce143f502d',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fframe_5ftags_2391',['do_show_frame_tags',['../d8/d78/fftools__ffprobe_8c.html#a18ae30295af9e885d908eb00aaaeb11a',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fframes_2392',['do_show_frames',['../d8/d78/fftools__ffprobe_8c.html#a45f35fcf4d72e5712b31512d3f9313b3',1,'fftools_ffprobe.c']]], + ['do_5fshow_5flibrary_5fversions_2393',['do_show_library_versions',['../d8/d78/fftools__ffprobe_8c.html#a063a15902c1a19d16d3a0a2f34564a89',1,'fftools_ffprobe.c']]], + ['do_5fshow_5flog_2394',['do_show_log',['../d8/d78/fftools__ffprobe_8c.html#a60c7149ca790a7c212e5b86678c329ff',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpacket_5ftags_2395',['do_show_packet_tags',['../d8/d78/fftools__ffprobe_8c.html#aa1e54e909ba61cc9b0c17aacc2504770',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpackets_2396',['do_show_packets',['../d8/d78/fftools__ffprobe_8c.html#ae248d98e04b3bbff4c99a9b0ec16ca06',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformat_5fcomponents_2397',['do_show_pixel_format_components',['../d8/d78/fftools__ffprobe_8c.html#ae55cd9039f968121e3461d267ae9a467',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformat_5fflags_2398',['do_show_pixel_format_flags',['../d8/d78/fftools__ffprobe_8c.html#acf0b4c15d6ede5fd83a6dd350e62c35f',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fpixel_5fformats_2399',['do_show_pixel_formats',['../d8/d78/fftools__ffprobe_8c.html#ad8cb8d629e36d9097b9a6c7cf99d721c',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprogram_5ftags_2400',['do_show_program_tags',['../d8/d78/fftools__ffprobe_8c.html#a70499b948b662d89f4df2b968f3396ab',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprogram_5fversion_2401',['do_show_program_version',['../d8/d78/fftools__ffprobe_8c.html#a12c5a4db9bcae300f4429e645b4ce9b7',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fprograms_2402',['do_show_programs',['../d8/d78/fftools__ffprobe_8c.html#ac29ad3c7e980bb73fd83139dd5471645',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstream_5fdisposition_2403',['do_show_stream_disposition',['../d8/d78/fftools__ffprobe_8c.html#aeafdf757209145c96327b834a90a6b95',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstream_5ftags_2404',['do_show_stream_tags',['../d8/d78/fftools__ffprobe_8c.html#a306720f0599c4d5cb4579b94c83c0bd0',1,'fftools_ffprobe.c']]], + ['do_5fshow_5fstreams_2405',['do_show_streams',['../d8/d78/fftools__ffprobe_8c.html#a15b9639183dd080969af7a84cce5963b',1,'fftools_ffprobe.c']]], + ['dr1_2406',['dr1',['../d3/d6e/struct_input_stream.html#a68e82e58b21bef725bb85f96ede7cc63',1,'InputStream']]], + ['dropped_5fkeyframe_2407',['dropped_keyframe',['../db/dde/struct_output_stream.html#a7cef8bf1f8b74df86df7de26110aae41',1,'OutputStream']]], + ['dst_5fptr_2408',['dst_ptr',['../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c',1,'OptionDef']]], + ['dts_2409',['dts',['../d3/d6e/struct_input_stream.html#a1e7893cdf661d9ad7c24fdccc60fa05e',1,'InputStream']]], + ['dts_5fbuffer_2410',['dts_buffer',['../d3/d6e/struct_input_stream.html#a1690691cd9bdc598717be8aa911b01ad',1,'InputStream']]], + ['dts_5fdelta_5fthreshold_2411',['dts_delta_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a00548df187333420b3e42a9aa05391bd',1,'dts_delta_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a00548df187333420b3e42a9aa05391bd',1,'dts_delta_threshold(): fftools_ffmpeg_opt.c']]], + ['dts_5ferror_5fthreshold_2412',['dts_error_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a4d87d507b1382b2b4204e77a528ea679',1,'dts_error_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a4d87d507b1382b2b4204e77a528ea679',1,'dts_error_threshold(): fftools_ffmpeg_opt.c']]], + ['dump_5fattachment_2413',['dump_attachment',['../df/d77/struct_options_context.html#a0cb98e36b0f4ceaa7700573f3f99a820',1,'OptionsContext']]], + ['dup_5fwarning_2414',['dup_warning',['../d7/d48/fftools__ffmpeg_8c.html#a02e5c9a7118413b350add8ebd900e979',1,'fftools_ffmpeg.c']]], + ['duration_2415',['duration',['../d8/d99/struct_input_file.html#a0d245cef00bdb0fa9a365ab8480ade2f',1,'InputFile']]], + ['duration_5fframes_2416',['duration_frames',['../d8/dee/struct_read_interval.html#a52b6de627c13619efc00610edb25bd1c',1,'ReadInterval']]] +]; diff --git a/docs/linux/html/search/variables_5.html b/docs/linux/html/search/variables_5.html new file mode 100644 index 0000000..6aa2249 --- /dev/null +++ b/docs/linux/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_5.js b/docs/linux/html/search/variables_5.js new file mode 100644 index 0000000..ada1584 --- /dev/null +++ b/docs/linux/html/search/variables_5.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['eagain_2417',['eagain',['../d8/d99/struct_input_file.html#a03da9ae2de14fd2c6ccc0f09e7b8de84',1,'InputFile']]], + ['element_5fname_2418',['element_name',['../d9/d11/structsection.html#a58bd0139901401c6d581fc4f0b5418b3',1,'section']]], + ['enc_2419',['enc',['../db/dde/struct_output_stream.html#a4d5a255030b41edd953fc89973d22ce5',1,'OutputStream']]], + ['enc_5fctx_2420',['enc_ctx',['../db/dde/struct_output_stream.html#ab7b674f9a0c60e3e02526d560a83f583',1,'OutputStream']]], + ['enc_5ftime_5fbases_2421',['enc_time_bases',['../df/d77/struct_options_context.html#a2b954d5a0ba4320df0e7058f6211fa73',1,'OptionsContext']]], + ['enc_5ftimebase_2422',['enc_timebase',['../db/dde/struct_output_stream.html#a8fe39b5fa1ad275e6d11dd5affaee68d',1,'OutputStream']]], + ['encoder_5fopts_2423',['encoder_opts',['../db/dde/struct_output_stream.html#abf222748d6af0fb0c72fa6b77fe2294e',1,'OutputStream']]], + ['encoding_5fneeded_2424',['encoding_needed',['../db/dde/struct_output_stream.html#abd0357b7272cdb232e2db73eb458329e',1,'OutputStream']]], + ['end_2425',['end',['../d8/dee/struct_read_interval.html#a002ba75702c43b2daba8119d75cdaf48',1,'ReadInterval']]], + ['end_5fis_5foffset_2426',['end_is_offset',['../d8/dee/struct_read_interval.html#abf5325eace097eeaeb30ca7eee8ab629',1,'ReadInterval']]], + ['end_5fpts_2427',['end_pts',['../d4/dfd/struct_input_stream_1_1sub2video.html#aaf500e3a36c6e6a6920a8e18c6478a8e',1,'InputStream::sub2video']]], + ['entries_5fto_5fshow_2428',['entries_to_show',['../d9/d11/structsection.html#a210120b400652c449b2b20db474c2305',1,'section']]], + ['eof_2429',['eof',['../d7/d0c/struct_input_filter.html#ad3e4e5041c3312bb70cc4d1f0bbd4726',1,'InputFilter']]], + ['eof_5freached_2430',['eof_reached',['../d8/d99/struct_input_file.html#a94be560ca078155d0948bbd1343cf33a',1,'InputFile']]], + ['error_2431',['error',['../db/dde/struct_output_stream.html#a578414f8337f6eaf2b88bd62dbfd9be9',1,'OutputStream']]], + ['escape_5fmode_5fstr_2432',['escape_mode_str',['../d2/ddd/struct_compact_context.html#ad9d56249a5965a5ec47f3a1241ce6b1e',1,'CompactContext']]], + ['escape_5fstr_2433',['escape_str',['../d2/ddd/struct_compact_context.html#aca6e0530af4ddb5ed96f8198e57c7250',1,'CompactContext']]], + ['ex_5fbuf_5f_5f_2434',['ex_buf__',['../df/d40/ffmpegkit__exception_8cpp.html#a602bfc62417fcbda9f5e3e6604917b3c',1,'ex_buf__(): ffmpegkit_exception.cpp'],['../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c',1,'ex_buf__(): ffmpegkit_exception.cpp']]], + ['exit_5fon_5ferror_2435',['exit_on_error',['../d7/db3/fftools__ffmpeg_8h.html#aa30902db873df385e004b04e2ecf7f6f',1,'exit_on_error(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#aa30902db873df385e004b04e2ecf7f6f',1,'exit_on_error(): fftools_ffmpeg_opt.c']]] +]; diff --git a/docs/linux/html/search/variables_6.html b/docs/linux/html/search/variables_6.html new file mode 100644 index 0000000..ce4a906 --- /dev/null +++ b/docs/linux/html/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_6.js b/docs/linux/html/search/variables_6.js new file mode 100644 index 0000000..096a484 --- /dev/null +++ b/docs/linux/html/search/variables_6.js @@ -0,0 +1,65 @@ +var searchData= +[ + ['f_2436',['f',['../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7',1,'SpecifierOpt']]], + ['ffmpeg_5fexited_2437',['ffmpeg_exited',['../d7/d48/fftools__ffmpeg_8c.html#a6d1a3c26248469cd3aa5ae35bde51df9',1,'fftools_ffmpeg.c']]], + ['ffmpeg_5foptions_2438',['ffmpeg_options',['../d7/d48/fftools__ffmpeg_8c.html#a0e80e44ada7d1ec867ccdad51129ef46',1,'ffmpeg_options(): fftools_ffmpeg.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0e80e44ada7d1ec867ccdad51129ef46',1,'ffmpeg_options(): fftools_ffmpeg.c']]], + ['ffmpegkitinitializerflag_2439',['ffmpegKitInitializerFlag',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9b1c4cadb70f7472665f37c876d06642',1,'FFmpegKitConfig.cpp']]], + ['ffmpegkitnamedpipeprefix_2440',['FFmpegKitNamedPipePrefix',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a38d4506d418b9c33105c59a6976e0594',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegkitversion_2441',['FFmpegKitVersion',['../dc/d2a/classffmpegkit_1_1_f_fmpeg_kit_config.html#a4af42a82381a735af4c6f55955254d41',1,'ffmpegkit::FFmpegKitConfig']]], + ['ffmpegsessioncompletecallback_2442',['ffmpegSessionCompleteCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4e3022cc16f205a5d2f0e4a7b3896d9b',1,'FFmpegKitConfig.cpp']]], + ['ffprobe_5foptions_2443',['ffprobe_options',['../d8/d78/fftools__ffprobe_8c.html#a1d10fae0a2fec2f3976842e6b59fa8ab',1,'fftools_ffprobe.c']]], + ['ffprobesessioncompletecallback_2444',['ffprobeSessionCompleteCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad89bc3fb67547d7ced4c6072c541fe78',1,'FFmpegKitConfig.cpp']]], + ['file_5fidx_2445',['file_idx',['../d6/d2c/struct_audio_channel_map.html#a81b4cfad9b7f201c8a0be6a030688839',1,'AudioChannelMap']]], + ['file_5findex_2446',['file_index',['../db/d60/struct_stream_map.html#af8b5bac41a8831242ead1441bdca6783',1,'StreamMap::file_index()'],['../d3/d6e/struct_input_stream.html#ad47d834630eee2dca258aa449fb1df47',1,'InputStream::file_index()'],['../db/dde/struct_output_stream.html#af608105788daa4300771669d992ef890',1,'OutputStream::file_index()']]], + ['file_5foverwrite_2447',['file_overwrite',['../d7/d48/fftools__ffmpeg_8c.html#a8268b4d228f88edaf9bbb1dff1d1338c',1,'file_overwrite(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a8268b4d228f88edaf9bbb1dff1d1338c',1,'file_overwrite(): fftools_ffmpeg_opt.c']]], + ['filter_2448',['filter',['../d7/d0c/struct_input_filter.html#a572505eef6ba5714df813d454185019d',1,'InputFilter::filter()'],['../d0/d0f/struct_output_filter.html#a52b3bac2e051f48e5eabbff6a227881c',1,'OutputFilter::filter()'],['../db/dde/struct_output_stream.html#ad8926e7de923b3eeabd66770caacfe1e',1,'OutputStream::filter()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a7736de8e25968f4aa109d4145d046d42',1,'filter(): fftools_ffmpeg_filter.c']]], + ['filter_5fcomplex_5fnbthreads_2449',['filter_complex_nbthreads',['../d7/db3/fftools__ffmpeg_8h.html#a2f2388cbef2d4d1e46d2f5d768c1e916',1,'filter_complex_nbthreads(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a2f2388cbef2d4d1e46d2f5d768c1e916',1,'filter_complex_nbthreads(): fftools_ffmpeg_opt.c']]], + ['filter_5fframe_2450',['filter_frame',['../d3/d6e/struct_input_stream.html#aa43597e5120768ad60b4dc1819942907',1,'InputStream']]], + ['filter_5fhw_5fdevice_2451',['filter_hw_device',['../d7/db3/fftools__ffmpeg_8h.html#ab91a5aa23dd763d88ff7cfedeadca8a4',1,'filter_hw_device(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ab91a5aa23dd763d88ff7cfedeadca8a4',1,'filter_hw_device(): fftools_ffmpeg_opt.c']]], + ['filter_5fin_5frescale_5fdelta_5flast_2452',['filter_in_rescale_delta_last',['../d3/d6e/struct_input_stream.html#a7ff433fc7a48e7b58a4b91e8ff05cf25',1,'InputStream']]], + ['filter_5fnbthreads_2453',['filter_nbthreads',['../d7/db3/fftools__ffmpeg_8h.html#a5be020cdefd4b772020265e2bb1d256f',1,'filter_nbthreads(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a5be020cdefd4b772020265e2bb1d256f',1,'filter_nbthreads(): fftools_ffmpeg_opt.c']]], + ['filter_5fscripts_2454',['filter_scripts',['../df/d77/struct_options_context.html#a1f50533a05eff9a22a649895d20a7949',1,'OptionsContext']]], + ['filtered_5fframe_2455',['filtered_frame',['../db/dde/struct_output_stream.html#aa4f15da482fbfdf20b41f21481e1ef3f',1,'OutputStream']]], + ['filtergraphs_2456',['filtergraphs',['../d7/d48/fftools__ffmpeg_8c.html#a902ed0b2ffc617e274426bc05118f1c3',1,'filtergraphs(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a902ed0b2ffc617e274426bc05118f1c3',1,'filtergraphs(): fftools_ffmpeg.c'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a82d07f86ee4d2a9e53332f3e87a61870',1,'filtergraphs(): fftools_ffmpeg_filter.c']]], + ['filters_2457',['filters',['../df/d77/struct_options_context.html#a5e4157c817934cc247e53311b12bc9b8',1,'OptionsContext::filters()'],['../d3/d6e/struct_input_stream.html#ad76700001c97c3ce465539f0c698e6bc',1,'InputStream::filters()'],['../db/dde/struct_output_stream.html#ac2cdba9dbd9a315fd3ea90cbfb634409',1,'OutputStream::filters()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a4b2f71496fea33042a05947cc80cbaca',1,'filters(): fftools_ffmpeg_filter.c']]], + ['filters_5fscript_2458',['filters_script',['../db/dde/struct_output_stream.html#acbe9d7fddd3daaab6e9337099ec824f2',1,'OutputStream']]], + ['find_5fstream_5finfo_2459',['find_stream_info',['../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753',1,'find_stream_info(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a96a58c49cf1904b28615fd1778a12753',1,'find_stream_info(): fftools_ffmpeg_opt.c']]], + ['finished_2460',['finished',['../db/dde/struct_output_stream.html#a2cb215b02eb510c4b19947063a5d5bd8',1,'OutputStream']]], + ['first_5fdts_2461',['first_dts',['../d3/d6e/struct_input_stream.html#aa4918133b75f0447192deea8c21f822e',1,'InputStream']]], + ['first_5fpts_2462',['first_pts',['../db/dde/struct_output_stream.html#acc5427da4501a44ef0bdb643063dcee3',1,'OutputStream']]], + ['first_5freport_2463',['first_report',['../d7/d48/fftools__ffmpeg_8c.html#a3ab3df1526985d6ab0f00e97d4d97887',1,'fftools_ffmpeg.c']]], + ['fix_5fsub_5fduration_2464',['fix_sub_duration',['../df/d77/struct_options_context.html#ae9843427ce2cc7b6f52ad689cd3f333b',1,'OptionsContext::fix_sub_duration()'],['../d3/d6e/struct_input_stream.html#a1ed159d9bc9d71428699968505629b38',1,'InputStream::fix_sub_duration()']]], + ['flags_2465',['flags',['../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014',1,'OptionDef::flags()'],['../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7',1,'OptionGroupDef::flags()'],['../d9/d11/structsection.html#a641e1f7e65fdba917c295605ef65e667',1,'section::flags()'],['../d6/dff/struct_writer.html#a2d25d61811924a454b85c0bdde04a4e5',1,'Writer::flags()']]], + ['flat_5foptions_2466',['flat_options',['../d8/d78/fftools__ffprobe_8c.html#ac76e8e7b36d79163466489c79e3c2c41',1,'fftools_ffprobe.c']]], + ['flat_5fwriter_2467',['flat_writer',['../d8/d78/fftools__ffprobe_8c.html#a295e1affb625f46a3cb08804a8748147',1,'fftools_ffprobe.c']]], + ['fmt_5fctx_2468',['fmt_ctx',['../d8/d99/struct_input_file.html#ae7302d157e70b39a4a8adbf39eb55f02',1,'InputFile']]], + ['force_5ffps_2469',['force_fps',['../df/d77/struct_options_context.html#ac0b3c8a367d846468da2731cba79c2a4',1,'OptionsContext::force_fps()'],['../db/dde/struct_output_stream.html#a51858c10bfe635eb784e3651e6d494f8',1,'OutputStream::force_fps()']]], + ['forced_5fkey_5fframes_2470',['forced_key_frames',['../df/d77/struct_options_context.html#a5337109c5edebb476d4aa2e3d0c8c3d5',1,'OptionsContext']]], + ['forced_5fkeyframes_2471',['forced_keyframes',['../db/dde/struct_output_stream.html#aa2465b9c30830c607e3af293c44317ad',1,'OutputStream']]], + ['forced_5fkeyframes_5fconst_5fnames_2472',['forced_keyframes_const_names',['../d7/d48/fftools__ffmpeg_8c.html#a1cd18e061e07695c0547d09e3dd4dcce',1,'forced_keyframes_const_names(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a1cd18e061e07695c0547d09e3dd4dcce',1,'forced_keyframes_const_names(): fftools_ffmpeg.c']]], + ['forced_5fkeyframes_5fexpr_5fconst_5fvalues_2473',['forced_keyframes_expr_const_values',['../db/dde/struct_output_stream.html#a2bb3ca2969fccae4844c2fecc281f2af',1,'OutputStream']]], + ['forced_5fkeyframes_5fpexpr_2474',['forced_keyframes_pexpr',['../db/dde/struct_output_stream.html#aed8b5cf7a740d6a369f5da9052679624',1,'OutputStream']]], + ['forced_5fkf_5fcount_2475',['forced_kf_count',['../db/dde/struct_output_stream.html#ad637657f407c25840b6d1ed803b026e3',1,'OutputStream']]], + ['forced_5fkf_5findex_2476',['forced_kf_index',['../db/dde/struct_output_stream.html#a7286a2f0c752dbd752ac4192f5c3bca8',1,'OutputStream']]], + ['forced_5fkf_5fpts_2477',['forced_kf_pts',['../db/dde/struct_output_stream.html#a53f8e114ef0ef477d3d4409568a68ff6',1,'OutputStream']]], + ['forced_5fkf_5fref_5fpts_2478',['forced_kf_ref_pts',['../db/dde/struct_output_stream.html#ac99140cc5be4b4ed439d5e4c854189fa',1,'OutputStream']]], + ['format_2479',['format',['../df/d77/struct_options_context.html#a295fefa29d7132a93db9110dce6eeab9',1,'OptionsContext::format()'],['../d7/d0c/struct_input_filter.html#ae704ff879704d2ab90dad159526785e2',1,'InputFilter::format()'],['../d0/d0f/struct_output_filter.html#aeba350050d2035d755254154e6551c49',1,'OutputFilter::format()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a8857cf8c553715fc28281bc7e2a70452',1,'format(): fftools_ffmpeg_filter.c']]], + ['format_5fopts_2480',['format_opts',['../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb',1,'OptionGroup::format_opts()'],['../d7/dcc/fftools__cmdutils_8c.html#a19714c08385a99d977c6d1bcfed4bca5',1,'format_opts(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5',1,'format_opts(): fftools_cmdutils.c']]], + ['formats_2481',['formats',['../d0/d0f/struct_output_filter.html#acd4f04cfb3db05beef2507e397aef9aa',1,'OutputFilter']]], + ['frame_2482',['frame',['../d4/dfd/struct_input_stream_1_1sub2video.html#a0e7ca3e0eebc5db360ae15f2dac3d622',1,'InputStream::sub2video']]], + ['frame_5faspect_5fratio_2483',['frame_aspect_ratio',['../db/dde/struct_output_stream.html#a363d95a998c8dffa3a493ccf39f39309',1,'OutputStream']]], + ['frame_5faspect_5fratios_2484',['frame_aspect_ratios',['../df/d77/struct_options_context.html#a1b3de44e5a909b2b3727f0d08e728db6',1,'OptionsContext']]], + ['frame_5fbits_5fper_5fraw_5fsample_2485',['frame_bits_per_raw_sample',['../d7/db3/fftools__ffmpeg_8h.html#a0d50908e34c08d4fb8de82f0d2ab1281',1,'frame_bits_per_raw_sample(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a0d50908e34c08d4fb8de82f0d2ab1281',1,'frame_bits_per_raw_sample(): fftools_ffmpeg_opt.c']]], + ['frame_5fdrop_5fthreshold_2486',['frame_drop_threshold',['../d7/db3/fftools__ffmpeg_8h.html#a709d9cd135b22926f3817be99cd98ce9',1,'frame_drop_threshold(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a709d9cd135b22926f3817be99cd98ce9',1,'frame_drop_threshold(): fftools_ffmpeg_opt.c']]], + ['frame_5fnumber_2487',['frame_number',['../db/dde/struct_output_stream.html#af6a15d8c4ef3b75cdcbc4c9576d62c7d',1,'OutputStream']]], + ['frame_5fpix_5ffmts_2488',['frame_pix_fmts',['../df/d77/struct_options_context.html#a0a7993fd78fe99ec2d1819f8ca7e2a56',1,'OptionsContext']]], + ['frame_5fqueue_2489',['frame_queue',['../d7/d0c/struct_input_filter.html#aa3127396f27743175651a8d86e7d0770',1,'InputFilter::frame_queue()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a4b2bd760e9ad33249f9485a85ca6c8d1',1,'frame_queue(): fftools_ffmpeg_filter.c']]], + ['frame_5frate_2490',['frame_rate',['../d0/d0f/struct_output_filter.html#ad45013a89f85087d03166652a94d1453',1,'OutputFilter::frame_rate()'],['../db/dde/struct_output_stream.html#ab13acc03a389653d882f221141f12ae3',1,'OutputStream::frame_rate()']]], + ['frame_5frates_2491',['frame_rates',['../df/d77/struct_options_context.html#a992eda3c4ddcd938885a702e85919cc8',1,'OptionsContext']]], + ['frame_5fsizes_2492',['frame_sizes',['../df/d77/struct_options_context.html#a480f12400c3c6da75bf2323d76bc1179',1,'OptionsContext']]], + ['framerate_2493',['framerate',['../d3/d6e/struct_input_stream.html#afbaeaac6e0b1fc3095bb90f17d58621d',1,'InputStream']]], + ['frames_5fdecoded_2494',['frames_decoded',['../d3/d6e/struct_input_stream.html#ac61e0f854402b58a64e676bdcfa75dfd',1,'InputStream']]], + ['frames_5fencoded_2495',['frames_encoded',['../db/dde/struct_output_stream.html#a669f4ed12e518b1179b038eb0c045a78',1,'OutputStream']]], + ['fully_5fqualified_2496',['fully_qualified',['../d7/db2/struct_x_m_l_context.html#a2ab2d6c54f5cf43f568fb2595de18575',1,'XMLContext']]], + ['func_5farg_2497',['func_arg',['../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841',1,'OptionDef']]] +]; diff --git a/docs/linux/html/search/variables_7.html b/docs/linux/html/search/variables_7.html new file mode 100644 index 0000000..39ffd47 --- /dev/null +++ b/docs/linux/html/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_7.js b/docs/linux/html/search/variables_7.js new file mode 100644 index 0000000..9ab493c --- /dev/null +++ b/docs/linux/html/search/variables_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['g_2498',['g',['../df/d77/struct_options_context.html#affab676ea6f867fa622a0a642d8dacf8',1,'OptionsContext']]], + ['global_5fopts_2499',['global_opts',['../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32',1,'OptionParseContext']]], + ['globallogredirectionstrategy_2500',['globalLogRedirectionStrategy',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a9a9f99a751b514643cc0b26f49ac7be9',1,'FFmpegKitConfig.cpp']]], + ['globalsessionid_2501',['globalSessionId',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af764c3599e5f16ca1cd943b094aa08fc',1,'globalSessionId(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#af764c3599e5f16ca1cd943b094aa08fc',1,'globalSessionId(): FFmpegKitConfig.cpp']]], + ['got_5foutput_2502',['got_output',['../d3/d6e/struct_input_stream.html#a408a0502c42d26b196c524812d70a7e8',1,'InputStream']]], + ['graph_2503',['graph',['../d7/d0c/struct_input_filter.html#ab1730578ae74132f67d2e847df4cc624',1,'InputFilter::graph()'],['../d0/d0f/struct_output_filter.html#aa1e455271d4a952bc771b9951beded8e',1,'OutputFilter::graph()'],['../d9/de7/struct_filter_graph.html#ae222203d54c99d90f4308f5fd2285ee5',1,'FilterGraph::graph()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a9acab86967d588b55a2305dbf9d9b2ed',1,'graph(): fftools_ffmpeg_filter.c']]], + ['graph_5fdesc_2504',['graph_desc',['../d9/de7/struct_filter_graph.html#ad45139bb5ec5c7766be0b216f9c8c2c4',1,'FilterGraph']]], + ['group_5fdef_2505',['group_def',['../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd',1,'OptionGroup::group_def()'],['../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64',1,'OptionGroupList::group_def()']]], + ['groups_2506',['groups',['../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a',1,'OptionGroupList::groups()'],['../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993',1,'OptionParseContext::groups()']]], + ['guess_5flayout_5fmax_2507',['guess_layout_max',['../df/d77/struct_options_context.html#a26363c520e8afec96cb23631798e02e4',1,'OptionsContext::guess_layout_max()'],['../d3/d6e/struct_input_stream.html#a99e6bf56ec091f8af11744e4b0499327',1,'InputStream::guess_layout_max()']]] +]; diff --git a/docs/linux/html/search/variables_8.html b/docs/linux/html/search/variables_8.html new file mode 100644 index 0000000..37a2edd --- /dev/null +++ b/docs/linux/html/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_8.js b/docs/linux/html/search/variables_8.js new file mode 100644 index 0000000..34b2d8d --- /dev/null +++ b/docs/linux/html/search/variables_8.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['h_2508',['h',['../d4/dfd/struct_input_stream_1_1sub2video.html#aeecdbc3f86c3bcbf9c42ac7a867e91db',1,'InputStream::sub2video']]], + ['handlesigint_2509',['handleSIGINT',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a43764cf85b951e6e0d9cc6f74e24c721',1,'handleSIGINT(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a43764cf85b951e6e0d9cc6f74e24c721',1,'handleSIGINT(): FFmpegKitConfig.cpp']]], + ['handlesigpipe_2510',['handleSIGPIPE',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#acd19ea38bd4b2ebb549ed4630bdca918',1,'handleSIGPIPE(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#acd19ea38bd4b2ebb549ed4630bdca918',1,'handleSIGPIPE(): FFmpegKitConfig.cpp']]], + ['handlesigquit_2511',['handleSIGQUIT',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#afbd89b768ade5ebb57205d8346acaa03',1,'handleSIGQUIT(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#afbd89b768ade5ebb57205d8346acaa03',1,'handleSIGQUIT(): FFmpegKitConfig.cpp']]], + ['handlesigterm_2512',['handleSIGTERM',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447',1,'handleSIGTERM(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#a4c48fbb1622eb5a5a7d31d1f9c2c9447',1,'handleSIGTERM(): FFmpegKitConfig.cpp']]], + ['handlesigxcpu_2513',['handleSIGXCPU',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#ad8148e9f47355623f9ad3c1578844cd3',1,'handleSIGXCPU(): FFmpegKitConfig.cpp'],['../d7/d48/fftools__ffmpeg_8c.html#ad8148e9f47355623f9ad3c1578844cd3',1,'handleSIGXCPU(): FFmpegKitConfig.cpp']]], + ['has_5fend_2514',['has_end',['../d8/dee/struct_read_interval.html#a536c58792665128dd432c3c46b3386dc',1,'ReadInterval']]], + ['has_5fnested_5felems_2515',['has_nested_elems',['../d2/ddd/struct_compact_context.html#a2384aee850920cabfaece87e4c368931',1,'CompactContext']]], + ['has_5fstart_2516',['has_start',['../d8/dee/struct_read_interval.html#a8eac5edb31716cd10d0ae859ca225525',1,'ReadInterval']]], + ['hash_2517',['hash',['../d8/d78/fftools__ffprobe_8c.html#a7cbfb5e70167d6b83df28ca230a98467',1,'fftools_ffprobe.c']]], + ['header_5fwritten_2518',['header_written',['../de/df2/struct_output_file.html#a7f831b66ccff154c4e9d880d900e5b3f',1,'OutputFile']]], + ['height_2519',['height',['../d7/d0c/struct_input_filter.html#a2ad802636d7a1f6b3be4eaaa21929c3f',1,'InputFilter::height()'],['../d0/d0f/struct_output_filter.html#aaf9223843b6d814783f74c85b38de080',1,'OutputFilter::height()']]], + ['help_2520',['help',['../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8',1,'OptionDef']]], + ['hide_5fbanner_2521',['hide_banner',['../d7/dcc/fftools__cmdutils_8c.html#ad41fedd149e409656cc5e266493d15d1',1,'hide_banner(): fftools_cmdutils.c'],['../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1',1,'hide_banner(): fftools_cmdutils.c']]], + ['hierarchical_2522',['hierarchical',['../d3/db7/struct_flat_context.html#aba2cac86faa289090af7543ff4ffcdcc',1,'FlatContext::hierarchical()'],['../da/d4f/struct_i_n_i_context.html#a5d1ae2886afbb896cdbd02fba7c3a373',1,'INIContext::hierarchical()']]], + ['hw_5fdevices_2523',['hw_devices',['../d1/dba/fftools__ffmpeg__hw_8c.html#ad66ab6371d9721a18af13707d8b2735c',1,'fftools_ffmpeg_hw.c']]], + ['hw_5fframes_5fctx_2524',['hw_frames_ctx',['../d7/d0c/struct_input_filter.html#a05a22838e8069f8fdabba7686809494c',1,'InputFilter::hw_frames_ctx()'],['../d3/d6e/struct_input_stream.html#a604ca5401ed734e8b1acb1f416f3210f',1,'InputStream::hw_frames_ctx()']]], + ['hwaccel_5fctx_2525',['hwaccel_ctx',['../d3/d6e/struct_input_stream.html#aa455c67610467c0d79f42b9c2e620d9f',1,'InputStream::hwaccel_ctx()'],['../db/dde/struct_output_stream.html#ad55cf851854249ab2b56564f92a1a419',1,'OutputStream::hwaccel_ctx()']]], + ['hwaccel_5fdevice_2526',['hwaccel_device',['../d3/d6e/struct_input_stream.html#ae48685e82826c6b5922014d47e2cb6bb',1,'InputStream']]], + ['hwaccel_5fdevice_5ftype_2527',['hwaccel_device_type',['../d3/d6e/struct_input_stream.html#af577e45cb148e174ef437f3cbaa8b628',1,'InputStream']]], + ['hwaccel_5fdevices_2528',['hwaccel_devices',['../df/d77/struct_options_context.html#a575169dff438645d5cacafbbf8933df3',1,'OptionsContext']]], + ['hwaccel_5fget_5fbuffer_2529',['hwaccel_get_buffer',['../d3/d6e/struct_input_stream.html#a7243fc5f2d9fcbb9249c8a036dc4eb1b',1,'InputStream']]], + ['hwaccel_5fid_2530',['hwaccel_id',['../d3/d6e/struct_input_stream.html#a6c3473c28e30500adb3fa7886e6d7c3e',1,'InputStream']]], + ['hwaccel_5foutput_5fformat_2531',['hwaccel_output_format',['../d3/d6e/struct_input_stream.html#a252184ceda81f2d65f63f0470b877bd4',1,'InputStream']]], + ['hwaccel_5foutput_5fformats_2532',['hwaccel_output_formats',['../df/d77/struct_options_context.html#aea26c178e1957d33b621622c30ba70d4',1,'OptionsContext']]], + ['hwaccel_5fpix_5ffmt_2533',['hwaccel_pix_fmt',['../d3/d6e/struct_input_stream.html#a05769ba0518105626a6d64386795b48f',1,'InputStream']]], + ['hwaccel_5fretrieve_5fdata_2534',['hwaccel_retrieve_data',['../d3/d6e/struct_input_stream.html#ad983487b3e7c29f53bb3336190f14051',1,'InputStream']]], + ['hwaccel_5fretrieved_5fpix_5ffmt_2535',['hwaccel_retrieved_pix_fmt',['../d3/d6e/struct_input_stream.html#a91c6f154cc61c348f644987044423e57',1,'InputStream']]], + ['hwaccel_5funinit_2536',['hwaccel_uninit',['../d3/d6e/struct_input_stream.html#a45c7ee6dae692d19ff3d275032aeea94',1,'InputStream']]], + ['hwaccels_2537',['hwaccels',['../df/d77/struct_options_context.html#acf02a9af7df5573f1b59f7d7aed0262d',1,'OptionsContext::hwaccels()'],['../d7/db3/fftools__ffmpeg_8h.html#ae4051148bbc3f89a78b6de3f6eddb997',1,'hwaccels(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#ae4051148bbc3f89a78b6de3f6eddb997',1,'hwaccels(): fftools_ffmpeg_opt.c']]] +]; diff --git a/docs/linux/html/search/variables_9.html b/docs/linux/html/search/variables_9.html new file mode 100644 index 0000000..21e5a4f --- /dev/null +++ b/docs/linux/html/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_9.js b/docs/linux/html/search/variables_9.js new file mode 100644 index 0000000..7f99534 --- /dev/null +++ b/docs/linux/html/search/variables_9.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['i_2538',['i',['../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f',1,'SpecifierOpt::i()'],['../d9/d6d/structunit__value.html#aeb4ceca9397c45a4618e4bfc2f7a8516',1,'unit_value::i()']]], + ['i64_2539',['i64',['../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3',1,'SpecifierOpt']]], + ['id_2540',['id',['../df/d37/struct_h_w_accel.html#a34f08a5231e54a2fb677aa07bfc2f2b8',1,'HWAccel::id()'],['../d8/dee/struct_read_interval.html#ad770e8186af2b225e597f085aa8c48f6',1,'ReadInterval::id()'],['../d9/d11/structsection.html#a5a7d46d81e403d982cdc2e9cf53ac23b',1,'section::id()']]], + ['iformat_2541',['iformat',['../d8/d78/fftools__ffprobe_8c.html#addff5f44b2e3c729fe264e5dd5e9a0b6',1,'fftools_ffprobe.c']]], + ['ignore_5funknown_5fstreams_2542',['ignore_unknown_streams',['../d7/d48/fftools__ffmpeg_8c.html#af776ea0ed951054185f753d7d255d884',1,'ignore_unknown_streams(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#af776ea0ed951054185f753d7d255d884',1,'ignore_unknown_streams(): fftools_ffmpeg_opt.c']]], + ['indent_5flevel_2543',['indent_level',['../d6/d53/struct_j_s_o_n_context.html#ab9ee5e75f018a7f47e611c7c78d84c7a',1,'JSONContext::indent_level()'],['../d7/db2/struct_x_m_l_context.html#a65afb619ba52f7a7827f170e18affd3e',1,'XMLContext::indent_level()']]], + ['index_2544',['index',['../d9/de7/struct_filter_graph.html#a3ec6739834ba482eacc125e05b59b246',1,'FilterGraph::index()'],['../db/dde/struct_output_stream.html#ae22fe6ee1999d45be0d8722d04294a22',1,'OutputStream::index()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a75762f767ce0a6d43ef976af30892a72',1,'index(): fftools_ffmpeg_filter.c']]], + ['ini_5foptions_2545',['ini_options',['../d8/d78/fftools__ffprobe_8c.html#a11278d562c5e5ab63bb775f5a4b09b21',1,'fftools_ffprobe.c']]], + ['ini_5fwriter_2546',['ini_writer',['../d8/d78/fftools__ffprobe_8c.html#a9ce85dfd87f7f7cc2723c81122909977',1,'fftools_ffprobe.c']]], + ['init_2547',['init',['../df/d37/struct_h_w_accel.html#a6524d8c42550b3b71408c216d0c8698a',1,'HWAccel::init()'],['../d6/dff/struct_writer.html#a8f2ad22b58bb3aa55e709f4e1a47846a',1,'Writer::init()']]], + ['initialize_2548',['initialize',['../d4/dfd/struct_input_stream_1_1sub2video.html#a15e606590596931e88ebd0b4626bfe97',1,'InputStream::sub2video']]], + ['initialized_2549',['initialized',['../db/dde/struct_output_stream.html#a312a32277e0ba791fdfb36f71badb3f6',1,'OutputStream']]], + ['input_5ffilename_2550',['input_filename',['../d8/d78/fftools__ffprobe_8c.html#a9f11f88caab44621c063475c996150d6',1,'fftools_ffprobe.c']]], + ['input_5ffiles_2551',['input_files',['../d7/d48/fftools__ffmpeg_8c.html#a8815f40afdcda266b01da4b3137a99a3',1,'input_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a8815f40afdcda266b01da4b3137a99a3',1,'input_files(): fftools_ffmpeg.c']]], + ['input_5fstream_5fpotentially_5favailable_2552',['input_stream_potentially_available',['../da/d66/fftools__ffmpeg__opt_8c.html#af3fa675a2321438e48c5af7dd5ab428e',1,'fftools_ffmpeg_opt.c']]], + ['input_5fstreams_2553',['input_streams',['../d7/d48/fftools__ffmpeg_8c.html#a117ba63aa23e378afe665cc6b7c7e043',1,'input_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a117ba63aa23e378afe665cc6b7c7e043',1,'input_streams(): fftools_ffmpeg.c']]], + ['input_5fsync_2554',['input_sync',['../d7/d48/fftools__ffmpeg_8c.html#a6c0fb8ee2ce9782980e83a03dacabf07',1,'input_sync(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a6c0fb8ee2ce9782980e83a03dacabf07',1,'input_sync(): fftools_ffmpeg_opt.c']]], + ['input_5fts_5foffset_2555',['input_ts_offset',['../df/d77/struct_options_context.html#a2c4c55a84195a848045a69557adef98f',1,'OptionsContext::input_ts_offset()'],['../d8/d99/struct_input_file.html#a4ffe49e7403ae36ac4bdff5a7a0a3486',1,'InputFile::input_ts_offset()']]], + ['inputs_2556',['inputs',['../d9/de7/struct_filter_graph.html#afb2dea711d92a8a8cb94eebecd9c1e13',1,'FilterGraph']]], + ['inputs_5fdone_2557',['inputs_done',['../db/dde/struct_output_stream.html#a7d324310316b9727905ca64a0252d652',1,'OutputStream']]], + ['int_2558',['int',['../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11',1,'fftools_ffmpeg_filter.c']]], + ['int_5fcb_2559',['int_cb',['../d7/d48/fftools__ffmpeg_8c.html#a2609f74b894b20b003247afde2bd534c',1,'int_cb(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2609f74b894b20b003247afde2bd534c',1,'int_cb(): fftools_ffmpeg.c']]], + ['inter_5fmatrices_2560',['inter_matrices',['../df/d77/struct_options_context.html#ae9d66973946dd4c5e2055fde1dd475a9',1,'OptionsContext']]], + ['intra_5fmatrices_2561',['intra_matrices',['../df/d77/struct_options_context.html#aa55c3bd5fdf5153fbc7fb675e4b19031',1,'OptionsContext']]], + ['intra_5fonly_2562',['intra_only',['../d7/d48/fftools__ffmpeg_8c.html#af848648dccdf2e8b2bfd969886657ed7',1,'intra_only(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#af848648dccdf2e8b2bfd969886657ed7',1,'intra_only(): fftools_ffmpeg_opt.c']]], + ['is_5fcfr_2563',['is_cfr',['../db/dde/struct_output_stream.html#a9cd48cbdf903d5bfee1b9c774e5cd46e',1,'OutputStream']]], + ['ist_2564',['ist',['../d7/d0c/struct_input_filter.html#a495a9bf2659a91ffa184a4cd9395469b',1,'InputFilter::ist()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a3f094febcaf5eb8767fa1d8f5cacd943',1,'ist(): fftools_ffmpeg_filter.c']]], + ['ist_5findex_2565',['ist_index',['../d8/d99/struct_input_file.html#ac2f5772aebd0118a4c464a268dbb4d9c',1,'InputFile']]], + ['item_5fsep_2566',['item_sep',['../d2/ddd/struct_compact_context.html#a803eb26c6bc39957c885f8f58dfee861',1,'CompactContext::item_sep()'],['../d6/d53/struct_j_s_o_n_context.html#a27449760861f156d74c410634dc402f7',1,'JSONContext::item_sep()']]], + ['item_5fsep_5fstr_2567',['item_sep_str',['../d2/ddd/struct_compact_context.html#ab69db67b807887e2e11247ff28f0482c',1,'CompactContext']]], + ['item_5fstart_5fend_2568',['item_start_end',['../d6/d53/struct_j_s_o_n_context.html#aec96064d069baeaa2ca81b9abbed0132',1,'JSONContext']]] +]; diff --git a/docs/linux/html/search/variables_a.html b/docs/linux/html/search/variables_a.html new file mode 100644 index 0000000..1f65055 --- /dev/null +++ b/docs/linux/html/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_a.js b/docs/linux/html/search/variables_a.js new file mode 100644 index 0000000..397c470 --- /dev/null +++ b/docs/linux/html/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['json_5foptions_2569',['json_options',['../d8/d78/fftools__ffprobe_8c.html#ac4177a44770cdeaf80b617513ef7492f',1,'fftools_ffprobe.c']]], + ['json_5fwriter_2570',['json_writer',['../d8/d78/fftools__ffprobe_8c.html#ab47efdfa1a2ab283f5aae1ed0c99a386',1,'fftools_ffprobe.c']]] +]; diff --git a/docs/linux/html/search/variables_b.html b/docs/linux/html/search/variables_b.html new file mode 100644 index 0000000..c02d066 --- /dev/null +++ b/docs/linux/html/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_b.js b/docs/linux/html/search/variables_b.js new file mode 100644 index 0000000..f00e5a8 --- /dev/null +++ b/docs/linux/html/search/variables_b.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['keep_5fpix_5ffmt_2571',['keep_pix_fmt',['../db/dde/struct_output_stream.html#af0ca53e6e06775f61dcc13af0a11ab82',1,'OutputStream']]], + ['key_2572',['key',['../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617',1,'Option']]], + ['keyaverageframerate_2573',['KeyAverageFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#af4af79e97897e0e29189460875f5f824',1,'ffmpegkit::StreamInformation']]], + ['keybitrate_2574',['KeyBitRate',['../df/d06/classffmpegkit_1_1_media_information.html#a791959faf8a82c7833eb577c2312a77a',1,'ffmpegkit::MediaInformation::KeyBitRate()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a8abe866e934c928d2971b568335f8b65',1,'ffmpegkit::StreamInformation::KeyBitRate()']]], + ['keyboard_5flast_5ftime_2575',['keyboard_last_time',['../d7/d48/fftools__ffmpeg_8c.html#a738ae2e4a18e645cfe2c6e2b0df2a658',1,'fftools_ffmpeg.c']]], + ['keychannellayout_2576',['KeyChannelLayout',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a9cf1e8a705781203225e88301caadce7',1,'ffmpegkit::StreamInformation']]], + ['keycodec_2577',['KeyCodec',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a25e6835f5909da2b1943441ae50ba3e2',1,'ffmpegkit::StreamInformation']]], + ['keycodeclong_2578',['KeyCodecLong',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a009550e9f64d59870bbc4f36db2470af',1,'ffmpegkit::StreamInformation']]], + ['keycodectimebase_2579',['KeyCodecTimeBase',['../d7/d9e/classffmpegkit_1_1_stream_information.html#accfe04ccba52242dbc925fab8aaab080',1,'ffmpegkit::StreamInformation']]], + ['keydisplayaspectratio_2580',['KeyDisplayAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a454383e0acfc66f4891af0e65171a23c',1,'ffmpegkit::StreamInformation']]], + ['keyduration_2581',['KeyDuration',['../df/d06/classffmpegkit_1_1_media_information.html#a66571dc1d1af67faa7a666730f274feb',1,'ffmpegkit::MediaInformation']]], + ['keyend_2582',['KeyEnd',['../d9/d9f/classffmpegkit_1_1_chapter.html#a068446297e39796b837b333abc686e6d',1,'ffmpegkit::Chapter']]], + ['keyendtime_2583',['KeyEndTime',['../d9/d9f/classffmpegkit_1_1_chapter.html#ac8c7225cdea083a94c7878be9cc7c639',1,'ffmpegkit::Chapter']]], + ['keyfilename_2584',['KeyFilename',['../df/d06/classffmpegkit_1_1_media_information.html#a7ce2eb36bce9b51bc6a57018b0475668',1,'ffmpegkit::MediaInformation']]], + ['keyformat_2585',['KeyFormat',['../df/d06/classffmpegkit_1_1_media_information.html#a96dc9ebfbd2d43718b66c6ba60b6c9ad',1,'ffmpegkit::MediaInformation::KeyFormat()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a6f110ad455c8586e9946198a5de64e70',1,'ffmpegkit::StreamInformation::KeyFormat()']]], + ['keyformatlong_2586',['KeyFormatLong',['../df/d06/classffmpegkit_1_1_media_information.html#a8b926548cb470373ca5ceef58574f373',1,'ffmpegkit::MediaInformation']]], + ['keyheight_2587',['KeyHeight',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a1f3135d96766e1c5739bad2282df2a80',1,'ffmpegkit::StreamInformation']]], + ['keyid_2588',['KeyId',['../d9/d9f/classffmpegkit_1_1_chapter.html#a3dbf8a318753b97a933d5f68ced28640',1,'ffmpegkit::Chapter']]], + ['keyindex_2589',['KeyIndex',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aa394685b388372ac05f1e2aab5de14c0',1,'ffmpegkit::StreamInformation']]], + ['keymediaproperties_2590',['KeyMediaProperties',['../df/d06/classffmpegkit_1_1_media_information.html#a3a7ec9249190bac7a8e36fd2ddb94c53',1,'ffmpegkit::MediaInformation']]], + ['keyrealframerate_2591',['KeyRealFrameRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a718f5b5bda3ee573f6d7db70b74ea6cf',1,'ffmpegkit::StreamInformation']]], + ['keysampleaspectratio_2592',['KeySampleAspectRatio',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aea7998af7ed6d923431e5984c281f5db',1,'ffmpegkit::StreamInformation']]], + ['keysampleformat_2593',['KeySampleFormat',['../d7/d9e/classffmpegkit_1_1_stream_information.html#aaece75b08b975956fe295ea83d76b19d',1,'ffmpegkit::StreamInformation']]], + ['keysamplerate_2594',['KeySampleRate',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a92b5087f94aa93f3b21da4bd20b71714',1,'ffmpegkit::StreamInformation']]], + ['keysize_2595',['KeySize',['../df/d06/classffmpegkit_1_1_media_information.html#a36935eb7c4394f2025fa22263236725e',1,'ffmpegkit::MediaInformation']]], + ['keystart_2596',['KeyStart',['../d9/d9f/classffmpegkit_1_1_chapter.html#a87a45014fc084a22373fc94d3e43a28f',1,'ffmpegkit::Chapter']]], + ['keystarttime_2597',['KeyStartTime',['../d9/d9f/classffmpegkit_1_1_chapter.html#a147880666877ba397ffc8510c9fe1728',1,'ffmpegkit::Chapter::KeyStartTime()'],['../df/d06/classffmpegkit_1_1_media_information.html#ad9371d2d9bcaf8395b0c6d74c65cb71d',1,'ffmpegkit::MediaInformation::KeyStartTime()']]], + ['keytags_2598',['KeyTags',['../d9/d9f/classffmpegkit_1_1_chapter.html#a7c25258d7ad56e83cb9a56154a059b22',1,'ffmpegkit::Chapter::KeyTags()'],['../df/d06/classffmpegkit_1_1_media_information.html#aeae08106ddcd31db5225ef88feb3af68',1,'ffmpegkit::MediaInformation::KeyTags()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#a0c7a83bb8c8bf94a3d3a3bae6fd1a728',1,'ffmpegkit::StreamInformation::KeyTags()']]], + ['keytimebase_2599',['KeyTimeBase',['../d9/d9f/classffmpegkit_1_1_chapter.html#accf6a090708e28875d6f3a6ae36f2444',1,'ffmpegkit::Chapter::KeyTimeBase()'],['../d7/d9e/classffmpegkit_1_1_stream_information.html#aae63f7f7f56aa16daa4b7b1e4214d175',1,'ffmpegkit::StreamInformation::KeyTimeBase()']]], + ['keytype_2600',['KeyType',['../d7/d9e/classffmpegkit_1_1_stream_information.html#a7a9cdad0acd9e55c4e88c5ff7681dee9',1,'ffmpegkit::StreamInformation']]], + ['keywidth_2601',['KeyWidth',['../d7/d9e/classffmpegkit_1_1_stream_information.html#ad1c96a726b4874b148b0b13d90f21de3',1,'ffmpegkit::StreamInformation']]] +]; diff --git a/docs/linux/html/search/variables_c.html b/docs/linux/html/search/variables_c.html new file mode 100644 index 0000000..4b866c6 --- /dev/null +++ b/docs/linux/html/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_c.js b/docs/linux/html/search/variables_c.js new file mode 100644 index 0000000..7f49252 --- /dev/null +++ b/docs/linux/html/search/variables_c.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['last_5fdropped_2602',['last_dropped',['../db/dde/struct_output_stream.html#a0466eb4661da0ffe42946159cfe39a90',1,'OutputStream']]], + ['last_5fframe_2603',['last_frame',['../db/dde/struct_output_stream.html#a4a1859416457382b2ec12a7fac7b4220',1,'OutputStream']]], + ['last_5fmux_5fdts_2604',['last_mux_dts',['../db/dde/struct_output_stream.html#a1fd50164583dbdc664706be005120c1d',1,'OutputStream']]], + ['last_5fnb0_5fframes_2605',['last_nb0_frames',['../db/dde/struct_output_stream.html#af290a1517c777ec365f9b8d986e3f495',1,'OutputStream']]], + ['last_5fpts_2606',['last_pts',['../d4/dfd/struct_input_stream_1_1sub2video.html#a992c9fe5de3acf5dce388cffda4fdce8',1,'InputStream::sub2video']]], + ['last_5ftime_2607',['last_time',['../d7/d48/fftools__ffmpeg_8c.html#acc56efe535248496e9ae4916b2105f73',1,'fftools_ffmpeg.c']]], + ['last_5fts_2608',['last_ts',['../d8/d99/struct_input_file.html#aa0b8f89bb033d864c83cc85c6b8db4ca',1,'InputFile']]], + ['level_2609',['level',['../d1/da2/struct_writer_context.html#a70f4367919173df339905042a73df0f4',1,'WriterContext']]], + ['limit_5ffilesize_2610',['limit_filesize',['../df/d77/struct_options_context.html#a7af52a5756a9424bbfebe59ab7e08061',1,'OptionsContext::limit_filesize()'],['../de/df2/struct_output_file.html#a4482c7ccf1b6d9f56a7b02490a60fbd8',1,'OutputFile::limit_filesize()']]], + ['linklabel_2611',['linklabel',['../db/d60/struct_stream_map.html#aca10df0c2fe6f0e6c13c7b536f6ef7d2',1,'StreamMap']]], + ['log_5fbuffer_2612',['log_buffer',['../d8/d78/fftools__ffprobe_8c.html#a901429a8dc63d249974abfe9c0db19cd',1,'fftools_ffprobe.c']]], + ['log_5fbuffer_5fsize_2613',['log_buffer_size',['../d8/d78/fftools__ffprobe_8c.html#a49f1ce7d20b4283666e4c7b46a42cf78',1,'fftools_ffprobe.c']]], + ['log_5flevel_2614',['log_level',['../dd/d15/struct_log_buffer.html#af3028bcf90ea9a33f041e1cac4f4a29b',1,'LogBuffer']]], + ['log_5fmessage_2615',['log_message',['../dd/d15/struct_log_buffer.html#a5dad0b243a5ca31e55d6f2d0e751302e',1,'LogBuffer']]], + ['logcallback_2616',['logCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#a7e70dcb2518bb21bffb91bdd7133d329',1,'FFmpegKitConfig.cpp']]], + ['logfile_2617',['logfile',['../db/dde/struct_output_stream.html#af1ef91b1ddb70244dd37415f774e025b',1,'OutputStream']]], + ['logfile_5fprefix_2618',['logfile_prefix',['../db/dde/struct_output_stream.html#afd6ee54ae3807e7bdaec44f2c12c99e1',1,'OutputStream']]], + ['longjmp_5fvalue_2619',['longjmp_value',['../d7/dcc/fftools__cmdutils_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c'],['../d7/d48/fftools__ffmpeg_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c'],['../d8/d78/fftools__ffprobe_8c.html#a2dd980e57b1492885535ec1b72b1aa82',1,'longjmp_value(): fftools_cmdutils.c']]], + ['loop_2620',['loop',['../df/d77/struct_options_context.html#adb4fef1beb9570a46d0ba40c3d309a5b',1,'OptionsContext::loop()'],['../d8/d99/struct_input_file.html#a5553e5dc5f52efdf42e8f5e2afb84156',1,'InputFile::loop()']]] +]; diff --git a/docs/linux/html/search/variables_d.html b/docs/linux/html/search/variables_d.html new file mode 100644 index 0000000..84d878b --- /dev/null +++ b/docs/linux/html/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_d.js b/docs/linux/html/search/variables_d.js new file mode 100644 index 0000000..eddcff1 --- /dev/null +++ b/docs/linux/html/search/variables_d.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['main_5fffmpeg_5freturn_5fcode_2621',['main_ffmpeg_return_code',['../d7/d48/fftools__ffmpeg_8c.html#ab641f3810c2d179ac1b20b73ce4f6e78',1,'fftools_ffmpeg.c']]], + ['main_5fffprobe_5freturn_5fcode_2622',['main_ffprobe_return_code',['../d8/d78/fftools__ffprobe_8c.html#a3a5c88d7f1848f77903ed1c7709b2dd3',1,'fftools_ffprobe.c']]], + ['max_5ferror_5frate_2623',['max_error_rate',['../d7/db3/fftools__ffmpeg_8h.html#a388b87af90f84d6eb3c06e9c10f11ec3',1,'max_error_rate(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a388b87af90f84d6eb3c06e9c10f11ec3',1,'max_error_rate(): fftools_ffmpeg_opt.c']]], + ['max_5fframe_5frate_2624',['max_frame_rate',['../db/dde/struct_output_stream.html#a89138b534350318574ca78cdb1c4ab4a',1,'OutputStream']]], + ['max_5fframe_5frates_2625',['max_frame_rates',['../df/d77/struct_options_context.html#a2bbb7b99ec93e0dd209990b790a08595',1,'OptionsContext']]], + ['max_5fframes_2626',['max_frames',['../df/d77/struct_options_context.html#a3517181834318f5959bd05e47c4837ea',1,'OptionsContext::max_frames()'],['../db/dde/struct_output_stream.html#a6cb813f6df7342f0f37825241a3cd51b',1,'OutputStream::max_frames()']]], + ['max_5fmuxing_5fqueue_5fsize_2627',['max_muxing_queue_size',['../df/d77/struct_options_context.html#ac6ab45c79f4aafd2d474631965f64f86',1,'OptionsContext::max_muxing_queue_size()'],['../db/dde/struct_output_stream.html#a006aed9d49962d931da10f19a135f2bb',1,'OutputStream::max_muxing_queue_size()']]], + ['max_5fpts_2628',['max_pts',['../d3/d6e/struct_input_stream.html#a911d752902aa8d4666ccefd8c912c91e',1,'InputStream']]], + ['mediainformationjsonparserkeychapters_2629',['MediaInformationJsonParserKeyChapters',['../d1/dbf/_media_information_json_parser_8cpp.html#aade3533fe9011de03f2a3999c415f705',1,'MediaInformationJsonParser.cpp']]], + ['mediainformationjsonparserkeystreams_2630',['MediaInformationJsonParserKeyStreams',['../d1/dbf/_media_information_json_parser_8cpp.html#a23dd6b1525d6a61351e015cce5a6cde7',1,'MediaInformationJsonParser.cpp']]], + ['mediainformationsessioncompletecallback_2631',['mediaInformationSessionCompleteCallback',['../d8/d45/_f_fmpeg_kit_config_8cpp.html#af17bebd57f370c52961bfc9c3abc21f2',1,'FFmpegKitConfig.cpp']]], + ['metadata_2632',['metadata',['../df/d77/struct_options_context.html#a65dd95e326773a3c90feee5d1646910c',1,'OptionsContext']]], + ['metadata_5fchapters_5fmanual_2633',['metadata_chapters_manual',['../df/d77/struct_options_context.html#ab05f5a3458331e424098215ded646189',1,'OptionsContext']]], + ['metadata_5fglobal_5fmanual_2634',['metadata_global_manual',['../df/d77/struct_options_context.html#a41bb08c4be0cdb0706728c266a866834',1,'OptionsContext']]], + ['metadata_5fmap_2635',['metadata_map',['../df/d77/struct_options_context.html#a05f340e8bd1fb8084c1ea6e41b09b4bd',1,'OptionsContext']]], + ['metadata_5fstreams_5fmanual_2636',['metadata_streams_manual',['../df/d77/struct_options_context.html#a5bc5b900472685d4c3c33352f3300254',1,'OptionsContext']]], + ['min_5fpts_2637',['min_pts',['../d3/d6e/struct_input_stream.html#aeb79819841b6d172faf8c108db4ffbd0',1,'InputStream']]], + ['mux_5fmax_5fdelay_2638',['mux_max_delay',['../df/d77/struct_options_context.html#adefe378fc52e83215a84f9fd8fd40e0e',1,'OptionsContext']]], + ['mux_5fpreload_2639',['mux_preload',['../df/d77/struct_options_context.html#a07d718f49941fb773665ac6f0657bab8',1,'OptionsContext']]], + ['mux_5ftimebase_2640',['mux_timebase',['../db/dde/struct_output_stream.html#a253593d67e5088cf53c89aeb7e82cdc7',1,'OutputStream']]], + ['muxing_5fqueue_2641',['muxing_queue',['../db/dde/struct_output_stream.html#a9c6665bb019599fc7aeae17c1dadb814',1,'OutputStream']]], + ['muxing_5fqueue_5fdata_5fsize_2642',['muxing_queue_data_size',['../db/dde/struct_output_stream.html#af18a803d7d7db08a1cdac6b54fc1a58f',1,'OutputStream']]], + ['muxing_5fqueue_5fdata_5fthreshold_2643',['muxing_queue_data_threshold',['../df/d77/struct_options_context.html#a4939b51d539a0cd1b66883a6ebac8de2',1,'OptionsContext::muxing_queue_data_threshold()'],['../db/dde/struct_output_stream.html#a6e2ea45e90d7df93766f580a39469719',1,'OutputStream::muxing_queue_data_threshold()']]] +]; diff --git a/docs/linux/html/search/variables_e.html b/docs/linux/html/search/variables_e.html new file mode 100644 index 0000000..b0d9b7b --- /dev/null +++ b/docs/linux/html/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_e.js b/docs/linux/html/search/variables_e.js new file mode 100644 index 0000000..9bd09bb --- /dev/null +++ b/docs/linux/html/search/variables_e.js @@ -0,0 +1,88 @@ +var searchData= +[ + ['name_2644',['name',['../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72',1,'OptionDef::name()'],['../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da',1,'OptionGroupDef::name()'],['../df/d37/struct_h_w_accel.html#a82d8cefa2fe98d73edc28eb129b9c510',1,'HWAccel::name()'],['../de/dc7/struct_h_w_device.html#ae03ed8b14a9e341f1d8cc5fa37006656',1,'HWDevice::name()'],['../d7/d0c/struct_input_filter.html#a09efa5b4f05e3ca7c08c7ac949466556',1,'InputFilter::name()'],['../d0/d0f/struct_output_filter.html#a7713667d07c3f7605e6dd24f0ca19940',1,'OutputFilter::name()'],['../d9/d11/structsection.html#a265ac289a64fdb5d3e665ef3fef09364',1,'section::name()'],['../d6/dff/struct_writer.html#a8cbb0eba7905fdb0935fa057c9ab1d10',1,'Writer::name()'],['../d1/da2/struct_writer_context.html#a366a8bd11cf898f02beca2f14478ed97',1,'WriterContext::name()']]], + ['nb_5fapad_2645',['nb_apad',['../df/d77/struct_options_context.html#a7e7d45124040a8a5f110efa4c6cccf16',1,'OptionsContext']]], + ['nb_5fattachments_2646',['nb_attachments',['../df/d77/struct_options_context.html#a34f0a7746fbd5a5848fbdb5fac7ce7af',1,'OptionsContext']]], + ['nb_5faudio_5fchannel_5fmaps_2647',['nb_audio_channel_maps',['../df/d77/struct_options_context.html#a2e67c5ed2e0cc9b5cd4a5ff9895d7fc1',1,'OptionsContext']]], + ['nb_5faudio_5fchannels_2648',['nb_audio_channels',['../df/d77/struct_options_context.html#a7e0e4131b5ffb9d53019afd8910fc3ec',1,'OptionsContext']]], + ['nb_5faudio_5fsample_5frate_2649',['nb_audio_sample_rate',['../df/d77/struct_options_context.html#ae75f89a074068ab06a98efc15b65bb70',1,'OptionsContext']]], + ['nb_5fautorotate_2650',['nb_autorotate',['../df/d77/struct_options_context.html#a62f3ac3cab9fcdf841bd41f9bba1b907',1,'OptionsContext']]], + ['nb_5fautoscale_2651',['nb_autoscale',['../df/d77/struct_options_context.html#af23ac43d7259fe16de89ecddb9317768',1,'OptionsContext']]], + ['nb_5fbitstream_5ffilters_2652',['nb_bitstream_filters',['../df/d77/struct_options_context.html#af762ec90bfe9a00ab5a8002cf13d9c20',1,'OptionsContext']]], + ['nb_5fcanvas_5fsizes_2653',['nb_canvas_sizes',['../df/d77/struct_options_context.html#a6624172d0978fc1ac2c9a64e55197337',1,'OptionsContext']]], + ['nb_5fchroma_5fintra_5fmatrices_2654',['nb_chroma_intra_matrices',['../df/d77/struct_options_context.html#a0ddb65270dbb5fca3ce695d7b80064a9',1,'OptionsContext']]], + ['nb_5fcodec_5fnames_2655',['nb_codec_names',['../df/d77/struct_options_context.html#a45fdd25cc957aa8607d69b417bc59c14',1,'OptionsContext']]], + ['nb_5fcodec_5ftags_2656',['nb_codec_tags',['../df/d77/struct_options_context.html#a02ba7390b9fa22d39060f58169bb93a4',1,'OptionsContext']]], + ['nb_5fcopy_5finitial_5fnonkeyframes_2657',['nb_copy_initial_nonkeyframes',['../df/d77/struct_options_context.html#a07cadcbed94bbb3ed90703e4a3bc5067',1,'OptionsContext']]], + ['nb_5fcopy_5fprior_5fstart_2658',['nb_copy_prior_start',['../df/d77/struct_options_context.html#ace41e5c132803d7f7a3ab544959662da',1,'OptionsContext']]], + ['nb_5fdiscard_2659',['nb_discard',['../df/d77/struct_options_context.html#a57787cc07ce29a3d66420c6e65a647ff',1,'OptionsContext']]], + ['nb_5fdisposition_2660',['nb_disposition',['../df/d77/struct_options_context.html#a76b8db884e420fb8922d0aafca59f2f8',1,'OptionsContext']]], + ['nb_5fdts_5fbuffer_2661',['nb_dts_buffer',['../d3/d6e/struct_input_stream.html#a4b6db5d0fb15c8262b1ba543495fe628',1,'InputStream']]], + ['nb_5fdump_5fattachment_2662',['nb_dump_attachment',['../df/d77/struct_options_context.html#a6b29b20e59b90528943e105de4006148',1,'OptionsContext']]], + ['nb_5fenc_5ftime_5fbases_2663',['nb_enc_time_bases',['../df/d77/struct_options_context.html#aa9d05915d0f662d38ee8ecd9cf657169',1,'OptionsContext']]], + ['nb_5ffilter_5fscripts_2664',['nb_filter_scripts',['../df/d77/struct_options_context.html#acf81cf726089e9d6b570c3ec51e7ead0',1,'OptionsContext']]], + ['nb_5ffiltergraphs_2665',['nb_filtergraphs',['../d7/d48/fftools__ffmpeg_8c.html#ac69138c251f85a6e3233c9a70884be93',1,'nb_filtergraphs(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#ac69138c251f85a6e3233c9a70884be93',1,'nb_filtergraphs(): fftools_ffmpeg.c']]], + ['nb_5ffilters_2666',['nb_filters',['../df/d77/struct_options_context.html#afff2fbab8e5d11f9bce502383d757992',1,'OptionsContext::nb_filters()'],['../d3/d6e/struct_input_stream.html#a7c2c9b58a4db2101414f2d106f4244b0',1,'InputStream::nb_filters()']]], + ['nb_5ffix_5fsub_5fduration_2667',['nb_fix_sub_duration',['../df/d77/struct_options_context.html#a739e7e917a216db97d8cbf0a25482310',1,'OptionsContext']]], + ['nb_5fforce_5ffps_2668',['nb_force_fps',['../df/d77/struct_options_context.html#a9efac8177c92ff2eda0dda96761deb87',1,'OptionsContext']]], + ['nb_5fforced_5fkey_5fframes_2669',['nb_forced_key_frames',['../df/d77/struct_options_context.html#a748415baeee6b731c9c35c27f74860b0',1,'OptionsContext']]], + ['nb_5fframe_5faspect_5fratios_2670',['nb_frame_aspect_ratios',['../df/d77/struct_options_context.html#a710853badfb0d6d31c7bc6471d902941',1,'OptionsContext']]], + ['nb_5fframe_5fpix_5ffmts_2671',['nb_frame_pix_fmts',['../df/d77/struct_options_context.html#ad5d44d5a36310415733fb2b4f8fc9aa5',1,'OptionsContext']]], + ['nb_5fframe_5frates_2672',['nb_frame_rates',['../df/d77/struct_options_context.html#a336023409c88336cfdc784b50d2e0860',1,'OptionsContext']]], + ['nb_5fframe_5fsizes_2673',['nb_frame_sizes',['../df/d77/struct_options_context.html#a66d4d1e81f3c566dbf20027ae37173d8',1,'OptionsContext']]], + ['nb_5fframes_5fdrop_2674',['nb_frames_drop',['../d7/d48/fftools__ffmpeg_8c.html#afe61f76e95acccfab5636d5dac711dbe',1,'fftools_ffmpeg.c']]], + ['nb_5fframes_5fdup_2675',['nb_frames_dup',['../d7/d48/fftools__ffmpeg_8c.html#a2fab4ffcc251656c4b48237e691d5bbd',1,'fftools_ffmpeg.c']]], + ['nb_5fgroups_2676',['nb_groups',['../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202',1,'OptionGroupList::nb_groups()'],['../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7',1,'OptionParseContext::nb_groups()']]], + ['nb_5fguess_5flayout_5fmax_2677',['nb_guess_layout_max',['../df/d77/struct_options_context.html#af7dc6f10382ced8285d2f877534bc98e',1,'OptionsContext']]], + ['nb_5fhw_5fdevices_2678',['nb_hw_devices',['../d1/dba/fftools__ffmpeg__hw_8c.html#acea1bac2a399307791945b15467b1f75',1,'fftools_ffmpeg_hw.c']]], + ['nb_5fhwaccel_5fdevices_2679',['nb_hwaccel_devices',['../df/d77/struct_options_context.html#a439c00bdd36f358e679f6455043cecfb',1,'OptionsContext']]], + ['nb_5fhwaccel_5foutput_5fformats_2680',['nb_hwaccel_output_formats',['../df/d77/struct_options_context.html#aaec0e71810a9b113ec5ebc6acbb75474',1,'OptionsContext']]], + ['nb_5fhwaccels_2681',['nb_hwaccels',['../df/d77/struct_options_context.html#ae8e8a1016db8df258f0b06c9e48c5ce4',1,'OptionsContext']]], + ['nb_5finput_5ffiles_2682',['nb_input_files',['../d7/d48/fftools__ffmpeg_8c.html#a35146af7b101927e2e6aaaf49022f9b7',1,'nb_input_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a35146af7b101927e2e6aaaf49022f9b7',1,'nb_input_files(): fftools_ffmpeg.c']]], + ['nb_5finput_5fstreams_2683',['nb_input_streams',['../d7/d48/fftools__ffmpeg_8c.html#a19a9c5bb8abc454adeccecdce35135c2',1,'nb_input_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a19a9c5bb8abc454adeccecdce35135c2',1,'nb_input_streams(): fftools_ffmpeg.c']]], + ['nb_5finputs_2684',['nb_inputs',['../d9/de7/struct_filter_graph.html#aa88faf44822ec4e04597a6eef12a7760',1,'FilterGraph']]], + ['nb_5finter_5fmatrices_2685',['nb_inter_matrices',['../df/d77/struct_options_context.html#aa851fb4b3a3a80182eeaa3dc4c8201be',1,'OptionsContext']]], + ['nb_5fintra_5fmatrices_2686',['nb_intra_matrices',['../df/d77/struct_options_context.html#a39817ca6e7bc3ff4fa2caa2c2e627301',1,'OptionsContext']]], + ['nb_5fitem_2687',['nb_item',['../d1/da2/struct_writer_context.html#a146664adf19a884f214fe3729343dc1a',1,'WriterContext']]], + ['nb_5fmax_5fframe_5frates_2688',['nb_max_frame_rates',['../df/d77/struct_options_context.html#a12d7aef523b60551d30736bc24f1d383',1,'OptionsContext']]], + ['nb_5fmax_5fframes_2689',['nb_max_frames',['../df/d77/struct_options_context.html#a53594f37751979e91873fe8282e2e103',1,'OptionsContext']]], + ['nb_5fmax_5fmuxing_5fqueue_5fsize_2690',['nb_max_muxing_queue_size',['../df/d77/struct_options_context.html#af866e30ab55bab5c73b123fb35168edb',1,'OptionsContext']]], + ['nb_5fmetadata_2691',['nb_metadata',['../df/d77/struct_options_context.html#a54dfb761028d4c10ed38c63a29f846ce',1,'OptionsContext']]], + ['nb_5fmetadata_5fmap_2692',['nb_metadata_map',['../df/d77/struct_options_context.html#a76aae7426ad256206718ef4c503a882d',1,'OptionsContext']]], + ['nb_5fmuxing_5fqueue_5fdata_5fthreshold_2693',['nb_muxing_queue_data_threshold',['../df/d77/struct_options_context.html#a12446904f0f148fcb4b77a32a9f8a3e5',1,'OptionsContext']]], + ['nb_5fopts_2694',['nb_opts',['../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38',1,'OptionGroup']]], + ['nb_5foutput_5fdumped_2695',['nb_output_dumped',['../d7/d48/fftools__ffmpeg_8c.html#a9b30165b9c938b5c27144f800ace6238',1,'fftools_ffmpeg.c']]], + ['nb_5foutput_5ffiles_2696',['nb_output_files',['../d7/d48/fftools__ffmpeg_8c.html#a3d777831518f2c831790dd5cd6b96ddf',1,'nb_output_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a3d777831518f2c831790dd5cd6b96ddf',1,'nb_output_files(): fftools_ffmpeg.c']]], + ['nb_5foutput_5fstreams_2697',['nb_output_streams',['../d7/d48/fftools__ffmpeg_8c.html#a2bd3657586bb29d6357ddc0ed3bda70b',1,'nb_output_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a2bd3657586bb29d6357ddc0ed3bda70b',1,'nb_output_streams(): fftools_ffmpeg.c']]], + ['nb_5foutputs_2698',['nb_outputs',['../d9/de7/struct_filter_graph.html#a92c7f6faf7e95b259bce1c717d43b4ee',1,'FilterGraph']]], + ['nb_5fpackets_2699',['nb_packets',['../d3/d6e/struct_input_stream.html#ade4b46981af499da120e4e2b30517bef',1,'InputStream']]], + ['nb_5fpass_2700',['nb_pass',['../df/d77/struct_options_context.html#a0790695c47119c2398f4cbe1532a1344',1,'OptionsContext']]], + ['nb_5fpasslogfiles_2701',['nb_passlogfiles',['../df/d77/struct_options_context.html#a3496638677babce1db6d190448699b09',1,'OptionsContext']]], + ['nb_5fpresets_2702',['nb_presets',['../df/d77/struct_options_context.html#ab2f20236fb1dfe7a650c8ea40a288e6d',1,'OptionsContext']]], + ['nb_5fprogram_2703',['nb_program',['../df/d77/struct_options_context.html#ab5b3f2e73b482fa9b96f74d2cdd0f012',1,'OptionsContext']]], + ['nb_5fqscale_2704',['nb_qscale',['../df/d77/struct_options_context.html#ad3a1a76eb25293de0630b6d477fd6d11',1,'OptionsContext']]], + ['nb_5frc_5foverrides_2705',['nb_rc_overrides',['../df/d77/struct_options_context.html#a558a5fc4058d07929e5199b6ae57c258',1,'OptionsContext']]], + ['nb_5freinit_5ffilters_2706',['nb_reinit_filters',['../df/d77/struct_options_context.html#a1038ba094d24fb2b43940c45b5cffeb7',1,'OptionsContext']]], + ['nb_5fsample_5ffmts_2707',['nb_sample_fmts',['../df/d77/struct_options_context.html#aca30d63b4e6873844ffc592bbd05bea1',1,'OptionsContext']]], + ['nb_5fsamples_2708',['nb_samples',['../d3/d6e/struct_input_stream.html#af76c7165931c721b63008034c94d9275',1,'InputStream']]], + ['nb_5fsection_5fframe_2709',['nb_section_frame',['../d1/da2/struct_writer_context.html#a0a6292cb0341b8c989f463d17c2b1c49',1,'WriterContext']]], + ['nb_5fsection_5fpacket_2710',['nb_section_packet',['../d1/da2/struct_writer_context.html#a735c05fb40aac83eeaa72ec9f3bd9c8d',1,'WriterContext']]], + ['nb_5fsection_5fpacket_5fframe_2711',['nb_section_packet_frame',['../d1/da2/struct_writer_context.html#a70cdd0ee0389abba9865de653aac4de1',1,'WriterContext']]], + ['nb_5fsections_2712',['nb_sections',['../d1/da2/struct_writer_context.html#a802ea030a8d391905498183a514a7e0c',1,'WriterContext']]], + ['nb_5fstream_5fmaps_2713',['nb_stream_maps',['../df/d77/struct_options_context.html#a118cc0b28c0c40281c69827b323e4a78',1,'OptionsContext']]], + ['nb_5fstreamid_5fmap_2714',['nb_streamid_map',['../df/d77/struct_options_context.html#a2a21ce6e0d0e8f25a098ac44013ee919',1,'OptionsContext']]], + ['nb_5fstreams_2715',['nb_streams',['../d8/d99/struct_input_file.html#afee3292b7b58207fe6fd91c8127fac19',1,'InputFile::nb_streams()'],['../d8/d78/fftools__ffprobe_8c.html#abad15c2aaf9c54ccddd8d8abf6bed069',1,'nb_streams(): fftools_ffprobe.c']]], + ['nb_5fstreams_5fframes_2716',['nb_streams_frames',['../d8/d78/fftools__ffprobe_8c.html#a9f6efa0e18f6fa56ed087c99bbc8ff10',1,'fftools_ffprobe.c']]], + ['nb_5fstreams_5fpackets_2717',['nb_streams_packets',['../d8/d78/fftools__ffprobe_8c.html#ad25a33f2e8e0a7c6a147ec255d109319',1,'fftools_ffprobe.c']]], + ['nb_5fstreams_5fwarn_2718',['nb_streams_warn',['../d8/d99/struct_input_file.html#a9a4fc2543b5db4e4a2b8b11294565dde',1,'InputFile']]], + ['nb_5ftime_5fbases_2719',['nb_time_bases',['../df/d77/struct_options_context.html#a34b5f6f9f1c1b20b18f50a5263c4ae25',1,'OptionsContext']]], + ['nb_5ftop_5ffield_5ffirst_2720',['nb_top_field_first',['../df/d77/struct_options_context.html#a5eda36d5b336b3603bdbb0ec3185a40b',1,'OptionsContext']]], + ['nb_5fts_5fscale_2721',['nb_ts_scale',['../df/d77/struct_options_context.html#afaff7bca09e6e98f440e413309630204',1,'OptionsContext']]], + ['nested_5fsection_2722',['nested_section',['../d4/da0/struct_default_context.html#a98cfc785481b62077206b991234b0f9e',1,'DefaultContext::nested_section()'],['../d2/ddd/struct_compact_context.html#a2b8d470952d1051c0fd6b89b13a35e1e',1,'CompactContext::nested_section()']]], + ['next_5fdts_2723',['next_dts',['../d3/d6e/struct_input_stream.html#a8026af86b300d31432bc1bf74910aea5',1,'InputStream']]], + ['next_5fpts_2724',['next_pts',['../d3/d6e/struct_input_stream.html#ab14ac8d1cdb5c1dd6472dd4c13867368',1,'InputStream']]], + ['next_5fregistered_5fwriter_5fidx_2725',['next_registered_writer_idx',['../d8/d78/fftools__ffprobe_8c.html#a66035b2546893c050c398f8f775b656f',1,'fftools_ffprobe.c']]], + ['no_5ffile_5foverwrite_2726',['no_file_overwrite',['../d7/d48/fftools__ffmpeg_8c.html#a7ac571c7c938d6c34daf608a1183364f',1,'no_file_overwrite(): fftools_ffmpeg_opt.c'],['../da/d66/fftools__ffmpeg__opt_8c.html#a7ac571c7c938d6c34daf608a1183364f',1,'no_file_overwrite(): fftools_ffmpeg_opt.c']]], + ['nokey_2727',['nokey',['../d4/da0/struct_default_context.html#aa4fb1e189f6e2788e6ccc23e65dc3d98',1,'DefaultContext::nokey()'],['../d2/ddd/struct_compact_context.html#a4d211d2b2ba9c83a0613ec9c79af1f71',1,'CompactContext::nokey()']]], + ['noprint_5fwrappers_2728',['noprint_wrappers',['../d4/da0/struct_default_context.html#a7cae04407b25e67940bc2ff2c70496dd',1,'DefaultContext']]] +]; diff --git a/docs/linux/html/search/variables_f.html b/docs/linux/html/search/variables_f.html new file mode 100644 index 0000000..a708dbf --- /dev/null +++ b/docs/linux/html/search/variables_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/linux/html/search/variables_f.js b/docs/linux/html/search/variables_f.js new file mode 100644 index 0000000..514de2b --- /dev/null +++ b/docs/linux/html/search/variables_f.js @@ -0,0 +1,58 @@ +var searchData= +[ + ['off_2729',['off',['../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c',1,'OptionDef']]], + ['ofile_5fidx_2730',['ofile_idx',['../d6/d2c/struct_audio_channel_map.html#a8174d989c9c3c6bacd2ff229900e3edf',1,'AudioChannelMap']]], + ['opt_2731',['opt',['../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc',1,'Option']]], + ['opt_5fname_5fapad_2732',['opt_name_apad',['../da/d66/fftools__ffmpeg__opt_8c.html#a4563efb367e0659a32b5b0ad0ac4578d',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5faudio_5fchannels_2733',['opt_name_audio_channels',['../da/d66/fftools__ffmpeg__opt_8c.html#a071566f5d650660c1121c4a9ecffeaad',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5faudio_5fsample_5frate_2734',['opt_name_audio_sample_rate',['../da/d66/fftools__ffmpeg__opt_8c.html#a8a7b7a8fd4c39cfd95d0577ba6516f80',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fautorotate_2735',['opt_name_autorotate',['../da/d66/fftools__ffmpeg__opt_8c.html#a28263e9a77f75dbe0b729b27965d7010',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fautoscale_2736',['opt_name_autoscale',['../da/d66/fftools__ffmpeg__opt_8c.html#ae377a2eca138e9ca6f7f70bd7a745c95',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fbitstream_5ffilters_2737',['opt_name_bitstream_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#acbbcf4d3fc3ffdf3ab8fb140380e9b3d',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcanvas_5fsizes_2738',['opt_name_canvas_sizes',['../da/d66/fftools__ffmpeg__opt_8c.html#a1e1938286bdcbec435fd4153a754c11c',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fchroma_5fintra_5fmatrices_2739',['opt_name_chroma_intra_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#ac228692b5caafb601b626e82fb036b00',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcodec_5fnames_2740',['opt_name_codec_names',['../da/d66/fftools__ffmpeg__opt_8c.html#ad93637c5f6fbe2a6c2a31f4855fce0ee',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcodec_5ftags_2741',['opt_name_codec_tags',['../da/d66/fftools__ffmpeg__opt_8c.html#a33649f7955e76638005a3b90157d1acb',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcopy_5finitial_5fnonkeyframes_2742',['opt_name_copy_initial_nonkeyframes',['../da/d66/fftools__ffmpeg__opt_8c.html#ac7ca319e595fa817051314772b70fe19',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fcopy_5fprior_5fstart_2743',['opt_name_copy_prior_start',['../da/d66/fftools__ffmpeg__opt_8c.html#a484aa69c151bca853b0f4db4001d8457',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fdiscard_2744',['opt_name_discard',['../da/d66/fftools__ffmpeg__opt_8c.html#a7d696d81136510fe5a6de2c83a047743',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fdisposition_2745',['opt_name_disposition',['../da/d66/fftools__ffmpeg__opt_8c.html#aedf58dd37d56e26a71b477ac1c89fceb',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fenc_5ftime_5fbases_2746',['opt_name_enc_time_bases',['../da/d66/fftools__ffmpeg__opt_8c.html#a923d5e1d86ce330625dd7d55d4e0b7cd',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffilter_5fscripts_2747',['opt_name_filter_scripts',['../da/d66/fftools__ffmpeg__opt_8c.html#a8d9d6b274d5ebbf27d245081b2d68aea',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffilters_2748',['opt_name_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#ac60615242d760b1373faa97e9ca35da0',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ffix_5fsub_5fduration_2749',['opt_name_fix_sub_duration',['../da/d66/fftools__ffmpeg__opt_8c.html#a0f2664ba9d547dd1d2a161d6eea38d4e',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fforce_5ffps_2750',['opt_name_force_fps',['../da/d66/fftools__ffmpeg__opt_8c.html#a35587cfd54cad4d313e805729850c814',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fforced_5fkey_5fframes_2751',['opt_name_forced_key_frames',['../da/d66/fftools__ffmpeg__opt_8c.html#a7dc51392d39a130d795ab6259f8e5146',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5faspect_5fratios_2752',['opt_name_frame_aspect_ratios',['../da/d66/fftools__ffmpeg__opt_8c.html#a02e251fca80f93e4d5a3e9c27fca6be8',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5fpix_5ffmts_2753',['opt_name_frame_pix_fmts',['../da/d66/fftools__ffmpeg__opt_8c.html#af4c1703b4956f5e062204d5c36b1721f',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5frates_2754',['opt_name_frame_rates',['../da/d66/fftools__ffmpeg__opt_8c.html#a5347d5d678e9927aa9f8b0fdd839b8d3',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fframe_5fsizes_2755',['opt_name_frame_sizes',['../da/d66/fftools__ffmpeg__opt_8c.html#a86f38ed6c04b24cdcd998881f6d45563',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fguess_5flayout_5fmax_2756',['opt_name_guess_layout_max',['../da/d66/fftools__ffmpeg__opt_8c.html#aa5ed7cfda0a5c2ff397b0d731dbb1005',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccel_5fdevices_2757',['opt_name_hwaccel_devices',['../da/d66/fftools__ffmpeg__opt_8c.html#a5d127770d764925d75c367f80bc76228',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccel_5foutput_5fformats_2758',['opt_name_hwaccel_output_formats',['../da/d66/fftools__ffmpeg__opt_8c.html#abf20f110d78c43da06a8a8921ec6aa10',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fhwaccels_2759',['opt_name_hwaccels',['../da/d66/fftools__ffmpeg__opt_8c.html#a47524eff5f8b0f4d59e5d7910a14fdb4',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5finter_5fmatrices_2760',['opt_name_inter_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#a290d82d6941e8243459bc374ef322e81',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fintra_5fmatrices_2761',['opt_name_intra_matrices',['../da/d66/fftools__ffmpeg__opt_8c.html#acb26d364405e283095a6d192d1caeaee',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fframe_5frates_2762',['opt_name_max_frame_rates',['../da/d66/fftools__ffmpeg__opt_8c.html#a55b73904843c6c623ce52acba119705c',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fframes_2763',['opt_name_max_frames',['../da/d66/fftools__ffmpeg__opt_8c.html#a065c1d7227bc63b18b4324ad376568dd',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmax_5fmuxing_5fqueue_5fsize_2764',['opt_name_max_muxing_queue_size',['../da/d66/fftools__ffmpeg__opt_8c.html#a3f6ae3233facfaaad9c9fcfcb5562029',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fmuxing_5fqueue_5fdata_5fthreshold_2765',['opt_name_muxing_queue_data_threshold',['../da/d66/fftools__ffmpeg__opt_8c.html#a44d8dc72efc9d1c7433964650d7b4365',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpass_2766',['opt_name_pass',['../da/d66/fftools__ffmpeg__opt_8c.html#af982effd9489a2439594fba709c01cf4',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpasslogfiles_2767',['opt_name_passlogfiles',['../da/d66/fftools__ffmpeg__opt_8c.html#a3bb1a02e27b951f57d8927aa3b017f2e',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fpresets_2768',['opt_name_presets',['../da/d66/fftools__ffmpeg__opt_8c.html#a4929557da5993e7e352caa7b2b969569',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fqscale_2769',['opt_name_qscale',['../da/d66/fftools__ffmpeg__opt_8c.html#ad4e5c141bf83207d19eecec3a9341141',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5frc_5foverrides_2770',['opt_name_rc_overrides',['../da/d66/fftools__ffmpeg__opt_8c.html#a7dbb7cc7c7d0f45bbb80b2e494b0bbff',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5freinit_5ffilters_2771',['opt_name_reinit_filters',['../da/d66/fftools__ffmpeg__opt_8c.html#a934f418f64986c128430cffdfa11abcc',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fsample_5ffmts_2772',['opt_name_sample_fmts',['../da/d66/fftools__ffmpeg__opt_8c.html#a322afb1b7613bc57d3939db06de66225',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ftime_5fbases_2773',['opt_name_time_bases',['../da/d66/fftools__ffmpeg__opt_8c.html#a8213a5f67f3b7e411fafc95d38ad0ea7',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5ftop_5ffield_5ffirst_2774',['opt_name_top_field_first',['../da/d66/fftools__ffmpeg__opt_8c.html#a25ca6c25e6e32e8f98fe714f4eef5e08',1,'fftools_ffmpeg_opt.c']]], + ['opt_5fname_5fts_5fscale_2775',['opt_name_ts_scale',['../da/d66/fftools__ffmpeg__opt_8c.html#aec5517cf220aff5a0a7e4dc012f72c6c',1,'fftools_ffmpeg_opt.c']]], + ['opts_2776',['opts',['../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856',1,'OptionGroup::opts()'],['../de/df2/struct_output_file.html#aac74ddf07f90ad30cd5ddf80583468ec',1,'OutputFile::opts()']]], + ['ost_2777',['ost',['../d0/d0f/struct_output_filter.html#a2d283eee3e140f822b5eb381890ba035',1,'OutputFilter::ost()'],['../d2/d36/fftools__ffmpeg__filter_8c.html#a452d4354deb721ac53ff1926fd07ab04',1,'ost(): fftools_ffmpeg_filter.c']]], + ['ost_5findex_2778',['ost_index',['../de/df2/struct_output_file.html#ac09855bfd066c44eb761f84e28f00dce',1,'OutputFile']]], + ['ostream_5fidx_2779',['ostream_idx',['../d6/d2c/struct_audio_channel_map.html#a3e51062d85dde52c40982e5af3b4bc03',1,'AudioChannelMap']]], + ['out_5ftmp_2780',['out_tmp',['../d0/d0f/struct_output_filter.html#a1571021ae59382241c925f7ee613cd7d',1,'OutputFilter']]], + ['output_5ffiles_2781',['output_files',['../d7/d48/fftools__ffmpeg_8c.html#a22c5e53407c3f14a8111e898dff42904',1,'output_files(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a22c5e53407c3f14a8111e898dff42904',1,'output_files(): fftools_ffmpeg.c']]], + ['output_5fstreams_2782',['output_streams',['../d7/d48/fftools__ffmpeg_8c.html#a205ff61315f3766dae7c5e1552de2ccf',1,'output_streams(): fftools_ffmpeg.c'],['../d7/db3/fftools__ffmpeg_8h.html#a205ff61315f3766dae7c5e1552de2ccf',1,'output_streams(): fftools_ffmpeg.c']]], + ['outputs_2783',['outputs',['../d9/de7/struct_filter_graph.html#aa078de74cae0940747ba826567b74aef',1,'FilterGraph']]] +]; diff --git a/docs/linux/html/splitbar.png b/docs/linux/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/docs/linux/html/splitbar.png differ diff --git a/docs/linux/html/sync_off.png b/docs/linux/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/linux/html/sync_off.png differ diff --git a/docs/linux/html/sync_on.png b/docs/linux/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/linux/html/sync_on.png differ diff --git a/docs/linux/html/tab_a.png b/docs/linux/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/linux/html/tab_a.png differ diff --git a/docs/linux/html/tab_b.png b/docs/linux/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/linux/html/tab_b.png differ diff --git a/docs/linux/html/tab_h.png b/docs/linux/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/linux/html/tab_h.png differ diff --git a/docs/linux/html/tab_s.png b/docs/linux/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/linux/html/tab_s.png differ diff --git a/docs/linux/html/tabs.css b/docs/linux/html/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/docs/linux/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/linux.sh b/linux.sh index 02656fb..20d21ae 100755 --- a/linux.sh +++ b/linux.sh @@ -122,7 +122,7 @@ fi # PROCESS FULL OPTION AS LAST OPTION if [[ -n ${BUILD_FULL} ]]; then - for library in {0..92}; do + for library in {0..91}; do if [ ${GPL_ENABLED} == "yes" ]; then enable_library "$(get_library_name $library)" 1 else @@ -196,7 +196,7 @@ for run_arch in {0..12}; do TARGET_ARCH_LIST+=("${FULL_ARCH}") # CLEAR FLAGS - for library in {0..92}; do + for library in {0..91}; do library_name=$(get_library_name "${library}") unset "$(echo "OK_${library_name}" | sed "s/\-/\_/g")" unset "$(echo "DEPENDENCY_REBUILT_${library_name}" | sed "s/\-/\_/g")" diff --git a/linux/Doxyfile b/linux/Doxyfile index aac731e..5ea8cea 100644 --- a/linux/Doxyfile +++ b/linux/Doxyfile @@ -977,7 +977,9 @@ EXCLUDE_PATTERNS = # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories use the pattern */test/* -EXCLUDE_SYMBOLS = +EXCLUDE_SYMBOLS = ffmpegkit::FFmpegSession::PublicFFmpegSession, \ + ffmpegkit::FFprobeSession::PublicFFprobeSession, \ + ffmpegkit::MediaInformationSession::PublicMediaInformationSession # The EXAMPLE_PATH tag can be used to specify one or more files or directories # that contain example code fragments that are included (see the \include diff --git a/linux/libtool b/linux/libtool index d64a073..1170ca4 100755 --- a/linux/libtool +++ b/linux/libtool @@ -90,7 +90,7 @@ EGREP="/bin/grep -E" FGREP="/bin/grep -F" # A BSD- or MS-compatible name lister. -NM="/usr/bin/llvm-nm" +NM="/bin/llvm-nm" # Whether we need soft or hard links. LN_S="ln -s" @@ -141,7 +141,7 @@ DLLTOOL="false" sharedlib_from_linklib_cmd="printf %s\\n" # The archiver. -AR="/usr/bin/llvm-ar" +AR="/bin/llvm-ar" # Flags to create an archive. AR_FLAGS="cr" @@ -150,10 +150,10 @@ AR_FLAGS="cr" archiver_list_spec="@" # A symbol stripping program. -STRIP="/usr/bin/llvm-strip" +STRIP="/bin/llvm-strip" # Commands used to install an old-style archive. -RANLIB="/usr/bin/llvm-ranlib" +RANLIB="/bin/llvm-ranlib" old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" old_postuninstall_cmds="" @@ -161,10 +161,10 @@ old_postuninstall_cmds="" lock_old_archive_extraction=no # A C compiler. -LTCC="/usr/bin/clang" +LTCC="/bin/clang" # LTCC compiler flags. -LTCFLAGS="-target x86_64-linux-gnu -march=x86-64 -msse4.2 -mpopcnt -m64 -DFFMPEG_KIT_X86_64 -Wno-unused-function -Wno-pointer-sign -Wno-switch -Wno-deprecated-declarations -fstrict-aliasing -fPIC -DLINUX -I/usr/lib/llvm-10/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Os -ffunction-sections -fdata-sections -I/usr/lib/llvm-10/include -I/home/taner/Projects/ffmpeg-kit/prebuilt/linux-x86_64/ffmpeg/include -I/home/taner/Projects/ffmpeg-kit/.tmp/source/rapidjson/include" +LTCFLAGS="-target x86_64-linux-gnu -march=x86-64 -msse4.2 -mpopcnt -m64 -DFFMPEG_KIT_X86_64 -Wno-unused-function -Wno-pointer-sign -Wno-switch -Wno-deprecated-declarations -fstrict-aliasing -fPIC -DLINUX -I/usr/lib/llvm-10/include -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Os -ffunction-sections -fdata-sections -I/usr/lib/llvm-10/include -I/home/taner/Projects/ffmpeg-kit/prebuilt/linux-x86_64/ffmpeg/include -I/home/taner/Projects/ffmpeg-kit/.tmp/source/rapidjson/include -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include" # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe="sed -n -e 's/^.*[ ]\\([BCDEGRST][BCDEGRST]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" @@ -281,7 +281,7 @@ finish_eval="" hardcode_into_libs=yes # Compile-time system search path for libraries. -sys_lib_search_path_spec="/usr/lib/llvm-10/lib/clang/10.0.0 /usr/lib/gcc/x86_64-linux-gnu/9 /usr/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /lib64 /usr/lib /usr/lib/llvm-10/lib /lib " +sys_lib_search_path_spec="/usr/lib/llvm-10/lib/clang/10.0.0 /lib/gcc/x86_64-linux-gnu/9 /lib/x86_64-linux-gnu /lib64 /usr/lib/x86_64-linux-gnu /usr/lib64 /lib /usr/lib/llvm-10/lib /usr/lib " # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib/i386-linux-gnu /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /usr/local/lib/i686-linux-gnu /lib/i686-linux-gnu /usr/lib/i686-linux-gnu /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 " @@ -299,12 +299,12 @@ dlopen_self=unknown dlopen_self_static=unknown # Commands to strip libraries. -old_striplib="/usr/bin/llvm-strip --strip-debug" -striplib="/usr/bin/llvm-strip --strip-unneeded" +old_striplib="/bin/llvm-strip --strip-debug" +striplib="/bin/llvm-strip --strip-unneeded" # The linker used to build libraries. -LD="/usr/bin/ld.lld -m elf_x86_64" +LD="/bin/ld.lld -m elf_x86_64 -m elf_x86_64" # How to create reloadable object files. reload_flag=" -r" @@ -314,7 +314,7 @@ reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" # A language specific compiler. -CC="/usr/bin/clang" +CC="/bin/clang" # Is the compiler the GNU compiler? with_gcc=yes @@ -11764,7 +11764,7 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. -LD="/usr/bin/ld.lld -m elf_x86_64" +LD="/bin/ld.lld -m elf_x86_64 -m elf_x86_64" # How to create reloadable object files. reload_flag=" -r" @@ -11774,7 +11774,7 @@ reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" # A language specific compiler. -CC="/usr/bin/clang++" +CC="/bin/clang++" # Is the compiler the GNU compiler? with_gcc=yes @@ -11895,17 +11895,17 @@ file_list_spec="" hardcode_action=immediate # The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs="/usr/bin/../lib/gcc/x86_64-linux-gnu/9 /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu /lib/x86_64-linux-gnu /lib/../lib64 /usr/lib/x86_64-linux-gnu /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../.. /usr/lib/llvm-10/bin/../lib /lib /usr/lib" +compiler_lib_search_dirs="/bin/../lib/gcc/x86_64-linux-gnu/9 /bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu /bin/../lib/gcc/x86_64-linux-gnu/9/../../../../lib64 /lib/x86_64-linux-gnu /lib/../lib64 /usr/lib/x86_64-linux-gnu /usr/lib/../lib64 /usr/lib/x86_64-linux-gnu/../../lib64 /bin/../lib/gcc/x86_64-linux-gnu/9/../../.. /usr/lib/llvm-10/bin/../lib /lib /usr/lib" # Dependencies to place before and after the objects being linked to # create a shared library. -predep_objects="/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/bin/../lib/gcc/x86_64-linux-gnu/9/crtbeginS.o" -postdep_objects="/usr/bin/../lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o" +predep_objects="/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /bin/../lib/gcc/x86_64-linux-gnu/9/crtbeginS.o" +postdep_objects="/bin/../lib/gcc/x86_64-linux-gnu/9/crtendS.o /bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o" predeps="" postdeps="-lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc" # The library search path used internally by the compiler when linking # a shared library. -compiler_lib_search_path="-L/usr/bin/../lib/gcc/x86_64-linux-gnu/9 -L/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../.. -L/usr/lib/llvm-10/bin/../lib -L/lib -L/usr/lib" +compiler_lib_search_path="-L/bin/../lib/gcc/x86_64-linux-gnu/9 -L/bin/../lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/usr/lib/x86_64-linux-gnu/../../lib64 -L/bin/../lib/gcc/x86_64-linux-gnu/9/../../.. -L/usr/lib/llvm-10/bin/../lib -L/lib -L/usr/lib" # ### END LIBTOOL TAG CONFIG: CXX diff --git a/linux/src/AbstractSession.cpp b/linux/src/AbstractSession.cpp index 986c8b5..a04003a 100644 --- a/linux/src/AbstractSession.cpp +++ b/linux/src/AbstractSession.cpp @@ -42,7 +42,6 @@ ffmpegkit::AbstractSession::AbstractSession(const std::shared_ptr getReturnCode() const override; @@ -190,9 +190,9 @@ namespace ffmpegkit { * Returns the stack trace of the exception received while executing this session. *

    * The stack trace is only set for sessions that end with SessionStateFailed state. For sessions that has - * SessionStateCompleted state this method returns nil. + * SessionStateCompleted state this method returns an empty string. * - * @return stack trace of the exception received while executing this session, nil if session + * @return stack trace of the exception received while executing this session, an empty string if session * is not started, still running or completed */ std::string getFailStackTrace() const override; diff --git a/linux/src/ArchDetect.cpp b/linux/src/ArchDetect.cpp index 5df87b8..7cd9791 100644 --- a/linux/src/ArchDetect.cpp +++ b/linux/src/ArchDetect.cpp @@ -21,7 +21,7 @@ extern void* ffmpegKitInitialize(); -static const void* _archDetectInitializer = ffmpegKitInitialize(); +const void* _archDetectInitializer{ffmpegKitInitialize()}; std::string ffmpegkit::ArchDetect::getArch() { #ifdef FFMPEG_KIT_ARM64 diff --git a/linux/src/Chapter.cpp b/linux/src/Chapter.cpp index 39a7b14..be32ef1 100644 --- a/linux/src/Chapter.cpp +++ b/linux/src/Chapter.cpp @@ -22,52 +22,66 @@ ffmpegkit::Chapter::Chapter(std::shared_ptr chapterValue) : _chapterValue{chapterValue} { } -int64_t ffmpegkit::Chapter::getId() { - return (*_chapterValue)[KeyId].GetInt64(); +std::shared_ptr ffmpegkit::Chapter::getId() { + return getNumberProperty(KeyId); } -std::string ffmpegkit::Chapter::getTimeBase() { - return (*_chapterValue)[KeyTimeBase].GetString(); +std::shared_ptr ffmpegkit::Chapter::getTimeBase() { + return getStringProperty(KeyTimeBase); } -int64_t ffmpegkit::Chapter::getStart() { - return (*_chapterValue)[KeyStart].GetInt64(); +std::shared_ptr ffmpegkit::Chapter::getStart() { + return getNumberProperty(KeyStart); } -std::string ffmpegkit::Chapter::getStartTime() { - return (*_chapterValue)[KeyStartTime].GetString(); +std::shared_ptr ffmpegkit::Chapter::getStartTime() { + return getStringProperty(KeyStartTime); } -int64_t ffmpegkit::Chapter::getEnd() { - return (*_chapterValue)[KeyEnd].GetInt64(); +std::shared_ptr ffmpegkit::Chapter::getEnd() { + return getNumberProperty(KeyEnd); } -std::string ffmpegkit::Chapter::getEndTime() { - return (*_chapterValue)[KeyEndTime].GetString(); +std::shared_ptr ffmpegkit::Chapter::getEndTime() { + return getStringProperty(KeyEndTime); } std::shared_ptr ffmpegkit::Chapter::getTags() { - auto tags = std::make_shared(); - *tags = (*_chapterValue)[KeyTags]; - return tags; + return getProperties(KeyTags); } -std::string ffmpegkit::Chapter::getStringProperty(const char* key) { - return (*_chapterValue)[key].GetString(); +std::shared_ptr ffmpegkit::Chapter::getStringProperty(const char* key) { + if (_chapterValue->HasMember(key)) { + return std::make_shared((*_chapterValue)[key].GetString()); + } else { + return nullptr; + } } -int64_t ffmpegkit::Chapter::getNumberProperty(const char* key) { - return (*_chapterValue)[key].GetInt64(); +std::shared_ptr ffmpegkit::Chapter::getNumberProperty(const char* key) { + if (_chapterValue->HasMember(key)) { + return std::make_shared((*_chapterValue)[key].GetInt64()); + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::Chapter::getProperties(const char* key) { - auto value = std::make_shared(); - *value = (*_chapterValue)[key]; - return value; + if (_chapterValue->HasMember(key)) { + auto value = std::make_shared(); + *value = (*_chapterValue)[key]; + return value; + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::Chapter::getAllProperties() { - auto all = std::make_shared(); - *all = (*_chapterValue); - return all; + if (_chapterValue != nullptr) { + auto all = std::make_shared(); + *all = (*_chapterValue); + return all; + } else { + return nullptr; + } } diff --git a/linux/src/Chapter.h b/linux/src/Chapter.h index 7bce321..3365a8c 100644 --- a/linux/src/Chapter.h +++ b/linux/src/Chapter.h @@ -20,6 +20,8 @@ #ifndef FFMPEG_KIT_CHAPTER_H #define FFMPEG_KIT_CHAPTER_H +// OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION +#define RAPIDJSON_ASSERT(x) #include "rapidjson/document.h" #include #include @@ -42,45 +44,45 @@ namespace ffmpegkit { Chapter(std::shared_ptr chapterValue); - int64_t getId(); + std::shared_ptr getId(); - std::string getTimeBase(); + std::shared_ptr getTimeBase(); - int64_t getStart(); + std::shared_ptr getStart(); - std::string getStartTime(); + std::shared_ptr getStartTime(); - int64_t getEnd(); + std::shared_ptr getEnd(); - std::string getEndTime(); + std::shared_ptr getEndTime(); std::shared_ptr getTags(); /** * Returns the chapter property associated with the key. * - * @return chapter property as string or nil if the key is not found + * @return chapter property as string or nullptr if the key is not found */ - std::string getStringProperty(const char* key); + std::shared_ptr getStringProperty(const char* key); /** * Returns the chapter property associated with the key. * - * @return chapter property as number or nil if the key is not found + * @return chapter property as number or nullptr if the key is not found */ - int64_t getNumberProperty(const char* key); + std::shared_ptr getNumberProperty(const char* key); /** * Returns the chapter properties associated with the key. * - * @return chapter properties in a dictionary or nil if the key is not found + * @return chapter properties in a Value or nullptr if the key is not found */ std::shared_ptr getProperties(const char* key); /** * Returns all chapter properties defined. * - * @return all chapter properties in a dictionary or nil if no properties are defined + * @return all chapter properties in a Value or nullptr if no properties are defined */ std::shared_ptr getAllProperties(); diff --git a/linux/src/FFmpegKit.cpp b/linux/src/FFmpegKit.cpp index a6c1a42..83682e6 100644 --- a/linux/src/FFmpegKit.cpp +++ b/linux/src/FFmpegKit.cpp @@ -27,40 +27,40 @@ extern "C" { extern void* ffmpegKitInitialize(); -static const void* _ffmpegKitInitializer = ffmpegKitInitialize(); +const void* _ffmpegKitInitializeri{ffmpegKitInitialize()}; std::shared_ptr ffmpegkit::FFmpegKit::executeWithArguments(const std::shared_ptr> arguments) { - auto session = std::make_shared(arguments); + auto session = ffmpegkit::FFmpegSession::create(arguments); ffmpegkit::FFmpegKitConfig::ffmpegExecute(session); return session; } std::shared_ptr ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback) { - auto session = std::make_shared(arguments, completeCallback); + auto session = ffmpegkit::FFmpegSession::create(arguments, completeCallback); ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(session); return session; } std::shared_ptr ffmpegkit::FFmpegKit::executeWithArgumentsAsync(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) { - auto session = std::make_shared(arguments, completeCallback, logCallback, statisticsCallback); + auto session = ffmpegkit::FFmpegSession::create(arguments, completeCallback, logCallback, statisticsCallback); ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(session); return session; } std::shared_ptr ffmpegkit::FFmpegKit::execute(const std::string command) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str())); + auto session = ffmpegkit::FFmpegSession::create(FFmpegKitConfig::parseArguments(command.c_str())); ffmpegkit::FFmpegKitConfig::ffmpegExecute(session); return session; } std::shared_ptr ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback); + auto session = ffmpegkit::FFmpegSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback); ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(session); return session; } std::shared_ptr ffmpegkit::FFmpegKit::executeAsync(const std::string command, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback, statisticsCallback); + auto session = ffmpegkit::FFmpegSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback, statisticsCallback); ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(session); return session; } diff --git a/linux/src/FFmpegKit.h b/linux/src/FFmpegKit.h index ea035e3..2fc892a 100644 --- a/linux/src/FFmpegKit.h +++ b/linux/src/FFmpegKit.h @@ -32,13 +32,13 @@ namespace ffmpegkit { *

    Main class to run FFmpeg commands. Supports executing commands both synchronously and * asynchronously. *

    -     * FFmpegSession *session = [FFmpegKit execute:@"-i file1.mp4 -c:v libxvid file1.avi"];
    +     * auto session = FFmpegKit::execute:("-i file1.mp4 -c:v libxvid file1.avi");
          *
    -     * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withCompleteCallback:completeCallback];
    +     * auto asyncSession = FFmpegKit::executeAsync:("-i file1.mp4 -c:v libxvid file1.avi", [](auto session){ ... });
          * 
    *

    Provides overloaded execute methods to define session specific callbacks. *

    -     * FFmpegSession *asyncSession = [FFmpegKit executeAsync:@"-i file1.mp4 -c:v libxvid file1.avi" withCompleteCallback:completeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
    +     * auto asyncSession = FFmpegKit::executeAsync:("-i file1.mp4 -c:v libxvid file1.avi, [](auto session){ ... }, [](auto log){ ... }, [](auto statistics){ ... });
          * 
    */ class FFmpegKit { diff --git a/linux/src/FFmpegKitConfig.cpp b/linux/src/FFmpegKitConfig.cpp index 3b18766..dd1e9c9 100644 --- a/linux/src/FFmpegKitConfig.cpp +++ b/linux/src/FFmpegKitConfig.cpp @@ -19,6 +19,7 @@ #include #include +#include extern "C" { #include "libavutil/ffversion.h" #include "libavutil/bprint.h" @@ -75,7 +76,6 @@ static ffmpegkit::LogRedirectionStrategy globalLogRedirectionStrategy; static int redirectionEnabled; static std::recursive_mutex callbackDataMutex; static std::mutex callbackMutex; -static std::unique_lock callbackLock(callbackMutex); static std::condition_variable callbackMonitor; class CallbackData; static std::list callbackDataList; @@ -110,17 +110,18 @@ void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, v #endif static std::once_flag ffmpegKitInitializerFlag; +static pthread_t callbackThread; void* ffmpegKitInitialize(); -static const void* _ffmpegKitConfigInitializer = ffmpegKitInitialize(); +const void* _ffmpegKitConfigInitializer{ffmpegKitInitialize()}; enum CallbackType { LogType, StatisticsType }; -static bool fs_exists(const std::string &s, const bool isFile, const bool isDirectory) { +static bool fs_exists(const std::string& s, const bool isFile, const bool isDirectory) { struct stat dir_info; if (stat(s.c_str(), &dir_info) == 0) { @@ -135,6 +136,16 @@ static bool fs_exists(const std::string &s, const bool isFile, const bool isDire return false; } +static bool fs_create_dir(const std::string& s) { + if (!fs_exists(s, false, true)) { + if (mkdir(s.c_str(), S_IRWXU | S_IRWXG | S_IROTH) != 0) { + std::cout << "Failed to create directory: " << s << ". Operation failed with " << errno << "." << std::endl; + return false; + } + } + return true; +} + void addSessionToSessionHistory(const std::shared_ptr session) { std::unique_lock lock(sessionMutex, std::defer_lock); @@ -258,6 +269,7 @@ class CallbackData { * @param milliSeconds wait time in milliseconds */ static void callbackWait(int milliSeconds) { + std::unique_lock callbackLock{callbackMutex}; callbackMonitor.wait_for(callbackLock, std::chrono::milliseconds(milliSeconds)); } @@ -583,7 +595,7 @@ static void process_log(long sessionId, int levelValueInt, AVBPrint* logMessage) break; default: // WRITE TO STDOUT - std::cout << ffmpegkit::FFmpegKitConfig::logLevelToString(levelValue) << ": " << logMessage->str << std::endl; + std::cout << ffmpegkit::FFmpegKitConfig::logLevelToString(levelValue) << ": " << logMessage->str; break; } } @@ -619,7 +631,7 @@ void process_statistics(long sessionId, int videoFrameNumber, float videoFps, fl /** * Forwards asynchronous messages to Callbacks. */ -static void callbackBlockFunction() { +void *callbackThreadFunction(void *pointer) { int activeLogLevel = av_log_get_level(); if ((activeLogLevel != ffmpegkit::LevelAVLogQuiet) && (ffmpegkit::LevelAVLogDebug <= activeLogLevel)) { std::cout << "Async callback block started." << std::endl; @@ -663,6 +675,8 @@ static void callbackBlockFunction() { if ((activeLogLevel != ffmpegkit::LevelAVLogQuiet) && (ffmpegkit::LevelAVLogDebug <= activeLogLevel)) { std::cout << "Async callback block stopped." << std::endl; } + + return NULL; } static int executeFFmpeg(const long sessionId, const std::shared_ptr> arguments) { @@ -786,7 +800,12 @@ void ffmpegkit::FFmpegKitConfig::enableRedirection() { lock.unlock(); - std::async(std::launch::async, callbackBlockFunction); + int rc = pthread_create(&callbackThread, NULL, callbackThreadFunction, NULL); + if (rc != 0) { + std::cout << "Failed to create async callback block: %d" << rc << std::endl; + lock.unlock(); + return; + } av_log_set_callback(ffmpegkit_log_callback_function); set_report_callback(ffmpegkit_statistics_callback_function); @@ -805,21 +824,23 @@ void ffmpegkit::FFmpegKitConfig::disableRedirection() { lock.unlock(); + callbackNotify(); + + pthread_detach(callbackThread); + av_log_set_callback(av_log_default_callback); set_report_callback(NULL); - - callbackNotify(); } -int ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath(const char* path) { +int ffmpegkit::FFmpegKitConfig::setFontconfigConfigurationPath(const std::string& path) { return ffmpegkit::FFmpegKitConfig::setEnvironmentVariable("FONTCONFIG_PATH", path); } -void ffmpegkit::FFmpegKitConfig::setFontDirectory(const char* fontDirectoryPath, const std::map& fontNameMapping) { +void ffmpegkit::FFmpegKitConfig::setFontDirectory(const std::string& fontDirectoryPath, const std::map& fontNameMapping) { ffmpegkit::FFmpegKitConfig::setFontDirectoryList(std::list{fontDirectoryPath}, fontNameMapping); } -void ffmpegkit::FFmpegKitConfig::setFontDirectoryList(const std::list& fontDirectoryList, const std::map& fontNameMapping) { +void ffmpegkit::FFmpegKitConfig::setFontDirectoryList(const std::list& fontDirectoryList, const std::map& fontNameMapping) { int validFontNameMappingCount = 0; const char *parentDirectory = std::getenv("HOME"); @@ -830,20 +851,19 @@ void ffmpegkit::FFmpegKitConfig::setFontDirectoryList(const std::list 0) && (pair.second.size() > 0)) { - fontNameMappingBlock += " \n"; - fontNameMappingBlock += " \n"; - fontNameMappingBlock += " "; + fontNameMappingBlock += " \n"; + fontNameMappingBlock += " \n"; + fontNameMappingBlock += " "; fontNameMappingBlock += pair.first; fontNameMappingBlock += "\n"; - fontNameMappingBlock += " \n"; - fontNameMappingBlock += " \n"; - fontNameMappingBlock += " "; + fontNameMappingBlock += " \n"; + fontNameMappingBlock += " \n"; + fontNameMappingBlock += " "; fontNameMappingBlock += pair.second; fontNameMappingBlock += "\n"; - fontNameMappingBlock += " \n"; - fontNameMappingBlock += " \n"; + fontNameMappingBlock += " \n"; + fontNameMappingBlock += " \n"; validFontNameMappingCount++; } @@ -880,7 +900,7 @@ void ffmpegkit::FFmpegKitConfig::setFontDirectoryList(const std::list ffmpegkit::FFmpegKitConfig::registerNewFFmpegPipe() } // PIPES ARE CREATED UNDER THE PIPES DIRECTORY - auto pipesDir = std::string(parentDirectory) + "/.ffmpegkit/pipes"; + std::string cacheDir = std::string(parentDirectory) + "/.cache"; + std::string ffmpegKitDir = cacheDir + "/ffmpegkit"; + std::string pipesDir = ffmpegKitDir + "/pipes"; - if (!fs_exists(pipesDir, false, true)) { - if (mkdir(pipesDir.c_str(), S_IRWXU | S_IRWXG | S_IROTH) != 0) { - std::cout << "Failed to create pipes directory: " << pipesDir << ". Operation failed with " << errno << "." << std::endl; - return nullptr; - } + if (!fs_create_dir(cacheDir) || !fs_create_dir(ffmpegKitDir) || !fs_create_dir(pipesDir)) { + return nullptr; } - std::shared_ptr newFFmpegPipePath = std::make_shared(pipesDir + FFmpegKitNamedPipePrefix + std::to_string(pipeIndexGenerator++)); + std::shared_ptr newFFmpegPipePath = std::make_shared(pipesDir + "/" + FFmpegKitNamedPipePrefix + std::to_string(pipeIndexGenerator++)); // FIRST CLOSE OLD PIPES WITH THE SAME NAME ffmpegkit::FFmpegKitConfig::closeFFmpegPipe(newFFmpegPipePath->c_str()); @@ -933,8 +952,8 @@ std::shared_ptr ffmpegkit::FFmpegKitConfig::registerNewFFmpegPipe() } } -void ffmpegkit::FFmpegKitConfig::closeFFmpegPipe(const char* ffmpegPipePath) { - std::remove(ffmpegPipePath); +void ffmpegkit::FFmpegKitConfig::closeFFmpegPipe(const std::string& ffmpegPipePath) { + std::remove(ffmpegPipePath.c_str()); } std::string ffmpegkit::FFmpegKitConfig::getFFmpegVersion() { @@ -963,8 +982,8 @@ std::string ffmpegkit::FFmpegKitConfig::getBuildDate() { return std::string(buildDate); } -int ffmpegkit::FFmpegKitConfig::setEnvironmentVariable(const char* variableName, const char* variableValue) { - return setenv(variableName, variableValue, true); +int ffmpegkit::FFmpegKitConfig::setEnvironmentVariable(const std::string& variableName, const std::string& variableValue) { + return setenv(variableName.c_str(), variableValue.c_str(), true); } void ffmpegkit::FFmpegKitConfig::ignoreSignal(const ffmpegkit::Signal signal) { @@ -1023,7 +1042,7 @@ void ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(const std::shared_pt } void ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(const std::shared_ptr ffmpegSession) { - std::async(std::launch::async, [&]() { + auto thread = std::thread([ffmpegSession]() { ffmpegkit::FFmpegKitConfig::ffmpegExecute(ffmpegSession); ffmpegkit::FFmpegSessionCompleteCallback completeCallback = ffmpegSession->getCompleteCallback(); @@ -1046,10 +1065,12 @@ void ffmpegkit::FFmpegKitConfig::asyncFFmpegExecute(const std::shared_ptr ffprobeSession) { - std::async(std::launch::async, [&]() { + auto thread = std::thread([ffprobeSession]() { ffmpegkit::FFmpegKitConfig::ffprobeExecute(ffprobeSession); ffmpegkit::FFprobeSessionCompleteCallback completeCallback = ffprobeSession->getCompleteCallback(); @@ -1072,10 +1093,12 @@ void ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(const std::shared_ptr mediaInformationSession, const int waitTimeout) { - std::async(std::launch::async, [&]() { + auto thread = std::thread([mediaInformationSession,waitTimeout]() { ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(mediaInformationSession, waitTimeout); ffmpegkit::MediaInformationSessionCompleteCallback completeCallback = mediaInformationSession->getCompleteCallback(); @@ -1098,6 +1121,8 @@ void ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute(const std::shar } } }); + + thread.detach(); } void ffmpegkit::FFmpegKitConfig::enableLogCallback(const ffmpegkit::LogCallback callback) { @@ -1321,14 +1346,14 @@ std::string ffmpegkit::FFmpegKitConfig::sessionStateToString(SessionState state) } } -std::shared_ptr> ffmpegkit::FFmpegKitConfig::parseArguments(const char* command) { +std::shared_ptr> ffmpegkit::FFmpegKitConfig::parseArguments(const std::string& command) { auto argumentList = std::make_shared>(); std::string currentArgument; bool singleQuoteStarted = false; bool doubleQuoteStarted = false; - for (int i = 0; i < std::strlen(command); i++) { + for (int i = 0; i < command.size(); i++) { char previousChar; if (i > 0) { previousChar = command[i - 1]; diff --git a/linux/src/FFmpegKitConfig.h b/linux/src/FFmpegKitConfig.h index 15e92e4..62ba68d 100644 --- a/linux/src/FFmpegKitConfig.h +++ b/linux/src/FFmpegKitConfig.h @@ -52,9 +52,8 @@ namespace ffmpegkit { /** *

    Enables log and statistics redirection. * - *

    When redirection is enabled FFmpeg/FFprobe logs are redirected to stdout and sessions - * collect log and statistics entries for the executions. It is possible to define global or - * session specific log/statistics callbacks as well. + *

    When redirection is enabled FFmpeg/FFprobe sessions collect log and statistics entries for the + * executions. It is possible to define global or session specific log/statistics callbacks as well. * *

    Note that redirection is enabled by default. If you do not want to use its functionality * please use disableRedirection method to disable it. @@ -76,7 +75,7 @@ namespace ffmpegkit { * @param path directory that contains fontconfig configuration (fonts.conf) * @return zero on success, non-zero on error */ - static int setFontconfigConfigurationPath(const char* path); + static int setFontconfigConfigurationPath(const std::string& path); /** *

    Registers the fonts inside the given path, so they become available to use in FFmpeg @@ -90,7 +89,7 @@ namespace ffmpegkit { * @param fontNameMapping custom font name mappings, useful to access your fonts with more * friendly names */ - static void setFontDirectory(const char* fontDirectoryPath, const std::map& fontNameMapping); + static void setFontDirectory(const std::string& fontDirectoryPath, const std::map& fontNameMapping); /** *

    Registers the fonts inside the given list of font directories, so they become available @@ -104,7 +103,7 @@ namespace ffmpegkit { * @param fontNameMapping custom font name mappings, useful to access your fonts with more * friendly names */ - static void setFontDirectoryList(const std::list& fontDirectoryList, const std::map& fontNameMapping); + static void setFontDirectoryList(const std::list& fontDirectoryList, const std::map& fontNameMapping); /** *

    Creates a new named pipe to use in FFmpeg operations. @@ -120,7 +119,7 @@ namespace ffmpegkit { * * @param ffmpegPipePath full path of the FFmpeg pipe */ - static void closeFFmpegPipe(const char* ffmpegPipePath); + static void closeFFmpegPipe(const std::string& ffmpegPipePath); /** *

    Returns the version of FFmpeg bundled within FFmpegKit library. @@ -157,7 +156,7 @@ namespace ffmpegkit { * @param variableValue environment variable value * @return zero on success, non-zero on error */ - static int setEnvironmentVariable(const char* variableName, const char* variableValue); + static int setEnvironmentVariable(const std::string& variableName, const std::string& variableValue); /** *

    Registers a new ignored signal. Ignored signals are not handled by FFmpegKit @@ -223,49 +222,49 @@ namespace ffmpegkit { /** *

    Sets a global log callback to redirect FFmpeg/FFprobe logs. * - * @param logCallback log callback or nil to disable a previously defined log callback + * @param logCallback log callback or nullptr to disable a previously defined log callback */ static void enableLogCallback(const ffmpegkit::LogCallback logCallback); /** *

    Sets a global statistics callback to redirect FFmpeg statistics. * - * @param statisticsCallback statistics callback or nil to disable a previously defined statistics callback + * @param statisticsCallback statistics callback or nullptr to disable a previously defined statistics callback */ static void enableStatisticsCallback(const ffmpegkit::StatisticsCallback statisticsCallback); /** *

    Sets a global FFmpegSessionCompleteCallback to receive execution results for FFmpeg sessions. * - * @param ffmpegSessionCompleteCallback complete callback or nil to disable a previously defined callback + * @param ffmpegSessionCompleteCallback complete callback or nullptr to disable a previously defined callback */ static void enableFFmpegSessionCompleteCallback(const FFmpegSessionCompleteCallback ffmpegSessionCompleteCallback); /** *

    Returns the global FFmpegSessionCompleteCallback set. * - * @return global FFmpegSessionCompleteCallback or nil if it is not set + * @return global FFmpegSessionCompleteCallback or nullptr if it is not set */ static FFmpegSessionCompleteCallback getFFmpegSessionCompleteCallback(); /** *

    Sets a global FFprobeSessionCompleteCallback to receive execution results for FFprobe sessions. * - * @param ffprobeSessionCompleteCallback complete callback or nil to disable a previously defined callback + * @param ffprobeSessionCompleteCallback complete callback or nullptr to disable a previously defined callback */ static void enableFFprobeSessionCompleteCallback(const FFprobeSessionCompleteCallback ffprobeSessionCompleteCallback); /** *

    Returns the global FFprobeSessionCompleteCallback set. * - * @return global FFprobeSessionCompleteCallback or nil if it is not set + * @return global FFprobeSessionCompleteCallback or nullptr if it is not set */ static FFprobeSessionCompleteCallback getFFprobeSessionCompleteCallback(); /** *

    Sets a global MediaInformationSessionCompleteCallback to receive execution results for MediaInformation sessions. * - * @param mediaInformationSessionCompleteCallback complete callback or nil to disable a previously defined + * @param mediaInformationSessionCompleteCallback complete callback or nullptr to disable a previously defined * callback */ static void enableMediaInformationSessionCompleteCallback(const MediaInformationSessionCompleteCallback mediaInformationSessionCompleteCallback); @@ -273,7 +272,7 @@ namespace ffmpegkit { /** *

    Returns the global MediaInformationSessionCompleteCallback set. * - * @return global MediaInformationSessionCompleteCallback or nil if it is not set + * @return global MediaInformationSessionCompleteCallback or nullptr if it is not set */ static MediaInformationSessionCompleteCallback getMediaInformationSessionCompleteCallback(); @@ -292,7 +291,7 @@ namespace ffmpegkit { static void setLogLevel(const ffmpegkit::Level level); /** - * Converts int log level to string. + * Converts log level to string. * * @param level value * @return string value @@ -317,14 +316,14 @@ namespace ffmpegkit { * Returns the session specified with sessionId from the session history. * * @param sessionId session identifier - * @return session specified with sessionId or nil if it is not found in the history + * @return session specified with sessionId or nullptr if it is not found in the history */ static std::shared_ptr getSession(const long sessionId); /** * Returns the last session created from the session history. * - * @return the last session created or nil if session history is empty + * @return the last session created or nullptr if session history is empty */ static std::shared_ptr getLastSession(); @@ -332,7 +331,7 @@ namespace ffmpegkit { * Returns the last session completed from the session history. * * @return the last session completed. If there are no completed sessions in the history this - * method will return nil + * method will return nullptr */ static std::shared_ptr getLastCompletedSession(); @@ -415,7 +414,7 @@ namespace ffmpegkit { * @param command string command * @return list of arguments */ - static std::shared_ptr> parseArguments(const char* command); + static std::shared_ptr> parseArguments(const std::string& command); /** *

    Concatenates arguments into a string adding a space character between two arguments. diff --git a/linux/src/FFmpegSession.cpp b/linux/src/FFmpegSession.cpp index 0e84a46..da36d20 100644 --- a/linux/src/FFmpegSession.cpp +++ b/linux/src/FFmpegSession.cpp @@ -22,20 +22,40 @@ #include "LogCallback.h" #include "StatisticsCallback.h" -ffmpegkit::FFmpegSession::FFmpegSession(const std::shared_ptr> arguments) : - ffmpegkit::FFmpegSession(arguments, nullptr, nullptr, nullptr) { +extern void addSessionToSessionHistory(const std::shared_ptr session); + +std::shared_ptr ffmpegkit::FFmpegSession::create(const std::shared_ptr> arguments) { + std::shared_ptr session = std::static_pointer_cast(std::make_shared(arguments, nullptr, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; +} + +std::shared_ptr ffmpegkit::FFmpegSession::create(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback) { + std::shared_ptr session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; } -ffmpegkit::FFmpegSession::FFmpegSession(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback) : - ffmpegkit::FFmpegSession(arguments, completeCallback, nullptr, nullptr) { +std::shared_ptr ffmpegkit::FFmpegSession::create(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) { + std::shared_ptr session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, logCallback, statisticsCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; } -ffmpegkit::FFmpegSession::FFmpegSession(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback) : - ffmpegkit::FFmpegSession(arguments, completeCallback, logCallback, statisticsCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()) { +std::shared_ptr ffmpegkit::FFmpegSession::create(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy) { + std::shared_ptr session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, logCallback, statisticsCallback, logRedirectionStrategy)); + addSessionToSessionHistory(session); + return session; } +struct ffmpegkit::FFmpegSession::PublicFFmpegSession : public ffmpegkit::FFmpegSession { + PublicFFmpegSession(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy) : + FFmpegSession(arguments, completeCallback, logCallback, statisticsCallback, logRedirectionStrategy) { + } +}; + ffmpegkit::FFmpegSession::FFmpegSession(const std::shared_ptr> arguments, FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, LogRedirectionStrategy logRedirectionStrategy) : - ffmpegkit::AbstractSession(arguments, logCallback, logRedirectionStrategy), _completeCallback{completeCallback}, _statisticsCallback{statisticsCallback} { + ffmpegkit::AbstractSession(arguments, logCallback, logRedirectionStrategy), _completeCallback{completeCallback}, _statisticsCallback{statisticsCallback}, _statistics{std::make_shared>>()} { } ffmpegkit::StatisticsCallback ffmpegkit::FFmpegSession::getStatisticsCallback() { diff --git a/linux/src/FFmpegSession.h b/linux/src/FFmpegSession.h index c3e1453..048125d 100644 --- a/linux/src/FFmpegSession.h +++ b/linux/src/FFmpegSession.h @@ -37,7 +37,7 @@ namespace ffmpegkit { * * @param arguments command arguments */ - FFmpegSession(const std::shared_ptr> arguments); + static std::shared_ptr create(const std::shared_ptr> arguments); /** * Builds a new FFmpeg session. @@ -45,7 +45,7 @@ namespace ffmpegkit { * @param arguments command arguments * @param completeCallback session specific complete callback */ - FFmpegSession(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback); /** * Builds a new FFmpeg session. @@ -55,7 +55,7 @@ namespace ffmpegkit { * @param logCallback session specific log callback * @param statisticsCallback session specific statistics callback */ - FFmpegSession(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback); /** * Builds a new FFmpeg session. @@ -66,7 +66,7 @@ namespace ffmpegkit { * @param statisticsCallback session specific statistics callback * @param logRedirectionStrategy session specific log redirection strategy */ - FFmpegSession(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy); + static std::shared_ptr create(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy); /** * Returns the session specific statistics callback. @@ -112,7 +112,7 @@ namespace ffmpegkit { /** * Returns the last received statistics entry. * - * @return the last received statistics entry or nil if there are not any statistics entries + * @return the last received statistics entry or nullptr if there are not any statistics entries * received */ std::shared_ptr getLastReceivedStatistics(); @@ -147,6 +147,20 @@ namespace ffmpegkit { bool isMediaInformation() const override; private: + + struct PublicFFmpegSession; + + /** + * Builds a new FFmpeg session. + * + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param statisticsCallback session specific statistics callback + * @param logRedirectionStrategy session specific log redirection strategy + */ + FFmpegSession(const std::shared_ptr> arguments, ffmpegkit::FFmpegSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, ffmpegkit::StatisticsCallback statisticsCallback, ffmpegkit::LogRedirectionStrategy logRedirectionStrategy); + ffmpegkit::StatisticsCallback _statisticsCallback; FFmpegSessionCompleteCallback _completeCallback; std::shared_ptr>> _statistics; diff --git a/linux/src/FFmpegSessionCompleteCallback.h b/linux/src/FFmpegSessionCompleteCallback.h index 7463aec..8c7f4c0 100644 --- a/linux/src/FFmpegSessionCompleteCallback.h +++ b/linux/src/FFmpegSessionCompleteCallback.h @@ -22,6 +22,7 @@ #include #include +#include namespace ffmpegkit { @@ -36,19 +37,19 @@ namespace ffmpegkit { *

    If getState returns SessionStateFailed then * getFailStackTrace should be used to get the failure reason. *

    -     *  switch ([session getState]) {
    +     *  switch (session->getState()) {
          *      case SessionStateCompleted:
    -     *          ReturnCode *returnCode = [session getReturnCode];
    +     *          auto returnCode = session->getReturnCode();
          *          break;
          *      case SessionStateFailed:
    -     *          NSString *failStackTrace = [session getFailStackTrace];
    +     *          auto failStackTrace = session->getFailStackTrace();
          *          break;
          *  }
          * 
    * * @param session session of the completed execution */ - typedef void (*FFmpegSessionCompleteCallback)(const std::shared_ptr session); + typedef std::function session)> FFmpegSessionCompleteCallback; #include "FFmpegSession.h" diff --git a/linux/src/FFprobeKit.cpp b/linux/src/FFprobeKit.cpp index 559f842..5c5771a 100644 --- a/linux/src/FFprobeKit.cpp +++ b/linux/src/FFprobeKit.cpp @@ -24,7 +24,7 @@ extern void* ffmpegKitInitialize(); -static const void* _ffprobeKitInitializer = ffmpegKitInitialize(); +const void* _ffprobeKitInitializer{ffmpegKitInitialize()}; static std::shared_ptr> defaultGetMediaInformationCommandArguments(const std::string& path) { std::shared_ptr> arguments = std::make_shared>(); @@ -42,71 +42,71 @@ static std::shared_ptr> defaultGetMediaInformationCommand } std::shared_ptr ffmpegkit::FFprobeKit::executeWithArguments(const std::shared_ptr> arguments) { - auto session = std::make_shared(arguments); + auto session = ffmpegkit::FFprobeSession::create(arguments); ffmpegkit::FFmpegKitConfig::ffprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr> arguments, FFprobeSessionCompleteCallback completeCallback) { - auto session = std::make_shared(arguments, completeCallback); + auto session = ffmpegkit::FFprobeSession::create(arguments, completeCallback); ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::executeWithArgumentsAsync(const std::shared_ptr> arguments, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) { - auto session = std::make_shared(arguments, completeCallback, logCallback); + auto session = ffmpegkit::FFprobeSession::create(arguments, completeCallback, logCallback); ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::execute(const std::string command) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str())); + auto session = ffmpegkit::FFprobeSession::create(FFmpegKitConfig::parseArguments(command.c_str())); ffmpegkit::FFmpegKitConfig::ffprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback); + auto session = ffmpegkit::FFprobeSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback); ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::executeAsync(const std::string command, FFprobeSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback){ - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback); + auto session = ffmpegkit::FFprobeSession::create(FFmpegKitConfig::parseArguments(command.c_str()), completeCallback, logCallback); ffmpegkit::FFmpegKitConfig::asyncFFprobeExecute(session); return session; } std::shared_ptr ffmpegkit::FFprobeKit::getMediaInformation(const std::string path) { auto arguments = defaultGetMediaInformationCommandArguments(path); - auto session = std::make_shared(arguments); + auto session = ffmpegkit::MediaInformationSession::create(arguments); ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(session, ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit); return session; } std::shared_ptr ffmpegkit::FFprobeKit::getMediaInformation(const std::string path, const int waitTimeout) { auto arguments = defaultGetMediaInformationCommandArguments(path); - auto session = std::make_shared(arguments); + auto session = ffmpegkit::MediaInformationSession::create(arguments); ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(session, waitTimeout); return session; } std::shared_ptr ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback) { auto arguments = defaultGetMediaInformationCommandArguments(path); - auto session = std::make_shared(arguments, completeCallback); + auto session = ffmpegkit::MediaInformationSession::create(arguments, completeCallback); ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute(session, ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit); return session; } std::shared_ptr ffmpegkit::FFprobeKit::getMediaInformationAsync(const std::string path, MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback, const int waitTimeout) { auto arguments = defaultGetMediaInformationCommandArguments(path); - auto session = std::make_shared(arguments, completeCallback, logCallback); + auto session = ffmpegkit::MediaInformationSession::create(arguments, completeCallback, logCallback); ffmpegkit::FFmpegKitConfig::asyncGetMediaInformationExecute(session, waitTimeout); return session; } std::shared_ptr ffmpegkit::FFprobeKit::getMediaInformationFromCommand(const std::string command) { - auto session = std::make_shared(FFmpegKitConfig::parseArguments(command.c_str())); + auto session = ffmpegkit::MediaInformationSession::create(FFmpegKitConfig::parseArguments(command.c_str())); ffmpegkit::FFmpegKitConfig::getMediaInformationExecute(session, ffmpegkit::AbstractSession::DefaultTimeoutForAsynchronousMessagesInTransmit); return session; } diff --git a/linux/src/FFprobeKit.h b/linux/src/FFprobeKit.h index fc9171e..9accd0e 100644 --- a/linux/src/FFprobeKit.h +++ b/linux/src/FFprobeKit.h @@ -24,6 +24,7 @@ #include #include "FFprobeSession.h" #include "MediaInformationJsonParser.h" +#include "MediaInformationSession.h" namespace ffmpegkit { @@ -31,17 +32,17 @@ namespace ffmpegkit { *

    Main class to run FFprobe commands. Supports executing commands both synchronously and * asynchronously. *

    -     * FFprobeSession *session = [FFprobeKit execute:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4"];
    +     * auto session = FFprobeKit::execute("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4");
          *
    -     * FFprobeSession *asyncSession = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withCompleteCallback:completeCallback];
    +     * auto asyncSession = FFprobeKit::executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", [](auto session){ ... });
          * 
    *

    Provides overloaded execute methods to define session specific callbacks. *

    -     * FFprobeSession *session = [FFprobeKit executeAsync:@"-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4" withCompleteCallback:completeCallback withLogCallback:logCallback];
    +     * auto session = FFprobeKit::executeAsync("-hide_banner -v error -show_entries format=size -of default=noprint_wrappers=1 file1.mp4", [](auto session){ ... }, [](auto log){ ... }];
          * 
    *

    It can extract media information for a file or a url, using getMediaInformation method. *

    -     *      MediaInformationSession *session = [FFprobeKit getMediaInformation:@"file1.mp4"];
    +     * auto session = FFprobeKit::getMediaInformation("file1.mp4");
          * 
    */ class FFprobeKit { diff --git a/linux/src/FFprobeSession.cpp b/linux/src/FFprobeSession.cpp index 68c37b8..3e2895c 100644 --- a/linux/src/FFprobeSession.cpp +++ b/linux/src/FFprobeSession.cpp @@ -21,18 +21,38 @@ #include "FFmpegKitConfig.h" #include "LogCallback.h" -ffmpegkit::FFprobeSession::FFprobeSession(const std::shared_ptr> arguments) : - ffmpegkit::FFprobeSession(arguments, nullptr, nullptr) { +extern void addSessionToSessionHistory(const std::shared_ptr session); + +std::shared_ptr ffmpegkit::FFprobeSession::create(const std::shared_ptr> arguments) { + auto session = std::static_pointer_cast(std::make_shared(arguments, nullptr, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; +} + +std::shared_ptr ffmpegkit::FFprobeSession::create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback) { + auto session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, nullptr, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; } -ffmpegkit::FFprobeSession::FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback) : - ffmpegkit::FFprobeSession(arguments, completeCallback, nullptr) { +std::shared_ptr ffmpegkit::FFprobeSession::create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback) { + auto session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, logCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy())); + addSessionToSessionHistory(session); + return session; } -ffmpegkit::FFprobeSession::FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback) : - ffmpegkit::AbstractSession(arguments, logCallback, ffmpegkit::FFmpegKitConfig::getLogRedirectionStrategy()), _completeCallback{completeCallback} { +std::shared_ptr ffmpegkit::FFprobeSession::create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) { + auto session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, logCallback, logRedirectionStrategy)); + addSessionToSessionHistory(session); + return session; } +struct ffmpegkit::FFprobeSession::PublicFFprobeSession : public ffmpegkit::FFprobeSession { + PublicFFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) : + FFprobeSession(arguments, completeCallback, logCallback, logRedirectionStrategy) { + } +}; + ffmpegkit::FFprobeSession::FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy) : ffmpegkit::AbstractSession(arguments, logCallback, logRedirectionStrategy), _completeCallback{completeCallback} { } diff --git a/linux/src/FFprobeSession.h b/linux/src/FFprobeSession.h index 4d1fbf2..30eeb3d 100644 --- a/linux/src/FFprobeSession.h +++ b/linux/src/FFprobeSession.h @@ -36,7 +36,7 @@ namespace ffmpegkit { * * @param arguments command arguments */ - FFprobeSession(const std::shared_ptr> arguments); + static std::shared_ptr create(const std::shared_ptr> arguments); /** * Builds a new FFprobe session. @@ -44,7 +44,7 @@ namespace ffmpegkit { * @param arguments command arguments * @param completeCallback session specific complete callback */ - FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback); /** * Builds a new FFprobe session. @@ -53,7 +53,7 @@ namespace ffmpegkit { * @param completeCallback session specific complete callback * @param logCallback session specific log callback */ - FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback); /** * Builds a new FFprobe session. @@ -63,7 +63,7 @@ namespace ffmpegkit { * @param logCallback session specific log callback * @param logRedirectionStrategy session specific log redirection strategy */ - FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy); + static std::shared_ptr create(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy); /** * Returns the session specific complete callback. @@ -94,6 +94,19 @@ namespace ffmpegkit { bool isMediaInformation() const override; private: + + struct PublicFFprobeSession; + + /** + * Builds a new FFprobe session. + * + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + * @param logRedirectionStrategy session specific log redirection strategy + */ + FFprobeSession(const std::shared_ptr> arguments, const FFprobeSessionCompleteCallback completeCallback, const ffmpegkit::LogCallback logCallback, const LogRedirectionStrategy logRedirectionStrategy); + FFprobeSessionCompleteCallback _completeCallback; }; diff --git a/linux/src/FFprobeSessionCompleteCallback.h b/linux/src/FFprobeSessionCompleteCallback.h index 4188c15..d551f77 100644 --- a/linux/src/FFprobeSessionCompleteCallback.h +++ b/linux/src/FFprobeSessionCompleteCallback.h @@ -22,6 +22,7 @@ #include #include +#include namespace ffmpegkit { @@ -36,19 +37,19 @@ namespace ffmpegkit { *

    If getState returns SessionStateFailed then * getFailStackTrace should be used to get the failure reason. *

    -     *  switch ([session getState]) {
    +     *  switch (session->getState()) {
          *      case SessionStateCompleted:
    -     *          ReturnCode *returnCode = [session getReturnCode];
    +     *          auto returnCode = session->getReturnCode();
          *          break;
          *      case SessionStateFailed:
    -     *          NSString *failStackTrace = [session getFailStackTrace];
    +     *          auto failStackTrace = session->getFailStackTrace();
          *          break;
          *  }
          * 
    * * @param session session of the completed execution */ - typedef void (*FFprobeSessionCompleteCallback)(const std::shared_ptr session); + typedef std::function session)> FFprobeSessionCompleteCallback; #include "FFprobeSession.h" diff --git a/linux/src/LogCallback.h b/linux/src/LogCallback.h index 80a4672..fba86f6 100644 --- a/linux/src/LogCallback.h +++ b/linux/src/LogCallback.h @@ -23,6 +23,7 @@ #include "Log.h" #include #include +#include namespace ffmpegkit { @@ -31,7 +32,7 @@ namespace ffmpegkit { * * @param log log entry */ - typedef void (*LogCallback)(const std::shared_ptr log); + typedef std::function log)> LogCallback; } diff --git a/linux/src/MediaInformation.cpp b/linux/src/MediaInformation.cpp index d80261b..6173bcf 100644 --- a/linux/src/MediaInformation.cpp +++ b/linux/src/MediaInformation.cpp @@ -23,38 +23,43 @@ ffmpegkit::MediaInformation::MediaInformation(std::shared_ptr _mediaInformationValue{mediaInformationValue}, _streams{streams}, _chapters{chapters} { } -std::string ffmpegkit::MediaInformation::getFilename() { - return (*_mediaInformationValue)[KeyFilename].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getFilename() { + return getStringProperty(KeyFilename); } -std::string ffmpegkit::MediaInformation::getFormat() { - return (*_mediaInformationValue)[KeyFormat].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getFormat() { + return getStringProperty(KeyFormat); } -std::string ffmpegkit::MediaInformation::getLongFormat() { - return (*_mediaInformationValue)[KeyFormatLong].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getLongFormat() { + return getStringProperty(KeyFormatLong); } -std::string ffmpegkit::MediaInformation::getStartTime() { - return (*_mediaInformationValue)[KeyStartTime].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getStartTime() { + return getStringProperty(KeyStartTime); } -std::string ffmpegkit::MediaInformation::getDuration() { - return (*_mediaInformationValue)[KeyDuration].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getDuration() { + return getStringProperty(KeyDuration); } -std::string ffmpegkit::MediaInformation::getSize() { - return (*_mediaInformationValue)[KeySize].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getSize() { + return getStringProperty(KeySize); } -std::string ffmpegkit::MediaInformation::getBitrate() { - return (*_mediaInformationValue)[KeyBitRate].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getBitrate() { + return getStringProperty(KeyBitRate); } std::shared_ptr ffmpegkit::MediaInformation::getTags() { - auto tags = std::make_shared(); - *tags = (*_mediaInformationValue)[KeyTags]; - return tags; + auto mediaProperties = getMediaProperties(); + if (mediaProperties->HasMember(KeyTags)) { + auto tags = std::make_shared(); + *tags = (*mediaProperties)[KeyTags]; + return tags; + } else { + return nullptr; + } } std::shared_ptr>> ffmpegkit::MediaInformation::getStreams() { @@ -65,28 +70,50 @@ std::shared_ptr>> ffmpegkit::Med return _chapters; } -std::string ffmpegkit::MediaInformation::getStringProperty(const char* key) { - return (*_mediaInformationValue)[key].GetString(); +std::shared_ptr ffmpegkit::MediaInformation::getStringProperty(const char* key) { + auto mediaProperties = getMediaProperties(); + if (mediaProperties->HasMember(key)) { + return std::make_shared((*mediaProperties)[key].GetString()); + } else { + return nullptr; + } } -int64_t ffmpegkit::MediaInformation::getNumberProperty(const char* key) { - return (*_mediaInformationValue)[key].GetInt64(); +std::shared_ptr ffmpegkit::MediaInformation::getNumberProperty(const char* key) { + auto mediaProperties = getMediaProperties(); + if (mediaProperties->HasMember(key)) { + return std::make_shared((*mediaProperties)[key].GetInt64()); + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::MediaInformation::getProperties(const char* key) { - auto value = std::make_shared(); - *value = (*_mediaInformationValue)[key]; - return value; + if (_mediaInformationValue->HasMember(key)) { + auto value = std::make_shared(); + *value = (*_mediaInformationValue)[key]; + return value; + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::MediaInformation::getMediaProperties() { - auto mediaProperties = std::make_shared(); - *mediaProperties = (*_mediaInformationValue)[KeyMediaProperties]; - return mediaProperties; + if (_mediaInformationValue->HasMember(KeyMediaProperties)) { + auto mediaProperties = std::make_shared(); + *mediaProperties = (*_mediaInformationValue)[KeyMediaProperties]; + return mediaProperties; + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::MediaInformation::getAllProperties() { - auto all = std::make_shared(); - *all = (*_mediaInformationValue); - return all; + if (_mediaInformationValue != nullptr) { + auto all = std::make_shared(); + *all = (*_mediaInformationValue); + return all; + } else { + return nullptr; + } } diff --git a/linux/src/MediaInformation.h b/linux/src/MediaInformation.h index 3d5bd3d..cf17844 100644 --- a/linux/src/MediaInformation.h +++ b/linux/src/MediaInformation.h @@ -49,103 +49,103 @@ namespace ffmpegkit { * * @return media file name */ - std::string getFilename(); + std::shared_ptr getFilename(); /** * Returns format. * * @return media format */ - std::string getFormat(); + std::shared_ptr getFormat(); /** * Returns long format. * * @return media long format */ - std::string getLongFormat(); + std::shared_ptr getLongFormat(); /** * Returns duration. * * @return media duration in milliseconds */ - std::string getDuration(); + std::shared_ptr getDuration(); /** * Returns start time. * * @return media start time in milliseconds */ - std::string getStartTime(); + std::shared_ptr getStartTime(); /** * Returns size. * * @return media size in bytes */ - std::string getSize(); + std::shared_ptr getSize(); /** * Returns bitrate. * * @return media bitrate in kb/s */ - std::string getBitrate(); + std::shared_ptr getBitrate(); /** * Returns all tags. * - * @return tags dictionary + * @return tags Value */ std::shared_ptr getTags(); /** * Returns all streams. * - * @return streams array + * @return streams vector */ std::shared_ptr>> getStreams(); /** * Returns all chapters. * - * @return chapters array + * @return chapters vector */ std::shared_ptr>> getChapters(); /** * Returns the media property associated with the key. * - * @return media property as string or nil if the key is not found + * @return media property as string or nullptr if the key is not found */ - std::string getStringProperty(const char* key); + std::shared_ptr getStringProperty(const char* key); /** * Returns the media property associated with the key. * - * @return media property as number or nil if the key is not found + * @return media property as number or nullptr if the key is not found */ - int64_t getNumberProperty(const char* key); + std::shared_ptr getNumberProperty(const char* key); /** * Returns the media properties associated with the key. * - * @return media properties in a dictionary or nil if the key is not found + * @return media properties in a Value or nullptr if the key is not found */ std::shared_ptr getProperties(const char* key); /** * Returns all media properties. * - * @return all media properties in a dictionary or nil if no media properties are defined + * @return all media properties in a Value or nullptr if no media properties are defined */ std::shared_ptr getMediaProperties(); /** * Returns all properties defined. * - * @return all properties in a dictionary or nil if no properties are defined + * @return all properties in a Value or nullptr if no properties are defined */ std::shared_ptr getAllProperties(); diff --git a/linux/src/MediaInformationJsonParser.cpp b/linux/src/MediaInformationJsonParser.cpp index 986362e..99908a9 100644 --- a/linux/src/MediaInformationJsonParser.cpp +++ b/linux/src/MediaInformationJsonParser.cpp @@ -18,6 +18,8 @@ */ #include "MediaInformationJsonParser.h" +// OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION +#define RAPIDJSON_ASSERT(x) #include "rapidjson/reader.h" #include "rapidjson/document.h" #include "rapidjson/error/en.h" @@ -26,7 +28,7 @@ static const char* MediaInformationJsonParserKeyStreams = "streams"; static const char* MediaInformationJsonParserKeyChapters = "chapters"; -std::shared_ptr ffmpegkit::MediaInformationJsonParser::from(const char* ffprobeJsonOutput) { +std::shared_ptr ffmpegkit::MediaInformationJsonParser::from(const std::string& ffprobeJsonOutput) { std::string error; std::shared_ptr mediaInformation = fromWithError(ffprobeJsonOutput, error); @@ -37,10 +39,10 @@ std::shared_ptr ffmpegkit::MediaInformationJsonPars return mediaInformation; } -std::shared_ptr ffmpegkit::MediaInformationJsonParser::fromWithError(const char* ffprobeJsonOutput, std::string& error) { +std::shared_ptr ffmpegkit::MediaInformationJsonParser::fromWithError(const std::string& ffprobeJsonOutput, std::string& error) { std::shared_ptr document = std::make_shared(); - document->Parse(ffprobeJsonOutput); + document->Parse(ffprobeJsonOutput.c_str()); if (document->HasParseError()) { error = GetParseError_En(document->GetParseError()); diff --git a/linux/src/MediaInformationJsonParser.h b/linux/src/MediaInformationJsonParser.h index 208bf31..d07cab9 100644 --- a/linux/src/MediaInformationJsonParser.h +++ b/linux/src/MediaInformationJsonParser.h @@ -35,9 +35,9 @@ namespace ffmpegkit { * Extracts MediaInformation from the given FFprobe json output. * * @param ffprobeJsonOutput FFprobe json output - * @return created MediaInformation instance of nil if a parsing error occurs + * @return created MediaInformation instance of nullptr if a parsing error occurs */ - static std::shared_ptr from(const char* ffprobeJsonOutput); + static std::shared_ptr from(const std::string& ffprobeJsonOutput); /** * Extracts MediaInformation from the given FFprobe json output. @@ -46,7 +46,7 @@ namespace ffmpegkit { * @param error error to save the parsing error if a parsing error occurs * @return created MediaInformation instance */ - static std::shared_ptr fromWithError(const char* ffprobeJsonOutput, std::string& error); + static std::shared_ptr fromWithError(const std::string& ffprobeJsonOutput, std::string& error); }; diff --git a/linux/src/MediaInformationSession.cpp b/linux/src/MediaInformationSession.cpp index d34f4dd..2fe9a59 100644 --- a/linux/src/MediaInformationSession.cpp +++ b/linux/src/MediaInformationSession.cpp @@ -21,14 +21,32 @@ #include "LogCallback.h" #include "MediaInformation.h" -ffmpegkit::MediaInformationSession::MediaInformationSession(const std::shared_ptr> arguments) : - ffmpegkit::MediaInformationSession(arguments, nullptr, nullptr) { +extern void addSessionToSessionHistory(const std::shared_ptr session); + +std::shared_ptr ffmpegkit::MediaInformationSession::create(const std::shared_ptr> arguments) { + auto session = std::static_pointer_cast(std::make_shared(arguments, nullptr, nullptr)); + addSessionToSessionHistory(session); + return session; +} + +std::shared_ptr ffmpegkit::MediaInformationSession::create(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback) { + auto session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, nullptr)); + addSessionToSessionHistory(session); + return session; } -ffmpegkit::MediaInformationSession::MediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback) : - ffmpegkit::MediaInformationSession(arguments, completeCallback, nullptr) { +std::shared_ptr ffmpegkit::MediaInformationSession::create(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) { + auto session = std::static_pointer_cast(std::make_shared(arguments, completeCallback, logCallback)); + addSessionToSessionHistory(session); + return session; } +struct ffmpegkit::MediaInformationSession::PublicMediaInformationSession : public ffmpegkit::MediaInformationSession { + PublicMediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) : + MediaInformationSession(arguments, completeCallback, logCallback) { + } +}; + ffmpegkit::MediaInformationSession::MediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback) : ffmpegkit::AbstractSession(arguments, logCallback, ffmpegkit::LogRedirectionStrategyNeverPrintLogs), _completeCallback{completeCallback}, _mediaInformation{nullptr} { } diff --git a/linux/src/MediaInformationSession.h b/linux/src/MediaInformationSession.h index 5902f40..b5ab4de 100644 --- a/linux/src/MediaInformationSession.h +++ b/linux/src/MediaInformationSession.h @@ -38,7 +38,7 @@ namespace ffmpegkit { * * @param arguments command arguments */ - MediaInformationSession(const std::shared_ptr> arguments); + static std::shared_ptr create(const std::shared_ptr> arguments); /** * Creates a new media information session. @@ -46,7 +46,7 @@ namespace ffmpegkit { * @param arguments command arguments * @param completeCallback session specific complete callback */ - MediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback); /** * Creates a new media information session. @@ -55,12 +55,12 @@ namespace ffmpegkit { * @param completeCallback session specific complete callback * @param logCallback session specific log callback */ - MediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback); + static std::shared_ptr create(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback); /** * Returns the media information extracted in this session. * - * @return media information extracted or nil if the command failed or the output can not be + * @return media information extracted or nullptr if the command failed or the output can not be * parsed */ std::shared_ptr getMediaInformation(); @@ -101,6 +101,18 @@ namespace ffmpegkit { bool isMediaInformation() const override; private: + + struct PublicMediaInformationSession; + + /** + * Creates a new media information session. + * + * @param arguments command arguments + * @param completeCallback session specific complete callback + * @param logCallback session specific log callback + */ + MediaInformationSession(const std::shared_ptr> arguments, ffmpegkit::MediaInformationSessionCompleteCallback completeCallback, ffmpegkit::LogCallback logCallback); + ffmpegkit::MediaInformationSessionCompleteCallback _completeCallback; std::shared_ptr _mediaInformation; }; diff --git a/linux/src/MediaInformationSessionCompleteCallback.h b/linux/src/MediaInformationSessionCompleteCallback.h index b30f579..a10afc2 100644 --- a/linux/src/MediaInformationSessionCompleteCallback.h +++ b/linux/src/MediaInformationSessionCompleteCallback.h @@ -22,6 +22,7 @@ #include #include +#include namespace ffmpegkit { @@ -37,19 +38,19 @@ namespace ffmpegkit { *

    If getState returns SessionStateFailed then * getFailStackTrace should be used to get the failure reason. *

    -     *  switch ([session getState]) {
    +     *  switch (session->getState()) {
          *      case SessionStateCompleted:
    -     *          ReturnCode *returnCode = [session getReturnCode];
    +     *          auto returnCode = session->getReturnCode();
          *          break;
          *      case SessionStateFailed:
    -     *          NSString *failStackTrace = [session getFailStackTrace];
    +     *          auto failStackTrace = session->getFailStackTrace();
          *          break;
          *  }
          * 
    * * @param session session of the completed execution */ - typedef void (*MediaInformationSessionCompleteCallback)(const std::shared_ptr session); + typedef std::function session)> MediaInformationSessionCompleteCallback; #include "MediaInformationSession.h" diff --git a/linux/src/Packages.cpp b/linux/src/Packages.cpp index 1949dd8..95dde38 100644 --- a/linux/src/Packages.cpp +++ b/linux/src/Packages.cpp @@ -22,41 +22,6 @@ #include #include -static const std::set supportedExternalLibraries = { - "dav1d", - "fontconfig", - "freetype", - "fribidi", - "gmp", - "gnutls", - "kvazaar", - "mp3lame", - "libaom", - "libass", - "iconv", - "libilbc", - "libtheora", - "libvidstab", - "libvorbis", - "libvpx", - "libwebp", - "libxml2", - "opencore-amr", - "openh264", - "opus", - "rubberband", - "sdl2", - "shine", - "snappy", - "soxr", - "speex", - "tesseract", - "twolame", - "x264", - "x265", - "xvid" -}; - std::string ffmpegkit::Packages::getPackageName() { std::shared_ptr> enabledLibrarySet = getExternalLibraries(); #define contains_ext_lib(element) enabledLibrarySet->find(element) != enabledLibrarySet->end() @@ -233,6 +198,39 @@ std::string ffmpegkit::Packages::getPackageName() { } std::shared_ptr> ffmpegkit::Packages::getExternalLibraries() { + const std::set supportedExternalLibraries{ + "dav1d", + "fontconfig", + "freetype", + "fribidi", + "gmp", + "gnutls", + "kvazaar", + "mp3lame", + "libaom", + "libass", + "iconv", + "libilbc", + "libtheora", + "libvidstab", + "libvorbis", + "libvpx", + "libwebp", + "libxml2", + "opencore-amr", + "openh264", + "opus", + "rubberband", + "sdl2", + "shine", + "snappy", + "soxr", + "speex", + "tesseract", + "twolame", + "x264", + "x265", + "xvid"}; std::string buildConfiguration(FFMPEG_CONFIGURATION); char libraryName1[50]; char libraryName2[50]; diff --git a/linux/src/ReturnCode.cpp b/linux/src/ReturnCode.cpp index ac8c984..5fcde68 100644 --- a/linux/src/ReturnCode.cpp +++ b/linux/src/ReturnCode.cpp @@ -46,6 +46,14 @@ bool ffmpegkit::ReturnCode::isValueCancel() const { return (_value == Cancel); } -std::ostream& operator<<(std::ostream& out, const ffmpegkit::ReturnCode& o) { - return out << o.getValue(); +namespace ffmpegkit { + + std::ostream& operator<<(std::ostream& out, const std::shared_ptr& o) { + if (o == nullptr) { + return out; + } else { + return out << o->_value; + } + } + } diff --git a/linux/src/ReturnCode.h b/linux/src/ReturnCode.h index e7eb728..008c69f 100644 --- a/linux/src/ReturnCode.h +++ b/linux/src/ReturnCode.h @@ -21,6 +21,7 @@ #define FFMPEG_KIT_RETURN_CODE_H #include +#include namespace ffmpegkit { @@ -37,7 +38,7 @@ namespace ffmpegkit { bool isValueSuccess() const; bool isValueError() const; bool isValueCancel() const; - friend std::ostream& operator<<(std::ostream& out, const ReturnCode& o); + friend std::ostream& operator<<(std::ostream& out, const std::shared_ptr& o); private: int _value; diff --git a/linux/src/Session.h b/linux/src/Session.h index 6c7f7e3..f0e1ffc 100644 --- a/linux/src/Session.h +++ b/linux/src/Session.h @@ -164,9 +164,9 @@ namespace ffmpegkit { /** * Returns the return code for this session. Note that return code is only set for sessions * that end with SessionStateCompleted state. If a session is not started, still running or failed then - * this method returns nil. + * this method returns nullptr. * - * @return the return code for this session if the session has completed, nil if session is + * @return the return code for this session if the session has completed, nullptr if session is * not started, still running or failed */ virtual std::shared_ptr getReturnCode() const = 0; @@ -175,9 +175,9 @@ namespace ffmpegkit { * Returns the stack trace of the exception received while executing this session. *

    * The stack trace is only set for sessions that end with SessionStateFailed state. For sessions that has - * SessionStateCompleted state this method returns nil. + * SessionStateCompleted state this method returns an empty string. * - * @return stack trace of the exception received while executing this session, nil if session + * @return stack trace of the exception received while executing this session, an empty string if session * is not started, still running or completed */ virtual std::string getFailStackTrace() const = 0; diff --git a/linux/src/StatisticsCallback.h b/linux/src/StatisticsCallback.h index 903f1b3..a096e77 100644 --- a/linux/src/StatisticsCallback.h +++ b/linux/src/StatisticsCallback.h @@ -23,6 +23,7 @@ #include "Statistics.h" #include #include +#include namespace ffmpegkit { @@ -31,7 +32,7 @@ namespace ffmpegkit { * * @param statistics statistics entry */ - typedef void (*StatisticsCallback)(const std::shared_ptr statistics); + typedef std::function statistics)> StatisticsCallback; } diff --git a/linux/src/StreamInformation.cpp b/linux/src/StreamInformation.cpp index 3f1d8d6..cb9b31a 100644 --- a/linux/src/StreamInformation.cpp +++ b/linux/src/StreamInformation.cpp @@ -22,96 +22,110 @@ ffmpegkit::StreamInformation::StreamInformation(std::shared_ptr streamInformationValue) : _streamInformationValue{streamInformationValue} { } -int64_t ffmpegkit::StreamInformation::getIndex() { - return (*_streamInformationValue)[KeyIndex].GetInt64(); +std::shared_ptr ffmpegkit::StreamInformation::getIndex() { + return getNumberProperty(KeyIndex); } -std::string ffmpegkit::StreamInformation::getType() { - return (*_streamInformationValue)[KeyType].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getType() { + return getStringProperty(KeyType); } -std::string ffmpegkit::StreamInformation::getCodec() { - return (*_streamInformationValue)[KeyCodec].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getCodec() { + return getStringProperty(KeyCodec); } -std::string ffmpegkit::StreamInformation::getCodecLong() { - return (*_streamInformationValue)[KeyCodecLong].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getCodecLong() { + return getStringProperty(KeyCodecLong); } -std::string ffmpegkit::StreamInformation::getFormat() { - return (*_streamInformationValue)[KeyFormat].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getFormat() { + return getStringProperty(KeyFormat); } -int64_t ffmpegkit::StreamInformation::getWidth() { - return (*_streamInformationValue)[KeyWidth].GetInt64(); +std::shared_ptr ffmpegkit::StreamInformation::getWidth() { + return getNumberProperty(KeyWidth); } -int64_t ffmpegkit::StreamInformation::getHeight() { - return (*_streamInformationValue)[KeyHeight].GetInt64(); +std::shared_ptr ffmpegkit::StreamInformation::getHeight() { + return getNumberProperty(KeyHeight); } -std::string ffmpegkit::StreamInformation::getBitrate() { - return (*_streamInformationValue)[KeyBitRate].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getBitrate() { + return getStringProperty(KeyBitRate); } -std::string ffmpegkit::StreamInformation::getSampleRate() { - return (*_streamInformationValue)[KeySampleRate].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getSampleRate() { + return getStringProperty(KeySampleRate); } -std::string ffmpegkit::StreamInformation::getSampleFormat() { - return (*_streamInformationValue)[KeySampleFormat].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getSampleFormat() { + return getStringProperty(KeySampleFormat); } -std::string ffmpegkit::StreamInformation::getChannelLayout() { - return (*_streamInformationValue)[KeyChannelLayout].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getChannelLayout() { + return getStringProperty(KeyChannelLayout); } -std::string ffmpegkit::StreamInformation::getSampleAspectRatio() { - return (*_streamInformationValue)[KeySampleAspectRatio].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getSampleAspectRatio() { + return getStringProperty(KeySampleAspectRatio); } -std::string ffmpegkit::StreamInformation::getDisplayAspectRatio() { - return (*_streamInformationValue)[KeyDisplayAspectRatio].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getDisplayAspectRatio() { + return getStringProperty(KeyDisplayAspectRatio); } -std::string ffmpegkit::StreamInformation::getAverageFrameRate() { - return (*_streamInformationValue)[KeyAverageFrameRate].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getAverageFrameRate() { + return getStringProperty(KeyAverageFrameRate); } -std::string ffmpegkit::StreamInformation::getRealFrameRate() { - return (*_streamInformationValue)[KeyRealFrameRate].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getRealFrameRate() { + return getStringProperty(KeyRealFrameRate); } -std::string ffmpegkit::StreamInformation::getTimeBase() { - return (*_streamInformationValue)[KeyTimeBase].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getTimeBase() { + return getStringProperty(KeyTimeBase); } -std::string ffmpegkit::StreamInformation::getCodecTimeBase() { - return (*_streamInformationValue)[KeyCodecTimeBase].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getCodecTimeBase() { + return getStringProperty(KeyCodecTimeBase); } std::shared_ptr ffmpegkit::StreamInformation::getTags() { - auto tags = std::make_shared(); - *tags = (*_streamInformationValue)[KeyTags]; - return tags; + return getProperties(KeyTags); } -std::string ffmpegkit::StreamInformation::getStringProperty(const char* key) { - return (*_streamInformationValue)[key].GetString(); +std::shared_ptr ffmpegkit::StreamInformation::getStringProperty(const char* key) { + if (_streamInformationValue->HasMember(key)) { + return std::make_shared((*_streamInformationValue)[key].GetString()); + } else { + return nullptr; + } } -int64_t ffmpegkit::StreamInformation::getNumberProperty(const char* key) { - return (*_streamInformationValue)[key].GetInt64(); +std::shared_ptr ffmpegkit::StreamInformation::getNumberProperty(const char* key) { + if (_streamInformationValue->HasMember(key)) { + return std::make_shared((*_streamInformationValue)[key].GetInt64()); + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::StreamInformation::getProperties(const char* key) { - auto value = std::make_shared(); - *value = (*_streamInformationValue)[key]; - return value; + if (_streamInformationValue->HasMember(key)) { + auto value = std::make_shared(); + *value = (*_streamInformationValue)[key]; + return value; + } else { + return nullptr; + } } std::shared_ptr ffmpegkit::StreamInformation::getAllProperties() { - auto all = std::make_shared(); - *all = (*_streamInformationValue); - return all; + if (_streamInformationValue != nullptr) { + auto all = std::make_shared(); + *all = (*_streamInformationValue); + return all; + } else { + return nullptr; + } } diff --git a/linux/src/StreamInformation.h b/linux/src/StreamInformation.h index d087495..d1ec105 100644 --- a/linux/src/StreamInformation.h +++ b/linux/src/StreamInformation.h @@ -20,6 +20,8 @@ #ifndef FFMPEG_KIT_STREAM_INFORMATION_H #define FFMPEG_KIT_STREAM_INFORMATION_H +// OVERRIDING THE MACRO TO PREVENT APPLICATION TERMINATION +#define RAPIDJSON_ASSERT(x) #include "rapidjson/document.h" #include #include @@ -57,152 +59,152 @@ namespace ffmpegkit { * * @return stream index, starting from zero */ - int64_t getIndex(); + std::shared_ptr getIndex(); /** * Returns stream type. * * @return stream type; audio or video */ - std::string getType(); + std::shared_ptr getType(); /** * Returns stream codec. * * @return stream codec */ - std::string getCodec(); + std::shared_ptr getCodec(); /** * Returns stream codec in long format. * * @return stream codec with additional profile and mode information */ - std::string getCodecLong(); + std::shared_ptr getCodecLong(); /** * Returns stream format. * * @return stream format */ - std::string getFormat(); + std::shared_ptr getFormat(); /** * Returns width. * * @return width in pixels */ - int64_t getWidth(); + std::shared_ptr getWidth(); /** * Returns height. * * @return height in pixels */ - int64_t getHeight(); + std::shared_ptr getHeight(); /** * Returns bitrate. * * @return bitrate in kb/s */ - std::string getBitrate(); + std::shared_ptr getBitrate(); /** * Returns sample rate. * * @return sample rate in hz */ - std::string getSampleRate(); + std::shared_ptr getSampleRate(); /** * Returns sample format. * * @return sample format */ - std::string getSampleFormat(); + std::shared_ptr getSampleFormat(); /** * Returns channel layout. * * @return channel layout */ - std::string getChannelLayout(); + std::shared_ptr getChannelLayout(); /** * Returns sample aspect ratio. * * @return sample aspect ratio */ - std::string getSampleAspectRatio(); + std::shared_ptr getSampleAspectRatio(); /** * Returns display aspect ratio. * * @return display aspect ratio */ - std::string getDisplayAspectRatio(); + std::shared_ptr getDisplayAspectRatio(); /** * Returns average frame rate. * * @return average frame rate in fps */ - std::string getAverageFrameRate(); + std::shared_ptr getAverageFrameRate(); /** * Returns real frame rate. * * @return real frame rate in tbr */ - std::string getRealFrameRate(); + std::shared_ptr getRealFrameRate(); /** * Returns time base. * * @return time base in tbn */ - std::string getTimeBase(); + std::shared_ptr getTimeBase(); /** * Returns codec time base. * * @return codec time base in tbc */ - std::string getCodecTimeBase(); + std::shared_ptr getCodecTimeBase(); /** * Returns all tags. * - * @return tags dictionary + * @return tags Value */ std::shared_ptr getTags(); /** * Returns the stream property associated with the key. * - * @return stream property as string or nil if the key is not found + * @return stream property as string or nullptr if the key is not found */ - std::string getStringProperty(const char* key); + std::shared_ptr getStringProperty(const char* key); /** * Returns the stream property associated with the key. * - * @return stream property as number or nil if the key is not found + * @return stream property as number or nullptr if the key is not found */ - int64_t getNumberProperty(const char* key); + std::shared_ptr getNumberProperty(const char* key); /** * Returns the stream properties associated with the key. * - * @return stream properties in a dictionary or nil if the key is not found + * @return stream properties in a Value or nullptr if the key is not found */ std::shared_ptr getProperties(const char* key); /** * Returns all stream properties defined. * - * @return all stream properties in a dictionary or nil if no properties are defined + * @return all stream properties in a Value or nullptr if no properties are defined */ std::shared_ptr getAllProperties(); diff --git a/scripts/function-linux.sh b/scripts/function-linux.sh index 901d0b4..af03e49 100755 --- a/scripts/function-linux.sh +++ b/scripts/function-linux.sh @@ -34,7 +34,6 @@ libraries are created under the prebuilt folder.\n" echo -e "Libraries:" echo -e " --full\t\t\tenables all external libraries" echo -e " --enable-linux-alsa\t\tbuild with built-in alsa support [no]" - echo -e " --enable-linux-chromaprint\tbuild with built-in chromaprint support [no]" echo -e " --enable-linux-fontconfig\tbuild with built-in fontconfig support [no]" echo -e " --enable-linux-freetype\tbuild with built-in freetype support [no]" echo -e " --enable-linux-fribidi\tbuild with built-in fribidi support [no]" @@ -62,6 +61,7 @@ libraries are created under the prebuilt folder.\n" echo -e " --enable-linux-v4l2\t\tbuild with built-in v4l2 support [no]" echo -e " --enable-linux-vo-amrwbenc\tbuild with built-in vo-amrwbenc support [no]" echo -e " --enable-linux-zlib\t\tbuild with built-in zlib support [no]" + echo -e " --enable-chromaprint\t\tbuild with chromaprint support [no]" echo -e " --enable-dav1d\t\tbuild with dav1d [no]" echo -e " --enable-kvazaar\t\tbuild with kvazaar [no]" echo -e " --enable-libaom\t\tbuild with libaom [no]" @@ -143,8 +143,8 @@ create_linux_bundle() { cp -r -P ${FFMPEG_KIT_TMPDIR}/source/rapidjson/include/rapidjson "${BASEDIR}/prebuilt/$(get_bundle_directory)/ffmpeg-kit/include" 2>>"${BASEDIR}"/build.log # COPY LIBS - cp -P "${LIB_INSTALL_BASE}"/ffmpeg-kit/lib/* "${BASEDIR}/prebuilt/$(get_bundle_directory)/ffmpeg-kit/lib" 2>>"${BASEDIR}"/build.log - cp -P "${LIB_INSTALL_BASE}"/ffmpeg/lib/* "${BASEDIR}/prebuilt/$(get_bundle_directory)/ffmpeg-kit/lib" 2>>"${BASEDIR}"/build.log + cp -P "${LIB_INSTALL_BASE}"/ffmpeg-kit/lib/lib* "${BASEDIR}/prebuilt/$(get_bundle_directory)/ffmpeg-kit/lib" 2>>"${BASEDIR}"/build.log + cp -P "${LIB_INSTALL_BASE}"/ffmpeg/lib/lib* "${BASEDIR}/prebuilt/$(get_bundle_directory)/ffmpeg-kit/lib" 2>>"${BASEDIR}"/build.log install_pkg_config_file "libavformat.pc" install_pkg_config_file "libswresample.pc" @@ -272,7 +272,7 @@ get_cxxflags() { fi local BUILD_DATE="-DFFMPEG_KIT_BUILD_DATE=$(date +%Y%m%d 2>>"${BASEDIR}"/build.log)" - local COMMON_FLAGS="${OPTIMIZATION_FLAGS} ${BUILD_DATE}" + local COMMON_FLAGS="${OPTIMIZATION_FLAGS} ${BUILD_DATE} $(get_arch_specific_cflags)" case $1 in ffmpeg) @@ -375,6 +375,24 @@ prefix = '${LIB_INSTALL_PREFIX}' EOF } +create_chromaprint_package_config() { + local CHROMAPRINT_VERSION="$1" + + cat >"${INSTALL_PKG_CONFIG_DIR}/libchromaprint.pc" <>"${BASEDIR}"/build.log 2>&1 diff --git a/scripts/function.sh b/scripts/function.sh index 7969f7f..eb77700 100755 --- a/scripts/function.sh +++ b/scripts/function.sh @@ -205,12 +205,11 @@ get_library_name() { 84) echo "linux-opus" ;; 85) echo "linux-snappy" ;; 86) echo "linux-soxr" ;; - 87) echo "linux-chromaprint" ;; - 88) echo "linux-twolame" ;; - 89) echo "linux-sdl" ;; - 90) echo "linux-tesseract" ;; - 91) echo "linux-vaapi" ;; - 92) echo "linux-vo-amrwbenc" ;; + 87) echo "linux-twolame" ;; + 88) echo "linux-sdl" ;; + 89) echo "linux-tesseract" ;; + 90) echo "linux-vaapi" ;; + 91) echo "linux-vo-amrwbenc" ;; esac } @@ -303,12 +302,11 @@ from_library_name() { linux-opus) echo 84 ;; linux-snappy) echo 85 ;; linux-soxr) echo 86 ;; - linux-chromaprint) echo 87 ;; - linux-twolame) echo 88 ;; - linux-sdl) echo 89 ;; - linux-tesseract) echo 90 ;; - linux-vaapi) echo 91 ;; - linux-vo-amrwbenc) echo 92 ;; + linux-twolame) echo 87 ;; + linux-sdl) echo 88 ;; + linux-tesseract) echo 89 ;; + linux-vaapi) echo 90 ;; + linux-vo-amrwbenc) echo 91 ;; esac } @@ -319,12 +317,12 @@ is_library_supported_on_platform() { local library_index=$(from_library_name "$1") case ${library_index} in # ALL - 16 | 17 | 18 | 23 | 27 | 32 | 34 | 35 | 36 | 50) + 16 | 17 | 18 | 23 | 27 | 28 | 32 | 34 | 35 | 36 | 50) echo "0" ;; # ALL EXCEPT LINUX - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 33 | 37 | 38 | 39 | 40 | 42 | 43 | 44 | 45 | 46 | 47 | 48) + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 29 | 30 | 31 | 33 | 37 | 38 | 39 | 40 | 42 | 43 | 44 | 45 | 46 | 47 | 48) if [[ ${FFMPEG_KIT_BUILD_TYPE} == "linux" ]]; then echo "1" else @@ -1256,9 +1254,6 @@ set_library() { ENABLED_LIBRARIES[LIBRARY_TIFF]=$2 ENABLED_LIBRARIES[LIBRARY_JPEG]=$2 ;; - linux-chromaprint) - ENABLED_LIBRARIES[LIBRARY_LINUX_CHROMAPRINT]=$2 - ;; linux-fontconfig) ENABLED_LIBRARIES[LIBRARY_LINUX_FONTCONFIG]=$2 set_library "linux-libiconv" $2 @@ -1604,7 +1599,7 @@ print_enabled_libraries() { let enabled=0 # SUPPLEMENTARY LIBRARIES NOT PRINTED - for library in {50..57} {59..92} {0..36}; do + for library in {50..57} {59..91} {0..36}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then if [[ ${enabled} -ge 1 ]]; then echo -n ", " diff --git a/scripts/linux/chromaprint.sh b/scripts/linux/chromaprint.sh new file mode 100755 index 0000000..3c3f6d2 --- /dev/null +++ b/scripts/linux/chromaprint.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +mkdir -p "${BUILD_DIR}" || return 1 +cd "${BUILD_DIR}" || return 1 + +cmake -Wno-dev \ + -DCMAKE_VERBOSE_MAKEFILE=0 \ + -DCMAKE_C_FLAGS="${CFLAGS}" \ + -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ + -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS}" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SYSTEM_NAME=Linux \ + -DCMAKE_INSTALL_PREFIX="${LIB_INSTALL_PREFIX}" \ + -DCMAKE_CXX_COMPILER="$CXX" \ + -DCMAKE_C_COMPILER="$CC" \ + -DCMAKE_LINKER="$LD" \ + -DCMAKE_AR="$AR" \ + -DCMAKE_AS="$AS" \ + -DCMAKE_SYSTEM_PROCESSOR=$(get_cmake_system_processor) \ + -DCMAKE_POSITION_INDEPENDENT_CODE=1 \ + -DFFT_LIB=kissfft \ + -DKISSFFT_SOURCE_DIR="${BASEDIR}"/src/"${LIB_NAME}"/src/3rdparty/kissfft \ + -DBUILD_SHARED_LIBS=0 \ + -DBUILD_TESTS=0 "${BASEDIR}"/src/"${LIB_NAME}" || return 1 + +make -j$(get_cpu_count) || return 1 + +make install || return 1 + +# CREATE PACKAGE CONFIG MANUALLY +create_chromaprint_package_config "1.5.1" || return 1 diff --git a/scripts/linux/ffmpeg-kit.sh b/scripts/linux/ffmpeg-kit.sh index b419f7c..f254a4d 100755 --- a/scripts/linux/ffmpeg-kit.sh +++ b/scripts/linux/ffmpeg-kit.sh @@ -20,10 +20,10 @@ set_toolchain_paths "${LIB_NAME}" # SET BUILD FLAGS HOST=$(get_host) +export PKG_CONFIG_PATH="${INSTALL_PKG_CONFIG_DIR}" export CFLAGS="$(get_cflags ${LIB_NAME}) -I${LIB_INSTALL_BASE}/ffmpeg/include -I${FFMPEG_KIT_TMPDIR}/source/rapidjson/include" export CXXFLAGS="$(get_cxxflags ${LIB_NAME}) -I${LIB_INSTALL_BASE}/ffmpeg/include -I${FFMPEG_KIT_TMPDIR}/source/rapidjson/include" export LDFLAGS="$(get_ldflags ${LIB_NAME}) -L${LIB_INSTALL_BASE}/ffmpeg/lib -lavdevice" -export PKG_CONFIG_LIBDIR="${INSTALL_PKG_CONFIG_DIR}" cd "${BASEDIR}"/linux 1>>"${BASEDIR}"/build.log 2>&1 || return 1 diff --git a/scripts/linux/ffmpeg.sh b/scripts/linux/ffmpeg.sh index b708339..7982db8 100755 --- a/scripts/linux/ffmpeg.sh +++ b/scripts/linux/ffmpeg.sh @@ -48,7 +48,7 @@ CONFIGURE_POSTFIX="" HIGH_PRIORITY_INCLUDES="" # SET CONFIGURE OPTIONS -for library in {0..92}; do +for library in {0..91}; do if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then ENABLED_LIBRARY=$(get_library_name ${library}) @@ -58,9 +58,6 @@ for library in {0..92}; do linux-alsa) CONFIGURE_POSTFIX+=" --enable-alsa" ;; - linux-chromaprint) - CONFIGURE_POSTFIX+=" --enable-chromaprint" - ;; linux-fontconfig) CONFIGURE_POSTFIX+=" --enable-libfontconfig" ;; @@ -154,6 +151,11 @@ for library in {0..92}; do linux-zlib) CONFIGURE_POSTFIX+=" --enable-zlib" ;; + chromaprint) + CFLAGS+=" $(pkg-config --cflags libchromaprint 2>>"${BASEDIR}"/build.log)" + LDFLAGS+=" $(pkg-config --libs --static libchromaprint 2>>"${BASEDIR}"/build.log)" + CONFIGURE_POSTFIX+=" --enable-chromaprint" + ;; dav1d) CFLAGS+=" $(pkg-config --cflags dav1d 2>>"${BASEDIR}"/build.log)" LDFLAGS+=" $(pkg-config --libs --static dav1d 2>>"${BASEDIR}"/build.log)" @@ -206,8 +208,6 @@ for library in {0..92}; do # NOTE THAT IDS MUST BE +1 OF THE INDEX VALUE if [[ ${library} -eq ${LIBRARY_LINUX_ALSA} ]]; then CONFIGURE_POSTFIX+=" --disable-alsa" - elif [[ ${library} -eq ${LIBRARY_LINUX_CHROMAPRINT} ]]; then - CONFIGURE_POSTFIX+=" --disable-chromaprint" elif [[ ${library} -eq ${LIBRARY_LINUX_FONTCONFIG} ]]; then CONFIGURE_POSTFIX+=" --disable-libfontconfig" elif [[ ${library} -eq ${LIBRARY_LINUX_FREETYPE} ]]; then @@ -264,6 +264,8 @@ for library in {0..92}; do CONFIGURE_POSTFIX+=" --disable-libxvid" elif [[ ${library} -eq ${LIBRARY_SYSTEM_ZLIB} ]]; then CONFIGURE_POSTFIX+=" --disable-zlib" + elif [[ ${library} -eq ${LIBRARY_CHROMAPRINT} ]]; then + CONFIGURE_POSTFIX+=" --disable-chromaprint" elif [[ ${library} -eq ${LIBRARY_DAV1D} ]]; then CONFIGURE_POSTFIX+=" --disable-libdav1d" elif [[ ${library} -eq ${LIBRARY_KVAZAAR} ]]; then diff --git a/scripts/variable.sh b/scripts/variable.sh index 9709232..be8c081 100755 --- a/scripts/variable.sh +++ b/scripts/variable.sh @@ -10,7 +10,7 @@ ENABLED_ARCHITECTURES=(0 0 0 0 0 0 0 0 0 0 0 0 0) ENABLED_ARCHITECTURE_VARIANTS=(0 0 0 0 0 0 0 0) # ARRAY OF ENABLED LIBRARIES -ENABLED_LIBRARIES=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) +ENABLED_LIBRARIES=(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) # ARRAY OF LIBRARIES THAT WILL BE RE-CONFIGURED RECONF_LIBRARIES=() @@ -137,9 +137,8 @@ LIBRARY_LINUX_V4L2=83 LIBRARY_LINUX_OPUS=84 LIBRARY_LINUX_SNAPPY=85 LIBRARY_LINUX_SOXR=86 -LIBRARY_LINUX_CHROMAPRINT=87 -LIBRARY_LINUX_TWOLAME=88 -LIBRARY_LINUX_SDL=89 -LIBRARY_LINUX_TESSERACT=90 -LIBRARY_LINUX_VAAPI=91 -LIBRARY_LINUX_VO_AMRWBENC=92 +LIBRARY_LINUX_TWOLAME=87 +LIBRARY_LINUX_SDL=88 +LIBRARY_LINUX_TESSERACT=89 +LIBRARY_LINUX_VAAPI=90 +LIBRARY_LINUX_VO_AMRWBENC=91 diff --git a/tools/clean.sh b/tools/clean.sh index e7ad510..2bef63c 100755 --- a/tools/clean.sh +++ b/tools/clean.sh @@ -10,3 +10,9 @@ rm -rf ../android/obj rm -rf ../android/libs rm -rf ../src/* + +rm -rf ../apple/src/.deps +rm -rf ../apple/src/.libs + +rm -rf ../linux/src/.deps +rm -rf ../linux/src/.libs diff --git a/tools/linux_doc.sh b/tools/linux_doc.sh new file mode 100755 index 0000000..ab2e50a --- /dev/null +++ b/tools/linux_doc.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# +# Generates docs for C++ library +# + +CURRENT_DIR="`pwd`" + +cd "${CURRENT_DIR}"/../linux + +doxygen