mirror of
https://github.com/arthenica/ffmpeg-kit.git
synced 2026-05-07 20:22:27 +00:00
Merge branch 'main' into development-react-native
This commit is contained in:
@@ -27,7 +27,7 @@ on:
|
||||
jobs:
|
||||
build-main-on-linux:
|
||||
name: android main on linux
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux', 'r24-linux', 'r25b-linux' ]
|
||||
@@ -36,11 +36,11 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: set up android ndk
|
||||
run: |
|
||||
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
|
||||
build-lts-on-linux:
|
||||
name: android lts on linux
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux' ]
|
||||
@@ -65,11 +65,11 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: set up android ndk
|
||||
run: |
|
||||
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
|
||||
@@ -94,11 +94,11 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: set up android ndk
|
||||
run: |
|
||||
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
|
||||
@@ -123,11 +123,11 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: set up android ndk
|
||||
run: |
|
||||
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
|
||||
build-main-without-ffmpeg-kit-protocols-on-linux:
|
||||
name: build without ffmpeg-kit protocols
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
ndk-version: [ 'r22b-linux-x86_64' ]
|
||||
@@ -152,11 +152,11 @@ jobs:
|
||||
shell: bash
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: set up android ndk
|
||||
run: |
|
||||
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: prerequisites
|
||||
run: sudo apt-get install clang llvm lld libclang-11-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
|
||||
run: sudo apt-get install clang llvm lld libclang-14-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
|
||||
- name: run the build script
|
||||
run: ./linux.sh -d
|
||||
- name: print build logs
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: prerequisites
|
||||
run: sudo apt-get install clang llvm lld libclang-11-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
|
||||
run: sudo apt-get install clang llvm lld libclang-14-dev libstdc++6 nasm autoconf automake libtool pkg-config curl git doxygen rapidjson-dev
|
||||
- name: run the build script
|
||||
run: ./linux.sh -d --lts
|
||||
- name: print build logs
|
||||
|
||||
@@ -7,7 +7,7 @@ on:
|
||||
jobs:
|
||||
build-android-main-on-linux:
|
||||
name: android main on linux
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux', 'r24-linux', 'r25b-linux' ]
|
||||
@@ -19,13 +19,13 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: prerequisites
|
||||
run: sudo apt-get install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget autopoint meson ninja-build ragel
|
||||
run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-6
|
||||
- name: upgrade meson
|
||||
run: pip install meson --upgrade
|
||||
- name: set up android ndk
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
|
||||
build-android-lts-on-linux:
|
||||
name: android lts on linux
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
matrix:
|
||||
ndk-version: [ 'r22b-linux-x86_64', 'r23b-linux' ]
|
||||
@@ -55,13 +55,13 @@ jobs:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: set up adopt jdk 11
|
||||
- name: set up adopt jdk 17
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '11'
|
||||
java-version: '17'
|
||||
- name: prerequisites
|
||||
run: sudo apt-get install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget autopoint meson ninja-build ragel
|
||||
run: sudo apt-get install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja-build ragel groff gtk-doc-tools libtasn1-6
|
||||
- name: upgrade meson
|
||||
run: pip install meson --upgrade
|
||||
- name: set up android ndk
|
||||
|
||||
@@ -20,7 +20,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
@@ -150,7 +150,7 @@ jobs:
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
- name: prerequisites
|
||||
run: brew install autoconf automake libtool pkg-config curl git cmake gcc gperf texinfo yasm nasm bison autogen wget meson ninja ragel --overwrite
|
||||
run: brew install autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1 --overwrite
|
||||
- name: set up xcode
|
||||
run: echo "export DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer" > ~/.xcode.for.ffmpeg.kit.sh
|
||||
- name: run the build script
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# FFmpegKit     
|
||||
# FFmpegKit     
|
||||
|
||||
<img src="https://github.com/arthenica/ffmpeg-kit/blob/main/docs/assets/ffmpeg-kit-icon-v9.png" width="240">
|
||||
|
||||
@@ -124,21 +124,21 @@ the same `FFmpeg` release branch.
|
||||
`dev` part in the version string indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch and
|
||||
the exact version number of `FFmpeg` is obtained using the `git describe --tags` command.
|
||||
|
||||
| Platforms | FFmpegKit Version | FFmpeg Version | Release Date |
|
||||
|:----------------:|:---------------------------------------------------------------------------------:|:--------------:|:------------:|
|
||||
| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 |
|
||||
| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 |
|
||||
| Android | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 |
|
||||
| Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 |
|
||||
| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 |
|
||||
| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 |
|
||||
| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 |
|
||||
| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 |
|
||||
| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 |
|
||||
| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 |
|
||||
| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 |
|
||||
| Android<br>Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 |
|
||||
| Android<br>Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 |
|
||||
| Platforms | FFmpegKit Version | FFmpeg Version | Release Date |
|
||||
|:----------------:|:-----------------------------------------------------------------------------------:|:--------------:|:------------:|
|
||||
| Android<br>Apple | [6.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/v6.0) | 6.0 | Aug 21, 2023 |
|
||||
| React Native | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v5.1.0) | 5.1.2 | Oct 02, 2022 |
|
||||
| Flutter | [5.1.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v5.1.0) | 5.1.2 | Oct 02, 2022 |
|
||||
| Android<br>Apple | [5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v5.1) | 5.1.2 | Sep 29, 2022 |
|
||||
| React Native | [4.5.2](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.2) | 4.5-dev-3393 | May 25, 2022 |
|
||||
| Flutter | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 |
|
||||
| React Native | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.1) | 4.5-dev-3393 | Jan 02, 2022 |
|
||||
| Android | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Jan 01, 2022 |
|
||||
| Apple | [4.5.1](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5.1) | 4.5-dev-3393 | Dec 30, 2021 |
|
||||
| Flutter | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/flutter.v4.5.0) | 4.5-dev-2008 | Oct 05, 2021 |
|
||||
| React Native | [4.5.0](https://github.com/arthenica/ffmpeg-kit/releases/tag/react.native.v4.5.0) | 4.5-dev-2008 | Oct 01, 2021 |
|
||||
| Android<br>Apple | [4.5](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 |
|
||||
| Android<br>Apple | [4.4](https://github.com/arthenica/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 |
|
||||
|
||||
### 11. LTS Releases
|
||||
|
||||
|
||||
+3
-3
@@ -22,14 +22,14 @@ external libraries enabled.
|
||||
|
||||
##### 2.1.1 Android Tools
|
||||
- Android SDK Build Tools
|
||||
- Android NDK r22b or later with LLDB and CMake (See [#292](https://github.com/arthenica/ffmpeg-kit/issues/292) if you want to use NDK r23b)
|
||||
- Android NDK r22b or later with LLDB and CMake (See [#292](https://github.com/arthenica/ffmpeg-kit/issues/292) if you want to use NDK r23b or later)
|
||||
|
||||
##### 2.1.2 Packages
|
||||
|
||||
Use your package manager (apt, yum, dnf, brew, etc.) to install the following packages.
|
||||
|
||||
```
|
||||
autoconf automake libtool pkg-config curl cmake gcc gperf texinfo yasm nasm bison autogen git wget autopoint meson ninja
|
||||
autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget autopoint meson ninja ragel groff gtk-doc-tools libtasn1
|
||||
```
|
||||
|
||||
##### 2.1.3 Environment Variables
|
||||
@@ -77,7 +77,7 @@ All libraries created by `android.sh` can be found under the `prebuilt` director
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.arthenica:ffmpeg-kit-full:5.1'
|
||||
implementation 'com.arthenica:ffmpeg-kit-full:6.0'
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ buildscript {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:7.3.0'
|
||||
classpath 'com.android.tools.build:gradle:8.1.0'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ PROJECT_NAME = "FFmpegKit Android API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 5.1
|
||||
PROJECT_NUMBER = 6.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
namespace 'com.arthenica.ffmpegkit'
|
||||
compileSdk 31
|
||||
if (project.android.hasProperty("namespace")) {
|
||||
namespace 'com.arthenica.ffmpegkit'
|
||||
}
|
||||
compileSdk 33
|
||||
ndkVersion "22.1.7171670"
|
||||
|
||||
defaultConfig {
|
||||
minSdk 24
|
||||
targetSdk 31
|
||||
versionCode 240510
|
||||
versionName "5.1"
|
||||
targetSdk 33
|
||||
versionCode 240600
|
||||
versionName "6.0"
|
||||
project.archivesBaseName = "ffmpeg-kit"
|
||||
consumerProguardFiles "consumer-rules.pro"
|
||||
}
|
||||
@@ -38,19 +40,17 @@ android {
|
||||
systemProperty 'enable.ffmpeg.kit.test.mode', 'true'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task javadoc(type: Javadoc) {
|
||||
title = 'FFmpegKit'
|
||||
destinationDir = file("${projectDir}/../../docs/android/javadoc")
|
||||
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
|
||||
source = android.sourceSets.main.java.srcDirs
|
||||
configurations.implementation.setCanBeResolved(true)
|
||||
classpath += configurations.implementation
|
||||
publishing {
|
||||
singleVariant('release') {
|
||||
withJavadocJar()
|
||||
withSourcesJar()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api 'com.arthenica:smart-exception-java:0.2.1'
|
||||
testImplementation "androidx.test.ext:junit:1.1.3"
|
||||
testImplementation 'org.json:json:20220320'
|
||||
testImplementation "androidx.test.ext:junit:1.1.5"
|
||||
testImplementation 'org.json:json:20230618'
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
-keep class com.arthenica.ffmpegkit.FFmpegKitConfig {
|
||||
native <methods>;
|
||||
void log(long, int, byte[]);
|
||||
void statistics(long, int, float, float, long , int, double, double);
|
||||
void statistics(long, int, float, float, long , double, double, double);
|
||||
int safOpen(int);
|
||||
int safClose(int);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ struct CallbackData {
|
||||
float statisticsFps; // statistics fps
|
||||
float statisticsQuality; // statistics quality
|
||||
int64_t statisticsSize; // statistics size
|
||||
int statisticsTime; // statistics time
|
||||
double statisticsTime; // statistics time
|
||||
double statisticsBitrate; // statistics bitrate
|
||||
double statisticsSpeed; // statistics speed
|
||||
|
||||
@@ -312,7 +312,7 @@ void logCallbackDataAdd(int level, AVBPrint *data) {
|
||||
/**
|
||||
* Adds statistics data to the end of callback data list.
|
||||
*/
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, double time, double bitrate, double speed) {
|
||||
|
||||
// CREATE DATA STRUCT FIRST
|
||||
struct CallbackData *newData = (struct CallbackData*)av_malloc(sizeof(struct CallbackData));
|
||||
@@ -491,7 +491,7 @@ void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, v
|
||||
* @param bitrate output bit rate in kbits/s
|
||||
* @param speed processing speed = processed duration / operation duration
|
||||
*/
|
||||
void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, double time, double bitrate, double speed) {
|
||||
statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed);
|
||||
}
|
||||
|
||||
@@ -581,6 +581,30 @@ int saf_close(int fd) {
|
||||
return (*env)->CallStaticIntMethod(env, configClass, safCloseMethod, fd);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by JNI methods to enable redirection.
|
||||
*/
|
||||
static void enableNativeRedirection() {
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 0) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 1;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
int rc = pthread_create(&callbackThread, 0, callbackThreadFunction, 0);
|
||||
if (rc != 0) {
|
||||
LOGE("Failed to create callback thread (rc=%d).\n", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
av_log_set_callback(ffmpegkit_log_callback_function);
|
||||
set_report_callback(ffmpegkit_statistics_callback_function);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when 'ffmpegkit' native library is loaded.
|
||||
*
|
||||
@@ -620,7 +644,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
return JNI_FALSE;
|
||||
}
|
||||
|
||||
statisticsMethod = (*env)->GetStaticMethodID(env, localConfigClass, "statistics", "(JIFFJIDD)V");
|
||||
statisticsMethod = (*env)->GetStaticMethodID(env, localConfigClass, "statistics", "(JIFFJDDD)V");
|
||||
if (statisticsMethod == NULL) {
|
||||
LOGE("OnLoad thread failed to GetStaticMethodID for %s.\n", "statistics");
|
||||
return JNI_FALSE;
|
||||
@@ -665,6 +689,8 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
|
||||
av_set_saf_open(saf_open);
|
||||
av_set_saf_close(saf_close);
|
||||
|
||||
enableNativeRedirection();
|
||||
|
||||
return JNI_VERSION_1_6;
|
||||
}
|
||||
|
||||
@@ -696,24 +722,7 @@ JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_getNativeLog
|
||||
* @param object reference to the class on which this method is invoked
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_enableNativeRedirection(JNIEnv *env, jclass object) {
|
||||
mutexLock();
|
||||
|
||||
if (redirectionEnabled != 0) {
|
||||
mutexUnlock();
|
||||
return;
|
||||
}
|
||||
redirectionEnabled = 1;
|
||||
|
||||
mutexUnlock();
|
||||
|
||||
int rc = pthread_create(&callbackThread, 0, callbackThreadFunction, 0);
|
||||
if (rc != 0) {
|
||||
LOGE("Failed to create callback thread (rc=%d).\n", rc);
|
||||
return;
|
||||
}
|
||||
|
||||
av_log_set_callback(ffmpegkit_log_callback_function);
|
||||
set_report_callback(ffmpegkit_statistics_callback_function);
|
||||
enableNativeRedirection();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "libavutil/ffversion.h"
|
||||
|
||||
/** Library version string */
|
||||
#define FFMPEG_KIT_VERSION "5.1"
|
||||
#define FFMPEG_KIT_VERSION "6.0"
|
||||
|
||||
/** Defines tag used for Android logging. */
|
||||
#define LIB_NAME "ffmpeg-kit"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Various utilities for command line tools
|
||||
* Copyright (c) 2000-2003 Fabrice Bellard
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -25,6 +26,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -129,11 +136,18 @@ void register_exit(void (*cb)(int ret))
|
||||
program_exit = cb;
|
||||
}
|
||||
|
||||
void report_and_exit(int ret)
|
||||
{
|
||||
av_log(NULL, AV_LOG_FATAL, "%s\n", av_err2str(ret));
|
||||
exit_program(AVUNERROR(ret));
|
||||
}
|
||||
|
||||
void exit_program(int ret)
|
||||
{
|
||||
if (program_exit)
|
||||
program_exit(ret);
|
||||
|
||||
// FFmpegKit
|
||||
// exit disabled and replaced with longjmp, exit value stored in longjmp_value
|
||||
// exit(ret);
|
||||
longjmp_value = ret;
|
||||
@@ -696,7 +710,7 @@ static void init_parse_context(OptionParseContext *octx,
|
||||
octx->nb_groups = nb_groups;
|
||||
octx->groups = av_calloc(octx->nb_groups, sizeof(*octx->groups));
|
||||
if (!octx->groups)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
for (i = 0; i < octx->nb_groups; i++)
|
||||
octx->groups[i].group_def = &groups[i];
|
||||
@@ -843,12 +857,7 @@ do { \
|
||||
|
||||
void print_error(const char *filename, int err)
|
||||
{
|
||||
char errbuf[128];
|
||||
const char *errbuf_ptr = errbuf;
|
||||
|
||||
if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
|
||||
errbuf_ptr = strerror(AVUNERROR(err));
|
||||
av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr);
|
||||
av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, av_err2str(err));
|
||||
}
|
||||
|
||||
int read_yesno(void)
|
||||
@@ -971,7 +980,7 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
|
||||
break;
|
||||
}
|
||||
|
||||
while ((t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((t = av_dict_iterate(opts, t))) {
|
||||
const AVClass *priv_class;
|
||||
char *p = strchr(t->key, ':');
|
||||
|
||||
@@ -1009,11 +1018,8 @@ AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
|
||||
if (!s->nb_streams)
|
||||
return NULL;
|
||||
opts = av_calloc(s->nb_streams, sizeof(*opts));
|
||||
if (!opts) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Could not alloc memory for stream options.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
if (!opts)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
for (i = 0; i < s->nb_streams; i++)
|
||||
opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codecpar->codec_id,
|
||||
s, s->streams[i], NULL);
|
||||
@@ -1028,10 +1034,8 @@ void *grow_array(void *array, int elem_size, int *size, int new_size)
|
||||
}
|
||||
if (*size < new_size) {
|
||||
uint8_t *tmp = av_realloc_array(array, new_size, elem_size);
|
||||
if (!tmp) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
if (!tmp)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
|
||||
*size = new_size;
|
||||
return tmp;
|
||||
@@ -1044,10 +1048,8 @@ void *allocate_array_elem(void *ptr, size_t elem_size, int *nb_elems)
|
||||
void *new_elem;
|
||||
|
||||
if (!(new_elem = av_mallocz(elem_size)) ||
|
||||
av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return new_elem;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Various utilities for command line tools
|
||||
* copyright (c) 2003 Fabrice Bellard
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* copyright (c) 2018-2022 Taner Sener
|
||||
* copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -25,6 +26,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -95,6 +102,17 @@ extern __thread int find_stream_info;
|
||||
*/
|
||||
void register_exit(void (*cb)(int ret));
|
||||
|
||||
/**
|
||||
* Reports an error corresponding to the provided
|
||||
* AVERROR code and calls exit_program() with the
|
||||
* corresponding POSIX error code.
|
||||
* @note ret must be an AVERROR-value of a POSIX error code
|
||||
* (i.e. AVERROR(EFOO) and not AVERROR_FOO).
|
||||
* library functions can return both, so call this only
|
||||
* with AVERROR(EFOO) of your own.
|
||||
*/
|
||||
void report_and_exit(int ret) av_noreturn;
|
||||
|
||||
/**
|
||||
* Wraps exit with a program-specific cleanup routine.
|
||||
*/
|
||||
@@ -232,11 +250,6 @@ void show_help_children(const AVClass *clazz, int flags);
|
||||
void show_help_default_ffmpeg(const char *opt, const char *arg);
|
||||
void show_help_default_ffprobe(const char *opt, const char *arg);
|
||||
|
||||
/**
|
||||
* Generic -h handler common to all fftools.
|
||||
*/
|
||||
int show_help(void *optctx, const char *opt, const char *arg);
|
||||
|
||||
/**
|
||||
* Parse the command line arguments.
|
||||
*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -22,6 +23,16 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - WARN_MULTIPLE_OPT_USAGE, MATCH_PER_STREAM_OPT, MATCH_PER_TYPE_OPT, SPECIFIER_OPT_FMT declarations migrated to
|
||||
* ffmpeg_mux.h
|
||||
* - "class" member field renamed as clazz
|
||||
* - time field in set_report_callback updated as double
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -59,11 +70,13 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "fftools_cmdutils.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/avio.h"
|
||||
@@ -85,6 +98,12 @@
|
||||
|
||||
#include "libswresample/swresample.h"
|
||||
|
||||
// deprecated features
|
||||
#define FFMPEG_OPT_PSNR 1
|
||||
#define FFMPEG_OPT_MAP_CHANNEL 1
|
||||
#define FFMPEG_OPT_MAP_SYNC 1
|
||||
#define FFMPEG_ROTATION_METADATA 1
|
||||
|
||||
enum VideoSyncMethod {
|
||||
VSYNC_AUTO = -1,
|
||||
VSYNC_PASSTHROUGH,
|
||||
@@ -113,15 +132,15 @@ typedef struct StreamMap {
|
||||
int disabled; /* 1 is this mapping is disabled by a negative map */
|
||||
int file_index;
|
||||
int stream_index;
|
||||
int sync_file_index;
|
||||
int sync_stream_index;
|
||||
char *linklabel; /* name of an output link, for mapping lavfi outputs */
|
||||
} StreamMap;
|
||||
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
typedef struct {
|
||||
int file_idx, stream_idx, channel_idx; // input
|
||||
int ofile_idx, ostream_idx; // output
|
||||
} AudioChannelMap;
|
||||
#endif
|
||||
|
||||
typedef struct OptionsContext {
|
||||
OptionGroup *g;
|
||||
@@ -157,6 +176,7 @@ typedef struct OptionsContext {
|
||||
int accurate_seek;
|
||||
int thread_queue_size;
|
||||
int input_sync_ref;
|
||||
int find_stream_info;
|
||||
|
||||
SpecifierOpt *ts_scale;
|
||||
int nb_ts_scale;
|
||||
@@ -174,11 +194,10 @@ typedef struct OptionsContext {
|
||||
/* output options */
|
||||
StreamMap *stream_maps;
|
||||
int nb_stream_maps;
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
|
||||
int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
|
||||
int metadata_global_manual;
|
||||
int metadata_streams_manual;
|
||||
int metadata_chapters_manual;
|
||||
#endif
|
||||
const char **attachments;
|
||||
int nb_attachments;
|
||||
|
||||
@@ -186,9 +205,10 @@ typedef struct OptionsContext {
|
||||
|
||||
int64_t recording_time;
|
||||
int64_t stop_time;
|
||||
uint64_t limit_filesize;
|
||||
int64_t limit_filesize;
|
||||
float mux_preload;
|
||||
float mux_max_delay;
|
||||
float shortest_buf_duration;
|
||||
int shortest;
|
||||
int bitexact;
|
||||
|
||||
@@ -221,6 +241,12 @@ typedef struct OptionsContext {
|
||||
int nb_force_fps;
|
||||
SpecifierOpt *frame_aspect_ratios;
|
||||
int nb_frame_aspect_ratios;
|
||||
SpecifierOpt *display_rotations;
|
||||
int nb_display_rotations;
|
||||
SpecifierOpt *display_hflips;
|
||||
int nb_display_hflips;
|
||||
SpecifierOpt *display_vflips;
|
||||
int nb_display_vflips;
|
||||
SpecifierOpt *rc_overrides;
|
||||
int nb_rc_overrides;
|
||||
SpecifierOpt *intra_matrices;
|
||||
@@ -247,6 +273,8 @@ typedef struct OptionsContext {
|
||||
int nb_reinit_filters;
|
||||
SpecifierOpt *fix_sub_duration;
|
||||
int nb_fix_sub_duration;
|
||||
SpecifierOpt *fix_sub_duration_heartbeat;
|
||||
int nb_fix_sub_duration_heartbeat;
|
||||
SpecifierOpt *canvas_sizes;
|
||||
int nb_canvas_sizes;
|
||||
SpecifierOpt *pass;
|
||||
@@ -275,6 +303,18 @@ typedef struct OptionsContext {
|
||||
int nb_autoscale;
|
||||
SpecifierOpt *bits_per_raw_sample;
|
||||
int nb_bits_per_raw_sample;
|
||||
SpecifierOpt *enc_stats_pre;
|
||||
int nb_enc_stats_pre;
|
||||
SpecifierOpt *enc_stats_post;
|
||||
int nb_enc_stats_post;
|
||||
SpecifierOpt *mux_stats;
|
||||
int nb_mux_stats;
|
||||
SpecifierOpt *enc_stats_pre_fmt;
|
||||
int nb_enc_stats_pre_fmt;
|
||||
SpecifierOpt *enc_stats_post_fmt;
|
||||
int nb_enc_stats_post_fmt;
|
||||
SpecifierOpt *mux_stats_fmt;
|
||||
int nb_mux_stats_fmt;
|
||||
} OptionsContext;
|
||||
|
||||
typedef struct InputFilter {
|
||||
@@ -350,12 +390,22 @@ typedef struct InputStream {
|
||||
#define DECODING_FOR_OST 1
|
||||
#define DECODING_FOR_FILTER 2
|
||||
int processing_needed; /* non zero if the packets must be processed */
|
||||
// should attach FrameData as opaque_ref after decoding
|
||||
int want_frame_data;
|
||||
|
||||
/**
|
||||
* Codec parameters - to be used by the decoding/streamcopy code.
|
||||
* st->codecpar should not be accessed, because it may be modified
|
||||
* concurrently by the demuxing thread.
|
||||
*/
|
||||
AVCodecParameters *par;
|
||||
AVCodecContext *dec_ctx;
|
||||
const AVCodec *dec;
|
||||
AVFrame *decoded_frame;
|
||||
AVPacket *pkt;
|
||||
|
||||
AVRational framerate_guessed;
|
||||
|
||||
int64_t prev_pkt_pts;
|
||||
int64_t start; /* time when read started */
|
||||
/* predicted dts of the next packet read for this stream or (when there are
|
||||
@@ -368,6 +418,12 @@ typedef struct InputStream {
|
||||
int64_t pts; ///< current pts of the decoded frame (in AV_TIME_BASE units)
|
||||
int wrap_correction_done;
|
||||
|
||||
// the value of AVCodecParserContext.repeat_pict from the AVStream parser
|
||||
// for the last packet returned from ifile_get_packet()
|
||||
// -1 if unknown
|
||||
// FIXME: this is a hack, the avstream parser should not be used
|
||||
int last_pkt_repeat_pict;
|
||||
|
||||
int64_t filter_in_rescale_delta_last;
|
||||
|
||||
int64_t min_pts; /* pts with the smallest value in a current stream */
|
||||
@@ -417,12 +473,8 @@ typedef struct InputStream {
|
||||
char *hwaccel_device;
|
||||
enum AVPixelFormat hwaccel_output_format;
|
||||
|
||||
/* hwaccel context */
|
||||
void *hwaccel_ctx;
|
||||
void (*hwaccel_uninit)(AVCodecContext *s);
|
||||
int (*hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame);
|
||||
enum AVPixelFormat hwaccel_pix_fmt;
|
||||
enum AVPixelFormat hwaccel_retrieved_pix_fmt;
|
||||
|
||||
/* stats */
|
||||
// combined size of all the packets read
|
||||
@@ -439,38 +491,46 @@ typedef struct InputStream {
|
||||
int got_output;
|
||||
} InputStream;
|
||||
|
||||
typedef struct LastFrameDuration {
|
||||
int stream_idx;
|
||||
int64_t duration;
|
||||
} LastFrameDuration;
|
||||
|
||||
typedef struct InputFile {
|
||||
int index;
|
||||
|
||||
AVFormatContext *ctx;
|
||||
int eof_reached; /* true if eof reached */
|
||||
int eagain; /* true if last read attempt returned EAGAIN */
|
||||
int ist_index; /* index of first stream in input_streams */
|
||||
int loop; /* set number of times input stream should be looped */
|
||||
int64_t duration; /* actual duration of the longest stream in a file
|
||||
at the moment when looping happens */
|
||||
AVRational time_base; /* time base of the duration */
|
||||
int64_t input_ts_offset;
|
||||
int input_sync_ref;
|
||||
|
||||
/**
|
||||
* Effective format start time based on enabled streams.
|
||||
*/
|
||||
int64_t start_time_effective;
|
||||
int64_t ts_offset;
|
||||
/**
|
||||
* Extra timestamp offset added by discontinuity handling.
|
||||
*/
|
||||
int64_t ts_offset_discont;
|
||||
int64_t last_ts;
|
||||
int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
|
||||
int64_t recording_time;
|
||||
int nb_streams; /* number of stream that ffmpeg is aware of; may be different
|
||||
from ctx.nb_streams if new streams appear during av_read_frame() */
|
||||
int nb_streams_warn; /* number of streams that the user was warned of */
|
||||
|
||||
/* streams that ffmpeg is aware of;
|
||||
* there may be extra streams in ctx that are not mapped to an InputStream
|
||||
* if new streams appear dynamically during demuxing */
|
||||
InputStream **streams;
|
||||
int nb_streams;
|
||||
|
||||
int rate_emu;
|
||||
float readrate;
|
||||
int accurate_seek;
|
||||
|
||||
AVPacket *pkt;
|
||||
|
||||
#if HAVE_THREADS
|
||||
AVThreadMessageQueue *in_thread_queue;
|
||||
pthread_t thread; /* thread reading from this file */
|
||||
int non_blocking; /* reading packets from the thread should not block */
|
||||
int joined; /* the thread has been joined */
|
||||
int thread_queue_size; /* maximum number of queued packets */
|
||||
#endif
|
||||
/* when looping the input file, this queue is used by decoders to report
|
||||
* the last frame duration back to the demuxer thread */
|
||||
AVThreadMessageQueue *audio_duration_queue;
|
||||
int audio_duration_queue_size;
|
||||
} InputFile;
|
||||
|
||||
enum forced_keyframes_const {
|
||||
@@ -485,6 +545,41 @@ enum forced_keyframes_const {
|
||||
#define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
|
||||
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
|
||||
|
||||
enum EncStatsType {
|
||||
ENC_STATS_LITERAL = 0,
|
||||
ENC_STATS_FILE_IDX,
|
||||
ENC_STATS_STREAM_IDX,
|
||||
ENC_STATS_FRAME_NUM,
|
||||
ENC_STATS_FRAME_NUM_IN,
|
||||
ENC_STATS_TIMEBASE,
|
||||
ENC_STATS_TIMEBASE_IN,
|
||||
ENC_STATS_PTS,
|
||||
ENC_STATS_PTS_TIME,
|
||||
ENC_STATS_PTS_IN,
|
||||
ENC_STATS_PTS_TIME_IN,
|
||||
ENC_STATS_DTS,
|
||||
ENC_STATS_DTS_TIME,
|
||||
ENC_STATS_SAMPLE_NUM,
|
||||
ENC_STATS_NB_SAMPLES,
|
||||
ENC_STATS_PKT_SIZE,
|
||||
ENC_STATS_BITRATE,
|
||||
ENC_STATS_AVG_BITRATE,
|
||||
};
|
||||
|
||||
typedef struct EncStatsComponent {
|
||||
enum EncStatsType type;
|
||||
|
||||
uint8_t *str;
|
||||
size_t str_len;
|
||||
} EncStatsComponent;
|
||||
|
||||
typedef struct EncStats {
|
||||
EncStatsComponent *components;
|
||||
int nb_components;
|
||||
|
||||
AVIOContext *io;
|
||||
} EncStats;
|
||||
|
||||
extern const char *const forced_keyframes_const_names[];
|
||||
|
||||
typedef enum {
|
||||
@@ -492,68 +587,92 @@ typedef enum {
|
||||
MUXER_FINISHED = 2,
|
||||
} OSTFinished ;
|
||||
|
||||
enum {
|
||||
KF_FORCE_SOURCE = 1,
|
||||
KF_FORCE_SOURCE_NO_DROP = 2,
|
||||
};
|
||||
|
||||
typedef struct KeyframeForceCtx {
|
||||
int type;
|
||||
|
||||
int64_t ref_pts;
|
||||
|
||||
// timestamps of the forced keyframes, in AV_TIME_BASE_Q
|
||||
int64_t *pts;
|
||||
int nb_pts;
|
||||
int index;
|
||||
|
||||
AVExpr *pexpr;
|
||||
double expr_const_values[FKF_NB];
|
||||
|
||||
int dropped_keyframe;
|
||||
} KeyframeForceCtx;
|
||||
|
||||
typedef struct OutputStream {
|
||||
const AVClass *clazz;
|
||||
|
||||
int file_index; /* file index */
|
||||
int index; /* stream index in the output file */
|
||||
int source_index; /* InputStream index */
|
||||
|
||||
/* input stream that is the source for this output stream;
|
||||
* may be NULL for streams with no well-defined source, e.g.
|
||||
* attachments or outputs from complex filtergraphs */
|
||||
InputStream *ist;
|
||||
|
||||
AVStream *st; /* stream in the output file */
|
||||
int encoding_needed; /* true if encoding needed for this stream */
|
||||
int64_t frame_number;
|
||||
/* input pts and corresponding output pts
|
||||
for A/V sync */
|
||||
struct InputStream *sync_ist; /* input stream to sync against */
|
||||
int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ // FIXME look at frame_number
|
||||
/* pts of the first frame encoded for this stream, used for limiting
|
||||
* recording time */
|
||||
int64_t first_pts;
|
||||
/* dts of the last packet sent to the muxer */
|
||||
/* number of frames emitted by the video-encoding sync code */
|
||||
int64_t vsync_frame_number;
|
||||
/* predicted pts of the next frame to be encoded
|
||||
* audio/video encoding only */
|
||||
int64_t next_pts;
|
||||
/* dts of the last packet sent to the muxing queue, in AV_TIME_BASE_Q */
|
||||
int64_t last_mux_dts;
|
||||
/* pts of the last frame received from the filters, in AV_TIME_BASE_Q */
|
||||
int64_t last_filter_pts;
|
||||
|
||||
// timestamp from which the streamcopied streams should start,
|
||||
// in AV_TIME_BASE_Q;
|
||||
// everything before it should be discarded
|
||||
int64_t ts_copy_start;
|
||||
|
||||
// the timebase of the packets sent to the muxer
|
||||
AVRational mux_timebase;
|
||||
AVRational enc_timebase;
|
||||
|
||||
AVBSFContext *bsf_ctx;
|
||||
|
||||
AVCodecContext *enc_ctx;
|
||||
AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
|
||||
const AVCodec *enc;
|
||||
int64_t max_frames;
|
||||
AVFrame *filtered_frame;
|
||||
AVFrame *last_frame;
|
||||
AVFrame *sq_frame;
|
||||
AVPacket *pkt;
|
||||
int64_t last_dropped;
|
||||
int64_t last_nb0_frames[3];
|
||||
|
||||
void *hwaccel_ctx;
|
||||
|
||||
/* video only */
|
||||
AVRational frame_rate;
|
||||
AVRational max_frame_rate;
|
||||
enum VideoSyncMethod vsync_method;
|
||||
int is_cfr;
|
||||
const char *fps_mode;
|
||||
int force_fps;
|
||||
int top_field_first;
|
||||
#if FFMPEG_ROTATION_METADATA
|
||||
int rotate_overridden;
|
||||
#endif
|
||||
int autoscale;
|
||||
int bitexact;
|
||||
int bits_per_raw_sample;
|
||||
#if FFMPEG_ROTATION_METADATA
|
||||
double rotate_override_value;
|
||||
#endif
|
||||
|
||||
AVRational frame_aspect_ratio;
|
||||
|
||||
/* forced key frames */
|
||||
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;
|
||||
KeyframeForceCtx kf;
|
||||
|
||||
/* audio only */
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
int *audio_channels_map; /* list of the channels id to pick from the source stream */
|
||||
int audio_channels_mapped; /* number of channels in audio_channels_map */
|
||||
#endif
|
||||
|
||||
char *logfile_prefix;
|
||||
FILE *logfile;
|
||||
@@ -569,7 +688,6 @@ typedef struct OutputStream {
|
||||
char *apad;
|
||||
OSTFinished finished; /* no more packets should be written for this stream */
|
||||
int unavailable; /* true if the steram is unavailable (possibly temporarily) */
|
||||
int stream_copy;
|
||||
|
||||
// init_output_stream() has been called for this stream
|
||||
// The encoder and the bitstream filters have been initialized and the stream
|
||||
@@ -582,15 +700,16 @@ typedef struct OutputStream {
|
||||
int streamcopy_started;
|
||||
int copy_initial_nonkeyframes;
|
||||
int copy_prior_start;
|
||||
char *disposition;
|
||||
|
||||
int keep_pix_fmt;
|
||||
|
||||
/* stats */
|
||||
// combined size of all the packets written
|
||||
uint64_t data_size;
|
||||
// combined size of all the packets sent to the muxer
|
||||
uint64_t data_size_mux;
|
||||
// combined size of all the packets received from the encoder
|
||||
uint64_t data_size_enc;
|
||||
// number of packets send to the muxer
|
||||
uint64_t packets_written;
|
||||
atomic_uint_least64_t packets_written;
|
||||
// number of frames/samples sent to the encoder
|
||||
uint64_t frames_encoded;
|
||||
uint64_t samples_encoded;
|
||||
@@ -600,51 +719,48 @@ typedef struct OutputStream {
|
||||
/* packet quality factor */
|
||||
int quality;
|
||||
|
||||
int max_muxing_queue_size;
|
||||
|
||||
/* the packets are buffered here until the muxer is ready to be initialized */
|
||||
AVFifo *muxing_queue;
|
||||
|
||||
/*
|
||||
* The size of the AVPackets' buffers in queue.
|
||||
* Updated when a packet is either pushed or pulled from the queue.
|
||||
*/
|
||||
size_t muxing_queue_data_size;
|
||||
|
||||
/* Threshold after which max_muxing_queue_size will be in effect */
|
||||
size_t muxing_queue_data_threshold;
|
||||
|
||||
/* packet picture type */
|
||||
int pict_type;
|
||||
|
||||
/* frame encode sum of squared error values */
|
||||
int64_t error[4];
|
||||
|
||||
int sq_idx_encode;
|
||||
int sq_idx_mux;
|
||||
|
||||
EncStats enc_stats_pre;
|
||||
EncStats enc_stats_post;
|
||||
|
||||
/*
|
||||
* bool on whether this stream should be utilized for splitting
|
||||
* subtitles utilizing fix_sub_duration at random access points.
|
||||
*/
|
||||
unsigned int fix_sub_duration_heartbeat;
|
||||
} OutputStream;
|
||||
|
||||
typedef struct OutputFile {
|
||||
const AVClass *clazz;
|
||||
|
||||
int index;
|
||||
|
||||
const AVOutputFormat *format;
|
||||
const char *url;
|
||||
|
||||
OutputStream **streams;
|
||||
int nb_streams;
|
||||
|
||||
SyncQueue *sq_encode;
|
||||
|
||||
AVFormatContext *ctx;
|
||||
AVDictionary *opts;
|
||||
int ost_index; /* index of the first stream in output_streams */
|
||||
int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
|
||||
int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
|
||||
uint64_t limit_filesize; /* filesize limit expressed in bytes */
|
||||
|
||||
int shortest;
|
||||
|
||||
int header_written;
|
||||
int bitexact;
|
||||
} OutputFile;
|
||||
|
||||
extern __thread InputStream **input_streams;
|
||||
extern __thread int nb_input_streams;
|
||||
extern __thread InputFile **input_files;
|
||||
extern __thread int nb_input_files;
|
||||
|
||||
extern __thread OutputStream **output_streams;
|
||||
extern __thread int nb_output_streams;
|
||||
extern __thread OutputFile **output_files;
|
||||
extern __thread int nb_output_files;
|
||||
|
||||
@@ -658,13 +774,10 @@ extern __thread float audio_drift_threshold;
|
||||
extern __thread float dts_delta_threshold;
|
||||
extern __thread float dts_error_threshold;
|
||||
|
||||
extern __thread int audio_volume;
|
||||
extern __thread int audio_sync_method;
|
||||
extern __thread enum VideoSyncMethod video_sync_method;
|
||||
extern __thread float frame_drop_threshold;
|
||||
extern __thread int do_benchmark;
|
||||
extern __thread int do_benchmark_all;
|
||||
extern __thread int do_deinterlace;
|
||||
extern __thread int do_hex_dump;
|
||||
extern __thread int do_pkt_dump;
|
||||
extern __thread int copy_ts;
|
||||
@@ -677,7 +790,6 @@ extern __thread int print_stats;
|
||||
extern __thread int64_t stats_period;
|
||||
extern __thread int qp_hist;
|
||||
extern __thread int stdin_interaction;
|
||||
extern __thread int frame_bits_per_raw_sample;
|
||||
extern __thread AVIOContext *progress_avio;
|
||||
extern __thread float max_error_rate;
|
||||
|
||||
@@ -688,15 +800,20 @@ extern __thread int auto_conversion_filters;
|
||||
|
||||
extern __thread const AVIOInterruptCB int_cb;
|
||||
|
||||
#if CONFIG_QSV
|
||||
extern __thread char *qsv_device;
|
||||
#endif
|
||||
extern __thread HWDevice *filter_hw_device;
|
||||
|
||||
extern __thread int want_sdp;
|
||||
extern __thread unsigned nb_output_dumped;
|
||||
extern __thread int main_ffmpeg_return_code;
|
||||
|
||||
extern __thread int ignore_unknown_streams;
|
||||
extern __thread int copy_unknown_streams;
|
||||
|
||||
extern __thread int recast_media;
|
||||
|
||||
#if FFMPEG_OPT_PSNR
|
||||
extern __thread int do_psnr;
|
||||
#endif
|
||||
|
||||
void term_init(void);
|
||||
void term_exit(void);
|
||||
|
||||
@@ -705,7 +822,12 @@ void show_usage(void);
|
||||
void remove_avoptions(AVDictionary **a, AVDictionary *b);
|
||||
void assert_avoptions(AVDictionary *m);
|
||||
|
||||
int guess_input_channel_layout(InputStream *ist);
|
||||
void assert_file_overwrite(const char *filename);
|
||||
char *file_read(const char *filename);
|
||||
AVDictionary *strip_specifiers(const AVDictionary *dict);
|
||||
const AVCodec *find_codec_or_die(void *logctx, const char *name,
|
||||
enum AVMediaType type, int encoder);
|
||||
int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global);
|
||||
|
||||
int configure_filtergraph(FilterGraph *fg);
|
||||
void check_filter_outputs(void);
|
||||
@@ -719,8 +841,9 @@ 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);
|
||||
void enc_stats_write(OutputStream *ost, EncStats *es,
|
||||
const AVFrame *frame, const AVPacket *pkt,
|
||||
uint64_t frame_num);
|
||||
|
||||
HWDevice *hw_device_get_by_name(const char *name);
|
||||
int hw_device_init_from_string(const char *arg, HWDevice **dev);
|
||||
@@ -732,15 +855,58 @@ int hw_device_setup_for_filter(FilterGraph *fg);
|
||||
|
||||
int hwaccel_decode_init(AVCodecContext *avctx);
|
||||
|
||||
/* open the muxer when all the streams are initialized */
|
||||
int of_check_init(OutputFile *of);
|
||||
/*
|
||||
* Initialize muxing state for the given stream, should be called
|
||||
* after the codec/streamcopy setup has been done.
|
||||
*
|
||||
* Open the muxer once all the streams have been initialized.
|
||||
*/
|
||||
int of_stream_init(OutputFile *of, OutputStream *ost);
|
||||
int of_write_trailer(OutputFile *of);
|
||||
int of_open(const OptionsContext *o, const char *filename);
|
||||
void of_close(OutputFile **pof);
|
||||
|
||||
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
int unqueue);
|
||||
void of_enc_stats_close(void);
|
||||
|
||||
void set_report_callback(void (*callback)(int, float, float, int64_t, int, double, double));
|
||||
/*
|
||||
* Send a single packet to the output, applying any bitstream filters
|
||||
* associated with the output stream. This may result in any number
|
||||
* of packets actually being written, depending on what bitstream
|
||||
* filters are applied. The supplied packet is consumed and will be
|
||||
* blank (as if newly-allocated) when this function returns.
|
||||
*
|
||||
* If eof is set, instead indicate EOF to all bitstream filters and
|
||||
* therefore flush any delayed packets to the output. A blank packet
|
||||
* must be supplied in this case.
|
||||
*/
|
||||
void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof);
|
||||
int64_t of_filesize(OutputFile *of);
|
||||
|
||||
int ifile_open(const OptionsContext *o, const char *filename);
|
||||
void ifile_close(InputFile **f);
|
||||
|
||||
/**
|
||||
* Get next input packet from the demuxer.
|
||||
*
|
||||
* @param pkt the packet is written here when this function returns 0
|
||||
* @return
|
||||
* - 0 when a packet has been read successfully
|
||||
* - 1 when stream end was reached, but the stream is looped;
|
||||
* caller should flush decoders and read from this demuxer again
|
||||
* - a negative error code on failure
|
||||
*/
|
||||
int ifile_get_packet(InputFile *f, AVPacket **pkt);
|
||||
|
||||
/* iterate over all input streams in all input files;
|
||||
* pass NULL to start iteration */
|
||||
InputStream *ist_iter(InputStream *prev);
|
||||
|
||||
extern const char * const opt_name_codec_names[];
|
||||
extern const char * const opt_name_codec_tags[];
|
||||
extern const char * const opt_name_frame_rates[];
|
||||
extern const char * const opt_name_top_field_first[];
|
||||
|
||||
void set_report_callback(void (*callback)(int, float, float, int64_t, double, double, double));
|
||||
void cancel_operation(long id);
|
||||
|
||||
#endif /* FFTOOLS_FFMPEG_H */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* ffmpeg filter configuration
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -24,6 +25,12 @@
|
||||
* We manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 08.2018
|
||||
@@ -69,8 +76,9 @@ static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *c
|
||||
}
|
||||
}
|
||||
|
||||
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
const AVCodec *codec, enum AVPixelFormat target)
|
||||
enum AVPixelFormat
|
||||
choose_pixel_fmt(const AVCodec *codec, enum AVPixelFormat target,
|
||||
int strict_std_compliance)
|
||||
{
|
||||
if (codec && codec->pix_fmts) {
|
||||
const enum AVPixelFormat *p = codec->pix_fmts;
|
||||
@@ -79,7 +87,7 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
int has_alpha = desc ? desc->nb_components % 2 == 0 : 0;
|
||||
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
||||
|
||||
if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
if (strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
p = get_compliance_normal_pix_fmts(codec, p);
|
||||
}
|
||||
for (; *p != AV_PIX_FMT_NONE; p++) {
|
||||
@@ -106,6 +114,7 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
{
|
||||
OutputStream *ost = ofilter->ost;
|
||||
AVCodecContext *enc = ost->enc_ctx;
|
||||
const AVDictionaryEntry *strict_dict = av_dict_get(ost->encoder_opts, "strict", NULL, 0);
|
||||
if (strict_dict)
|
||||
// used by choose_pixel_fmt() and below
|
||||
@@ -119,13 +128,14 @@ static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
return av_get_pix_fmt_name(ost->enc_ctx->pix_fmt);
|
||||
}
|
||||
if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
|
||||
return av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc_ctx, ost->enc, ost->enc_ctx->pix_fmt));
|
||||
} else if (ost->enc && ost->enc->pix_fmts) {
|
||||
return av_get_pix_fmt_name(choose_pixel_fmt(enc->codec, enc->pix_fmt,
|
||||
ost->enc_ctx->strict_std_compliance));
|
||||
} else if (enc->codec->pix_fmts) {
|
||||
const enum AVPixelFormat *p;
|
||||
|
||||
p = ost->enc->pix_fmts;
|
||||
p = enc->codec->pix_fmts;
|
||||
if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
p = get_compliance_normal_pix_fmts(ost->enc, p);
|
||||
p = get_compliance_normal_pix_fmts(enc->codec, p);
|
||||
}
|
||||
|
||||
for (; *p != AV_PIX_FMT_NONE; p++) {
|
||||
@@ -133,7 +143,7 @@ static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
av_bprintf(bprint, "%s%c", name, p[1] == AV_PIX_FMT_NONE ? '\0' : '|');
|
||||
}
|
||||
if (!av_bprint_is_complete(bprint))
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return bprint->str;
|
||||
} else
|
||||
return NULL;
|
||||
@@ -197,7 +207,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
||||
InputFilter *ifilter;
|
||||
|
||||
if (!fg)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
fg->index = nb_filtergraphs;
|
||||
|
||||
ofilter = ALLOC_ARRAY_ELEM(fg->outputs, fg->nb_outputs);
|
||||
@@ -214,7 +224,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
||||
|
||||
ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!ifilter->frame_queue)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
GROW_ARRAY(ist->filters, ist->nb_filters);
|
||||
ist->filters[ist->nb_filters - 1] = ifilter;
|
||||
@@ -238,7 +248,7 @@ static char *describe_filter_link(FilterGraph *fg, AVFilterInOut *inout, int in)
|
||||
res = av_asprintf("%s:%s", ctx->filter->name,
|
||||
avfilter_pad_get_name(pads, inout->pad_idx));
|
||||
if (!res)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -285,7 +295,7 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
"matches no streams.\n", p, fg->graph_desc);
|
||||
exit_program(1);
|
||||
}
|
||||
ist = input_streams[input_files[file_idx]->ist_index + st->index];
|
||||
ist = input_files[file_idx]->streams[st->index];
|
||||
if (ist->user_set_discard == AVDISCARD_ALL) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
|
||||
"matches a disabled input stream.\n", p, fg->graph_desc);
|
||||
@@ -293,14 +303,13 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
}
|
||||
} else {
|
||||
/* find the first unused stream of corresponding type */
|
||||
for (i = 0; i < nb_input_streams; i++) {
|
||||
ist = input_streams[i];
|
||||
for (ist = ist_iter(NULL); ist; ist = ist_iter(ist)) {
|
||||
if (ist->user_set_discard == AVDISCARD_ALL)
|
||||
continue;
|
||||
if (ist->dec_ctx->codec_type == type && ist->discard)
|
||||
break;
|
||||
}
|
||||
if (i == nb_input_streams) {
|
||||
if (!ist) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Cannot find a matching stream for "
|
||||
"unlabeled input pad %d on filter %s\n", in->pad_idx,
|
||||
in->filter_ctx->name);
|
||||
@@ -323,12 +332,162 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
|
||||
ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!ifilter->frame_queue)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
GROW_ARRAY(ist->filters, ist->nb_filters);
|
||||
ist->filters[ist->nb_filters - 1] = ifilter;
|
||||
}
|
||||
|
||||
static int read_binary(const char *path, uint8_t **data, int *len)
|
||||
{
|
||||
AVIOContext *io = NULL;
|
||||
int64_t fsize;
|
||||
int ret;
|
||||
|
||||
*data = NULL;
|
||||
*len = 0;
|
||||
|
||||
ret = avio_open2(&io, path, AVIO_FLAG_READ, &int_cb, NULL);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Cannot open file '%s': %s\n",
|
||||
path, av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
fsize = avio_size(io);
|
||||
if (fsize < 0 || fsize > INT_MAX) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Cannot obtain size of file %s\n", path);
|
||||
ret = AVERROR(EIO);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*data = av_malloc(fsize);
|
||||
if (!*data) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = avio_read(io, *data, fsize);
|
||||
if (ret != fsize) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error reading file %s\n", path);
|
||||
ret = ret < 0 ? ret : AVERROR(EIO);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*len = fsize;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
avio_close(io);
|
||||
av_freep(data);
|
||||
*len = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int filter_opt_apply(AVFilterContext *f, const char *key, const char *val)
|
||||
{
|
||||
const AVOption *o = NULL;
|
||||
int ret;
|
||||
|
||||
ret = av_opt_set(f, key, val, AV_OPT_SEARCH_CHILDREN);
|
||||
if (ret >= 0)
|
||||
return 0;
|
||||
|
||||
if (ret == AVERROR_OPTION_NOT_FOUND && key[0] == '/')
|
||||
o = av_opt_find(f, key + 1, NULL, 0, AV_OPT_SEARCH_CHILDREN);
|
||||
if (!o)
|
||||
goto err_apply;
|
||||
|
||||
// key is a valid option name prefixed with '/'
|
||||
// interpret value as a path from which to load the actual option value
|
||||
key++;
|
||||
|
||||
if (o->type == AV_OPT_TYPE_BINARY) {
|
||||
uint8_t *data;
|
||||
int len;
|
||||
|
||||
ret = read_binary(val, &data, &len);
|
||||
if (ret < 0)
|
||||
goto err_load;
|
||||
|
||||
ret = av_opt_set_bin(f, key, data, len, AV_OPT_SEARCH_CHILDREN);
|
||||
av_freep(&data);
|
||||
} else {
|
||||
char *data = file_read(val);
|
||||
if (!data) {
|
||||
ret = AVERROR(EIO);
|
||||
goto err_load;
|
||||
}
|
||||
|
||||
ret = av_opt_set(f, key, data, AV_OPT_SEARCH_CHILDREN);
|
||||
av_freep(&data);
|
||||
}
|
||||
if (ret < 0)
|
||||
goto err_apply;
|
||||
|
||||
return 0;
|
||||
|
||||
err_apply:
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Error applying option '%s' to filter '%s': %s\n",
|
||||
key, f->filter->name, av_err2str(ret));
|
||||
return ret;
|
||||
err_load:
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Error loading value for option '%s' from file '%s'\n",
|
||||
key, val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int graph_opts_apply(AVFilterGraphSegment *seg)
|
||||
{
|
||||
for (size_t i = 0; i < seg->nb_chains; i++) {
|
||||
AVFilterChain *ch = seg->chains[i];
|
||||
|
||||
for (size_t j = 0; j < ch->nb_filters; j++) {
|
||||
AVFilterParams *p = ch->filters[j];
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
|
||||
av_assert0(p->filter);
|
||||
|
||||
while ((e = av_dict_iterate(p->opts, e))) {
|
||||
int ret = filter_opt_apply(p->filter, e->key, e->value);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
av_dict_free(&p->opts);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int graph_parse(AVFilterGraph *graph, const char *desc,
|
||||
AVFilterInOut **inputs, AVFilterInOut **outputs)
|
||||
{
|
||||
AVFilterGraphSegment *seg;
|
||||
int ret;
|
||||
|
||||
ret = avfilter_graph_segment_parse(graph, desc, 0, &seg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = avfilter_graph_segment_create_filters(seg, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
ret = graph_opts_apply(seg);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
ret = avfilter_graph_segment_apply(seg, 0, inputs, outputs);
|
||||
|
||||
fail:
|
||||
avfilter_graph_segment_free(&seg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int init_complex_filtergraph(FilterGraph *fg)
|
||||
{
|
||||
AVFilterInOut *inputs, *outputs, *cur;
|
||||
@@ -342,7 +501,7 @@ int init_complex_filtergraph(FilterGraph *fg)
|
||||
return AVERROR(ENOMEM);
|
||||
graph->nb_threads = 1;
|
||||
|
||||
ret = avfilter_graph_parse2(graph, fg->graph_desc, &inputs, &outputs);
|
||||
ret = graph_parse(graph, fg->graph_desc, &inputs, &outputs);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -467,8 +626,7 @@ static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
snprintf(args, sizeof(args), "%d:%d",
|
||||
ofilter->width, ofilter->height);
|
||||
|
||||
while ((e = av_dict_get(ost->sws_dict, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((e = av_dict_iterate(ost->sws_dict, e))) {
|
||||
av_strlcatf(args, sizeof(args), ":%s=%s", e->key, e->value);
|
||||
}
|
||||
|
||||
@@ -575,6 +733,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
pad_idx = 0; \
|
||||
} while (0)
|
||||
av_bprint_init(&args, 0, AV_BPRINT_SIZE_UNLIMITED);
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
if (ost->audio_channels_mapped) {
|
||||
AVChannelLayout mapped_layout = { 0 };
|
||||
int i;
|
||||
@@ -587,6 +746,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
AUTO_INSERT_FILTER("-map_channel", "pan", args.str);
|
||||
av_bprint_clear(&args);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (codec->ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
av_channel_layout_default(&codec->ch_layout, codec->ch_layout.nb_channels);
|
||||
@@ -620,11 +780,11 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
if (ost->apad && of->shortest) {
|
||||
int i;
|
||||
|
||||
for (i=0; i<of->ctx->nb_streams; i++)
|
||||
if (of->ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||
for (i = 0; i < of->nb_streams; i++)
|
||||
if (of->streams[i]->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||
break;
|
||||
|
||||
if (i<of->ctx->nb_streams) {
|
||||
if (i < of->nb_streams) {
|
||||
AUTO_INSERT_FILTER("-apad", "apad", ost->apad);
|
||||
}
|
||||
}
|
||||
@@ -751,7 +911,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter,
|
||||
}
|
||||
|
||||
if (!fr.num)
|
||||
fr = av_guess_frame_rate(input_files[ist->file_index]->ctx, ist->st, NULL);
|
||||
fr = ist->framerate_guessed;
|
||||
|
||||
if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_SUBTITLE) {
|
||||
ret = sub2video_prepare(ist, ifilter);
|
||||
@@ -904,40 +1064,6 @@ static int configure_input_audio_filter(FilterGraph *fg, InputFilter *ifilter,
|
||||
last_filter = filt_ctx; \
|
||||
} while (0)
|
||||
|
||||
if (audio_sync_method > 0) {
|
||||
char args[256] = {0};
|
||||
|
||||
av_strlcatf(args, sizeof(args), "async=%d", audio_sync_method);
|
||||
if (audio_drift_threshold != 0.1)
|
||||
av_strlcatf(args, sizeof(args), ":min_hard_comp=%f", audio_drift_threshold);
|
||||
if (!fg->reconfiguration)
|
||||
av_strlcatf(args, sizeof(args), ":first_pts=0");
|
||||
AUTO_INSERT_FILTER_INPUT("-async", "aresample", args);
|
||||
}
|
||||
|
||||
// if (ost->audio_channels_mapped) {
|
||||
// int i;
|
||||
// AVBPrint pan_buf;
|
||||
// av_bprint_init(&pan_buf, 256, 8192);
|
||||
// av_bprintf(&pan_buf, "0x%"PRIx64,
|
||||
// av_get_default_channel_layout(ost->audio_channels_mapped));
|
||||
// for (i = 0; i < ost->audio_channels_mapped; i++)
|
||||
// if (ost->audio_channels_map[i] != -1)
|
||||
// av_bprintf(&pan_buf, ":c%d=c%d", i, ost->audio_channels_map[i]);
|
||||
// AUTO_INSERT_FILTER_INPUT("-map_channel", "pan", pan_buf.str);
|
||||
// av_bprint_finalize(&pan_buf, NULL);
|
||||
// }
|
||||
|
||||
if (audio_volume != 256) {
|
||||
char args[256];
|
||||
|
||||
av_log(NULL, AV_LOG_WARNING, "-vol has been deprecated. Use the volume "
|
||||
"audio filter instead.\n");
|
||||
|
||||
snprintf(args, sizeof(args), "%f", audio_volume / 256.);
|
||||
AUTO_INSERT_FILTER_INPUT("-vol", "volume", args);
|
||||
}
|
||||
|
||||
snprintf(name, sizeof(name), "trim for input stream %d:%d",
|
||||
ist->file_index, ist->st->index);
|
||||
if (copy_ts) {
|
||||
@@ -1020,44 +1146,39 @@ int configure_filtergraph(FilterGraph *fg)
|
||||
|
||||
if (simple) {
|
||||
OutputStream *ost = fg->outputs[0]->ost;
|
||||
char args[512];
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
|
||||
if (filter_nbthreads) {
|
||||
ret = av_opt_set(fg->graph, "threads", filter_nbthreads, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
} else {
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
e = av_dict_get(ost->encoder_opts, "threads", NULL, 0);
|
||||
if (e)
|
||||
av_opt_set(fg->graph, "threads", e->value, 0);
|
||||
}
|
||||
|
||||
args[0] = 0;
|
||||
e = NULL;
|
||||
while ((e = av_dict_get(ost->sws_dict, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
|
||||
}
|
||||
if (strlen(args)) {
|
||||
args[strlen(args)-1] = 0;
|
||||
fg->graph->scale_sws_opts = av_strdup(args);
|
||||
if (av_dict_count(ost->sws_dict)) {
|
||||
ret = av_dict_get_string(ost->sws_dict,
|
||||
&fg->graph->scale_sws_opts,
|
||||
'=', ':');
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
args[0] = 0;
|
||||
e = NULL;
|
||||
while ((e = av_dict_get(ost->swr_opts, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
|
||||
if (av_dict_count(ost->swr_opts)) {
|
||||
char *args;
|
||||
ret = av_dict_get_string(ost->swr_opts, &args, '=', ':');
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
av_opt_set(fg->graph, "aresample_swr_opts", args, 0);
|
||||
av_free(args);
|
||||
}
|
||||
if (strlen(args))
|
||||
args[strlen(args)-1] = 0;
|
||||
av_opt_set(fg->graph, "aresample_swr_opts", args, 0);
|
||||
} else {
|
||||
fg->graph->nb_threads = filter_complex_nbthreads;
|
||||
}
|
||||
|
||||
if ((ret = avfilter_graph_parse2(fg->graph, graph_desc, &inputs, &outputs)) < 0)
|
||||
if ((ret = graph_parse(fg->graph, graph_desc, &inputs, &outputs)) < 0)
|
||||
goto fail;
|
||||
|
||||
ret = hw_device_setup_for_filter(fg);
|
||||
@@ -1131,16 +1252,8 @@ int configure_filtergraph(FilterGraph *fg)
|
||||
|
||||
for (i = 0; i < fg->nb_outputs; i++) {
|
||||
OutputStream *ost = fg->outputs[i]->ost;
|
||||
if (!ost->enc) {
|
||||
/* identical to the same check in ffmpeg.c, needed because
|
||||
complex filter graphs are initialized earlier */
|
||||
av_log(NULL, AV_LOG_ERROR, "Encoder (codec %s) not found for output stream #%d:%d\n",
|
||||
avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
|
||||
!(ost->enc->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
|
||||
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_AUDIO &&
|
||||
!(ost->enc_ctx->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
|
||||
av_buffersink_set_frame_size(ost->filter->filter,
|
||||
ost->enc_ctx->frame_size);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2019 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -23,6 +24,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 12.2019
|
||||
@@ -357,7 +364,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
if (ist->hwaccel_id == HWACCEL_AUTO) {
|
||||
ist->hwaccel_device_type = dev->type;
|
||||
} else if (ist->hwaccel_device_type != dev->type) {
|
||||
av_log(ist->dec_ctx, AV_LOG_ERROR, "Invalid hwaccel device "
|
||||
av_log(NULL, AV_LOG_ERROR, "Invalid hwaccel device "
|
||||
"specified for decoder: device %s of type %s is not "
|
||||
"usable with hwaccel %s.\n", dev->name,
|
||||
av_hwdevice_get_type_name(dev->type),
|
||||
@@ -408,7 +415,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
type = config->device_type;
|
||||
dev = hw_device_get_by_type(type);
|
||||
if (dev) {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with existing device %s.\n",
|
||||
av_hwdevice_get_type_name(type), dev->name);
|
||||
}
|
||||
@@ -426,12 +433,12 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
continue;
|
||||
}
|
||||
if (ist->hwaccel_device) {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with new device created "
|
||||
"from %s.\n", av_hwdevice_get_type_name(type),
|
||||
ist->hwaccel_device);
|
||||
} else {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with new default device.\n",
|
||||
av_hwdevice_get_type_name(type));
|
||||
}
|
||||
@@ -439,7 +446,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
if (dev) {
|
||||
ist->hwaccel_device_type = type;
|
||||
} else {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Auto hwaccel "
|
||||
av_log(NULL, AV_LOG_INFO, "Auto hwaccel "
|
||||
"disabled: no device found.\n");
|
||||
ist->hwaccel_id = HWACCEL_NONE;
|
||||
return 0;
|
||||
@@ -447,7 +454,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
}
|
||||
|
||||
if (!dev) {
|
||||
av_log(ist->dec_ctx, AV_LOG_ERROR, "No device available "
|
||||
av_log(NULL, AV_LOG_ERROR, "No device available "
|
||||
"for decoder: device type %s needed for codec %s.\n",
|
||||
av_hwdevice_get_type_name(type), ist->dec->name);
|
||||
return err;
|
||||
@@ -479,7 +486,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
}
|
||||
|
||||
for (i = 0;; i++) {
|
||||
config = avcodec_get_hw_config(ost->enc, i);
|
||||
config = avcodec_get_hw_config(ost->enc_ctx->codec, i);
|
||||
if (!config)
|
||||
break;
|
||||
|
||||
@@ -490,7 +497,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using input "
|
||||
"frames context (format %s) with %s encoder.\n",
|
||||
av_get_pix_fmt_name(ost->enc_ctx->pix_fmt),
|
||||
ost->enc->name);
|
||||
ost->enc_ctx->codec->name);
|
||||
ost->enc_ctx->hw_frames_ctx = av_buffer_ref(frames_ref);
|
||||
if (!ost->enc_ctx->hw_frames_ctx)
|
||||
return AVERROR(ENOMEM);
|
||||
@@ -505,7 +512,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
if (dev) {
|
||||
av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using device %s "
|
||||
"(type %s) with %s encoder.\n", dev->name,
|
||||
av_hwdevice_get_type_name(dev->type), ost->enc->name);
|
||||
av_hwdevice_get_type_name(dev->type), ost->enc_ctx->codec->name);
|
||||
ost->enc_ctx->hw_device_ctx = av_buffer_ref(dev->device_ref);
|
||||
if (!ost->enc_ctx->hw_device_ctx)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -22,108 +23,101 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop the ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
* - want_sdp marked as thread-local
|
||||
* - ms_from_ost migrated from ffmpeg_mux.c and marked as non-static
|
||||
*
|
||||
* ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
* --------------------------------------------------------
|
||||
* - fftools_ prefix added to fftools headers
|
||||
* - using main_ffmpeg_return_code instead of main_return_code
|
||||
* - printf replaced with av_log statements
|
||||
*/
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "fftools_ffmpeg.h"
|
||||
#include "fftools_ffmpeg_mux.h"
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/timestamp.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/avio.h"
|
||||
|
||||
static void close_all_output_streams(OutputStream *ost, OSTFinished this_stream, OSTFinished others)
|
||||
__thread int want_sdp = 1;
|
||||
|
||||
MuxStream *ms_from_ost(OutputStream *ost)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < nb_output_streams; i++) {
|
||||
OutputStream *ost2 = output_streams[i];
|
||||
ost2->finished |= ost == ost2 ? this_stream : others;
|
||||
}
|
||||
return (MuxStream*)ost;
|
||||
}
|
||||
|
||||
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
int unqueue)
|
||||
static Muxer *mux_from_of(OutputFile *of)
|
||||
{
|
||||
AVFormatContext *s = of->ctx;
|
||||
return (Muxer*)of;
|
||||
}
|
||||
|
||||
static int64_t filesize(AVIOContext *pb)
|
||||
{
|
||||
int64_t ret = -1;
|
||||
|
||||
if (pb) {
|
||||
ret = avio_size(pb);
|
||||
if (ret <= 0) // FIXME improve avio_size() so it works with non seekable output too
|
||||
ret = avio_tell(pb);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVFormatContext *s = mux->fc;
|
||||
AVStream *st = ost->st;
|
||||
int64_t fs;
|
||||
uint64_t frame_num;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Audio encoders may split the packets -- #frames in != #packets out.
|
||||
* But there is no reordering, so we can limit the number of output packets
|
||||
* by simply dropping them here.
|
||||
* Counting encoded video frames needs to be done separately because of
|
||||
* reordering, see do_video_out().
|
||||
* Do not count the packet when unqueued because it has been counted when queued.
|
||||
*/
|
||||
if (!(st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->encoding_needed) && !unqueue) {
|
||||
if (ost->frame_number >= ost->max_frames) {
|
||||
av_packet_unref(pkt);
|
||||
return;
|
||||
}
|
||||
ost->frame_number++;
|
||||
fs = filesize(s->pb);
|
||||
atomic_store(&mux->last_filesize, fs);
|
||||
if (fs >= mux->limit_filesize) {
|
||||
ret = AVERROR_EOF;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!of->header_written) {
|
||||
AVPacket *tmp_pkt;
|
||||
/* the muxer is not initialized yet, buffer the packet */
|
||||
if (!av_fifo_can_write(ost->muxing_queue)) {
|
||||
size_t cur_size = av_fifo_can_read(ost->muxing_queue);
|
||||
unsigned int are_we_over_size =
|
||||
(ost->muxing_queue_data_size + pkt->size) > ost->muxing_queue_data_threshold;
|
||||
size_t limit = are_we_over_size ? ost->max_muxing_queue_size : SIZE_MAX;
|
||||
size_t new_size = FFMIN(2 * cur_size, limit);
|
||||
|
||||
if (new_size <= cur_size) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Too many packets buffered for output stream %d:%d.\n",
|
||||
ost->file_index, ost->st->index);
|
||||
exit_program(1);
|
||||
}
|
||||
ret = av_fifo_grow2(ost->muxing_queue, new_size - cur_size);
|
||||
if (ret < 0)
|
||||
exit_program(1);
|
||||
}
|
||||
ret = av_packet_make_refcounted(pkt);
|
||||
if (ret < 0)
|
||||
exit_program(1);
|
||||
tmp_pkt = av_packet_alloc();
|
||||
if (!tmp_pkt)
|
||||
exit_program(1);
|
||||
av_packet_move_ref(tmp_pkt, pkt);
|
||||
ost->muxing_queue_data_size += tmp_pkt->size;
|
||||
av_fifo_write(ost->muxing_queue, &tmp_pkt, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->vsync_method == VSYNC_DROP) ||
|
||||
(st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && audio_sync_method < 0))
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->vsync_method == VSYNC_DROP)
|
||||
pkt->pts = pkt->dts = AV_NOPTS_VALUE;
|
||||
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
if (ost->frame_rate.num && ost->is_cfr) {
|
||||
if (pkt->duration > 0)
|
||||
av_log(NULL, AV_LOG_WARNING, "Overriding packet duration by frame rate, this should not happen\n");
|
||||
av_log(ost, AV_LOG_WARNING, "Overriding packet duration by frame rate, this should not happen\n");
|
||||
pkt->duration = av_rescale_q(1, av_inv_q(ost->frame_rate),
|
||||
ost->mux_timebase);
|
||||
pkt->time_base);
|
||||
}
|
||||
}
|
||||
|
||||
av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
|
||||
av_packet_rescale_ts(pkt, pkt->time_base, ost->st->time_base);
|
||||
pkt->time_base = ost->st->time_base;
|
||||
|
||||
if (!(s->oformat->flags & AVFMT_NOTIMESTAMPS)) {
|
||||
if (pkt->dts != AV_NOPTS_VALUE &&
|
||||
@@ -133,25 +127,26 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
pkt->dts, pkt->pts,
|
||||
ost->file_index, ost->st->index);
|
||||
pkt->pts =
|
||||
pkt->dts = pkt->pts + pkt->dts + ost->last_mux_dts + 1
|
||||
- FFMIN3(pkt->pts, pkt->dts, ost->last_mux_dts + 1)
|
||||
- FFMAX3(pkt->pts, pkt->dts, ost->last_mux_dts + 1);
|
||||
pkt->dts = pkt->pts + pkt->dts + ms->last_mux_dts + 1
|
||||
- FFMIN3(pkt->pts, pkt->dts, ms->last_mux_dts + 1)
|
||||
- FFMAX3(pkt->pts, pkt->dts, ms->last_mux_dts + 1);
|
||||
}
|
||||
if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) &&
|
||||
pkt->dts != AV_NOPTS_VALUE &&
|
||||
ost->last_mux_dts != AV_NOPTS_VALUE) {
|
||||
int64_t max = ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT);
|
||||
ms->last_mux_dts != AV_NOPTS_VALUE) {
|
||||
int64_t max = ms->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT);
|
||||
if (pkt->dts < max) {
|
||||
int loglevel = max - pkt->dts > 2 || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ? AV_LOG_WARNING : AV_LOG_DEBUG;
|
||||
if (exit_on_error)
|
||||
loglevel = AV_LOG_ERROR;
|
||||
av_log(s, loglevel, "Non-monotonous DTS in output stream "
|
||||
"%d:%d; previous: %"PRId64", current: %"PRId64"; ",
|
||||
ost->file_index, ost->st->index, ost->last_mux_dts, pkt->dts);
|
||||
ost->file_index, ost->st->index, ms->last_mux_dts, pkt->dts);
|
||||
if (exit_on_error) {
|
||||
av_log(NULL, AV_LOG_FATAL, "aborting.\n");
|
||||
exit_program(1);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
av_log(s, loglevel, "changing to %"PRId64". This may result "
|
||||
"in incorrect timestamps in the output file.\n",
|
||||
max);
|
||||
@@ -161,17 +156,17 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
}
|
||||
}
|
||||
}
|
||||
ost->last_mux_dts = pkt->dts;
|
||||
ms->last_mux_dts = pkt->dts;
|
||||
|
||||
ost->data_size += pkt->size;
|
||||
ost->packets_written++;
|
||||
ost->data_size_mux += pkt->size;
|
||||
frame_num = atomic_fetch_add(&ost->packets_written, 1);
|
||||
|
||||
pkt->stream_index = ost->index;
|
||||
|
||||
if (debug_ts) {
|
||||
av_log(NULL, AV_LOG_INFO, "muxer <- type:%s "
|
||||
av_log(ost, AV_LOG_INFO, "muxer <- type:%s "
|
||||
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s size:%d\n",
|
||||
av_get_media_type_string(ost->enc_ctx->codec_type),
|
||||
av_get_media_type_string(st->codecpar->codec_type),
|
||||
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->st->time_base),
|
||||
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->st->time_base),
|
||||
av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, &ost->st->time_base),
|
||||
@@ -179,12 +174,307 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
);
|
||||
}
|
||||
|
||||
if (ms->stats.io)
|
||||
enc_stats_write(ost, &ms->stats, NULL, pkt, frame_num);
|
||||
|
||||
ret = av_interleaved_write_frame(s, pkt);
|
||||
if (ret < 0) {
|
||||
print_error("av_interleaved_write_frame()", ret);
|
||||
main_ffmpeg_return_code = 1;
|
||||
close_all_output_streams(ost, MUXER_FINISHED | ENCODER_FINISHED, ENCODER_FINISHED);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
av_packet_unref(pkt);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int sync_queue_process(Muxer *mux, OutputStream *ost, AVPacket *pkt, int *stream_eof)
|
||||
{
|
||||
OutputFile *of = &mux->of;
|
||||
|
||||
if (ost->sq_idx_mux >= 0) {
|
||||
int ret = sq_send(mux->sq_mux, ost->sq_idx_mux, SQPKT(pkt));
|
||||
if (ret < 0) {
|
||||
if (ret == AVERROR_EOF)
|
||||
*stream_eof = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
ret = sq_receive(mux->sq_mux, -1, SQPKT(mux->sq_pkt));
|
||||
if (ret < 0)
|
||||
return (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) ? 0 : ret;
|
||||
|
||||
ret = write_packet(mux, of->streams[ret],
|
||||
mux->sq_pkt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
} else if (pkt)
|
||||
return write_packet(mux, ost, pkt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void thread_set_name(OutputFile *of)
|
||||
{
|
||||
char name[16];
|
||||
snprintf(name, sizeof(name), "mux%d:%s", of->index, of->format->name);
|
||||
ff_thread_setname(name);
|
||||
}
|
||||
|
||||
static void *muxer_thread(void *arg)
|
||||
{
|
||||
Muxer *mux = arg;
|
||||
OutputFile *of = &mux->of;
|
||||
AVPacket *pkt = NULL;
|
||||
int ret = 0;
|
||||
|
||||
pkt = av_packet_alloc();
|
||||
if (!pkt) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
thread_set_name(of);
|
||||
|
||||
while (1) {
|
||||
OutputStream *ost;
|
||||
int stream_idx, stream_eof = 0;
|
||||
|
||||
ret = tq_receive(mux->tq, &stream_idx, pkt);
|
||||
if (stream_idx < 0) {
|
||||
av_log(mux, AV_LOG_VERBOSE, "All streams finished\n");
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
ost = of->streams[stream_idx];
|
||||
ret = sync_queue_process(mux, ost, ret < 0 ? NULL : pkt, &stream_eof);
|
||||
av_packet_unref(pkt);
|
||||
if (ret == AVERROR_EOF && stream_eof)
|
||||
tq_receive_finish(mux->tq, stream_idx);
|
||||
else if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error muxing a packet\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
finish:
|
||||
av_packet_free(&pkt);
|
||||
|
||||
for (unsigned int i = 0; i < mux->fc->nb_streams; i++)
|
||||
tq_receive_finish(mux->tq, i);
|
||||
|
||||
av_log(mux, AV_LOG_VERBOSE, "Terminating muxer thread\n");
|
||||
|
||||
return (void*)(intptr_t)ret;
|
||||
}
|
||||
|
||||
static int thread_submit_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!pkt || ost->finished & MUXER_FINISHED)
|
||||
goto finish;
|
||||
|
||||
ret = tq_send(mux->tq, ost->index, pkt);
|
||||
if (ret < 0)
|
||||
goto finish;
|
||||
|
||||
return 0;
|
||||
|
||||
finish:
|
||||
if (pkt)
|
||||
av_packet_unref(pkt);
|
||||
|
||||
ost->finished |= MUXER_FINISHED;
|
||||
tq_send_finish(mux->tq, ost->index);
|
||||
return ret == AVERROR_EOF ? 0 : ret;
|
||||
}
|
||||
|
||||
static int queue_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVPacket *tmp_pkt = NULL;
|
||||
int ret;
|
||||
|
||||
if (!av_fifo_can_write(ms->muxing_queue)) {
|
||||
size_t cur_size = av_fifo_can_read(ms->muxing_queue);
|
||||
size_t pkt_size = pkt ? pkt->size : 0;
|
||||
unsigned int are_we_over_size =
|
||||
(ms->muxing_queue_data_size + pkt_size) > ms->muxing_queue_data_threshold;
|
||||
size_t limit = are_we_over_size ? ms->max_muxing_queue_size : SIZE_MAX;
|
||||
size_t new_size = FFMIN(2 * cur_size, limit);
|
||||
|
||||
if (new_size <= cur_size) {
|
||||
av_log(ost, AV_LOG_ERROR,
|
||||
"Too many packets buffered for output stream %d:%d.\n",
|
||||
ost->file_index, ost->st->index);
|
||||
return AVERROR(ENOSPC);
|
||||
}
|
||||
ret = av_fifo_grow2(ms->muxing_queue, new_size - cur_size);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (pkt) {
|
||||
ret = av_packet_make_refcounted(pkt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
tmp_pkt = av_packet_alloc();
|
||||
if (!tmp_pkt)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
av_packet_move_ref(tmp_pkt, pkt);
|
||||
ms->muxing_queue_data_size += tmp_pkt->size;
|
||||
}
|
||||
av_fifo_write(ms->muxing_queue, &tmp_pkt, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int submit_packet(Muxer *mux, AVPacket *pkt, OutputStream *ost)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (mux->tq) {
|
||||
return thread_submit_packet(mux, ost, pkt);
|
||||
} else {
|
||||
/* the muxer is not initialized yet, buffer the packet */
|
||||
ret = queue_packet(mux, ost, pkt);
|
||||
if (ret < 0) {
|
||||
if (pkt)
|
||||
av_packet_unref(pkt);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
const char *err_msg;
|
||||
int ret = 0;
|
||||
|
||||
if (!eof && pkt->dts != AV_NOPTS_VALUE)
|
||||
ost->last_mux_dts = av_rescale_q(pkt->dts, pkt->time_base, AV_TIME_BASE_Q);
|
||||
|
||||
/* apply the output bitstream filters */
|
||||
if (ms->bsf_ctx) {
|
||||
int bsf_eof = 0;
|
||||
|
||||
ret = av_bsf_send_packet(ms->bsf_ctx, eof ? NULL : pkt);
|
||||
if (ret < 0) {
|
||||
err_msg = "submitting a packet for bitstream filtering";
|
||||
goto fail;
|
||||
}
|
||||
|
||||
while (!bsf_eof) {
|
||||
ret = av_bsf_receive_packet(ms->bsf_ctx, pkt);
|
||||
if (ret == AVERROR(EAGAIN))
|
||||
return;
|
||||
else if (ret == AVERROR_EOF)
|
||||
bsf_eof = 1;
|
||||
else if (ret < 0) {
|
||||
err_msg = "applying bitstream filters to a packet";
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = submit_packet(mux, bsf_eof ? NULL : pkt, ost);
|
||||
if (ret < 0)
|
||||
goto mux_fail;
|
||||
}
|
||||
} else {
|
||||
ret = submit_packet(mux, eof ? NULL : pkt, ost);
|
||||
if (ret < 0)
|
||||
goto mux_fail;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
mux_fail:
|
||||
err_msg = "submitting a packet to the muxer";
|
||||
|
||||
fail:
|
||||
av_log(ost, AV_LOG_ERROR, "Error %s\n", err_msg);
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
|
||||
}
|
||||
|
||||
static int thread_stop(Muxer *mux)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
if (!mux || !mux->tq)
|
||||
return 0;
|
||||
|
||||
for (unsigned int i = 0; i < mux->fc->nb_streams; i++)
|
||||
tq_send_finish(mux->tq, i);
|
||||
|
||||
pthread_join(mux->thread, &ret);
|
||||
|
||||
tq_free(&mux->tq);
|
||||
|
||||
return (int)(intptr_t)ret;
|
||||
}
|
||||
|
||||
static void pkt_move(void *dst, void *src)
|
||||
{
|
||||
av_packet_move_ref(dst, src);
|
||||
}
|
||||
|
||||
static int thread_start(Muxer *mux)
|
||||
{
|
||||
AVFormatContext *fc = mux->fc;
|
||||
ObjPool *op;
|
||||
int ret;
|
||||
|
||||
op = objpool_alloc_packets();
|
||||
if (!op)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
mux->tq = tq_alloc(fc->nb_streams, mux->thread_queue_size, op, pkt_move);
|
||||
if (!mux->tq) {
|
||||
objpool_free(&op);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
ret = pthread_create(&mux->thread, NULL, muxer_thread, (void*)mux);
|
||||
if (ret) {
|
||||
tq_free(&mux->tq);
|
||||
return AVERROR(ret);
|
||||
}
|
||||
|
||||
/* flush the muxing queues */
|
||||
for (int i = 0; i < fc->nb_streams; i++) {
|
||||
OutputStream *ost = mux->of.streams[i];
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVPacket *pkt;
|
||||
|
||||
/* try to improve muxing time_base (only possible if nothing has been written yet) */
|
||||
if (!av_fifo_can_read(ms->muxing_queue))
|
||||
ost->mux_timebase = ost->st->time_base;
|
||||
|
||||
while (av_fifo_read(ms->muxing_queue, &pkt, 1) >= 0) {
|
||||
ret = thread_submit_packet(mux, ost, pkt);
|
||||
if (pkt) {
|
||||
ms->muxing_queue_data_size -= pkt->size;
|
||||
av_packet_free(&pkt);
|
||||
}
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int print_sdp(void)
|
||||
@@ -196,16 +486,16 @@ static int print_sdp(void)
|
||||
AVFormatContext **avc;
|
||||
|
||||
for (i = 0; i < nb_output_files; i++) {
|
||||
if (!output_files[i]->header_written)
|
||||
if (!mux_from_of(output_files[i])->header_written)
|
||||
return 0;
|
||||
}
|
||||
|
||||
avc = av_malloc_array(nb_output_files, sizeof(*avc));
|
||||
if (!avc)
|
||||
exit_program(1);
|
||||
return AVERROR(ENOMEM);
|
||||
for (i = 0, j = 0; i < nb_output_files; i++) {
|
||||
if (!strcmp(output_files[i]->ctx->oformat->name, "rtp")) {
|
||||
avc[j] = output_files[i]->ctx;
|
||||
if (!strcmp(output_files[i]->format->name, "rtp")) {
|
||||
avc[j] = mux_from_of(output_files[i])->fc;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
@@ -221,7 +511,7 @@ static int print_sdp(void)
|
||||
goto fail;
|
||||
|
||||
if (!sdp_filename) {
|
||||
printf("SDP:\n%s\n", sdp);
|
||||
av_log(NULL, AV_LOG_ERROR, "SDP:\n%s\n", sdp);
|
||||
fflush(stdout);
|
||||
} else {
|
||||
ret = avio_open2(&sdp_pb, sdp_filename, AVIO_FLAG_WRITE, &int_cb, NULL);
|
||||
@@ -235,34 +525,36 @@ static int print_sdp(void)
|
||||
av_freep(&sdp_filename);
|
||||
}
|
||||
|
||||
// SDP successfully written, allow muxer threads to start
|
||||
ret = 1;
|
||||
|
||||
fail:
|
||||
av_freep(&avc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* open the muxer when all the streams are initialized */
|
||||
int of_check_init(OutputFile *of)
|
||||
int mux_check_init(Muxer *mux)
|
||||
{
|
||||
OutputFile *of = &mux->of;
|
||||
AVFormatContext *fc = mux->fc;
|
||||
int ret, i;
|
||||
|
||||
for (i = 0; i < of->ctx->nb_streams; i++) {
|
||||
OutputStream *ost = output_streams[of->ost_index + i];
|
||||
for (i = 0; i < fc->nb_streams; i++) {
|
||||
OutputStream *ost = of->streams[i];
|
||||
if (!ost->initialized)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = avformat_write_header(of->ctx, &of->opts);
|
||||
ret = avformat_write_header(fc, &mux->opts);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Could not write header for output file #%d "
|
||||
"(incorrect codec parameters ?): %s\n",
|
||||
of->index, av_err2str(ret));
|
||||
av_log(mux, AV_LOG_ERROR, "Could not write header (incorrect codec "
|
||||
"parameters ?): %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
//assert_avoptions(of->opts);
|
||||
of->header_written = 1;
|
||||
mux->header_written = 1;
|
||||
|
||||
av_dump_format(of->ctx, of->index, of->ctx->url, 1);
|
||||
av_dump_format(fc, of->index, fc->url, 1);
|
||||
nb_output_dumped++;
|
||||
|
||||
if (sdp_filename || want_sdp) {
|
||||
@@ -270,62 +562,220 @@ int of_check_init(OutputFile *of)
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error writing the SDP.\n");
|
||||
return ret;
|
||||
} else if (ret == 1) {
|
||||
/* SDP is written only after all the muxers are ready, so now we
|
||||
* start ALL the threads */
|
||||
for (i = 0; i < nb_output_files; i++) {
|
||||
ret = thread_start(mux_from_of(output_files[i]));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = thread_start(mux_from_of(of));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* flush the muxing queues */
|
||||
for (i = 0; i < of->ctx->nb_streams; i++) {
|
||||
OutputStream *ost = output_streams[of->ost_index + i];
|
||||
AVPacket *pkt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* try to improve muxing time_base (only possible if nothing has been written yet) */
|
||||
if (!av_fifo_can_read(ost->muxing_queue))
|
||||
ost->mux_timebase = ost->st->time_base;
|
||||
static int bsf_init(MuxStream *ms)
|
||||
{
|
||||
OutputStream *ost = &ms->ost;
|
||||
AVBSFContext *ctx = ms->bsf_ctx;
|
||||
int ret;
|
||||
|
||||
while (av_fifo_read(ost->muxing_queue, &pkt, 1) >= 0) {
|
||||
ost->muxing_queue_data_size -= pkt->size;
|
||||
of_write_packet(of, pkt, ost, 1);
|
||||
av_packet_free(&pkt);
|
||||
if (!ctx)
|
||||
return 0;
|
||||
|
||||
ret = avcodec_parameters_copy(ctx->par_in, ost->st->codecpar);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ctx->time_base_in = ost->st->time_base;
|
||||
|
||||
ret = av_bsf_init(ctx);
|
||||
if (ret < 0) {
|
||||
av_log(ms, AV_LOG_ERROR, "Error initializing bitstream filter: %s\n",
|
||||
ctx->filter->name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = avcodec_parameters_copy(ost->st->codecpar, ctx->par_out);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ost->st->time_base = ctx->time_base_out;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int of_stream_init(OutputFile *of, OutputStream *ost)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
int ret;
|
||||
|
||||
if (ost->sq_idx_mux >= 0)
|
||||
sq_set_tb(mux->sq_mux, ost->sq_idx_mux, ost->mux_timebase);
|
||||
|
||||
/* initialize bitstream filters for the output stream
|
||||
* needs to be done here, because the codec id for streamcopy is not
|
||||
* known until now */
|
||||
ret = bsf_init(ms);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ost->initialized = 1;
|
||||
|
||||
return mux_check_init(mux);
|
||||
}
|
||||
|
||||
int of_write_trailer(OutputFile *of)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
AVFormatContext *fc = mux->fc;
|
||||
int ret;
|
||||
|
||||
if (!mux->tq) {
|
||||
av_log(mux, AV_LOG_ERROR,
|
||||
"Nothing was written into output file, because "
|
||||
"at least one of its streams received no packets.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
ret = thread_stop(mux);
|
||||
if (ret < 0)
|
||||
main_ffmpeg_return_code = ret;
|
||||
|
||||
ret = av_write_trailer(fc);
|
||||
if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error writing trailer: %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
mux->last_filesize = filesize(fc->pb);
|
||||
|
||||
if (!(of->format->flags & AVFMT_NOFILE)) {
|
||||
ret = avio_closep(&fc->pb);
|
||||
if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error closing file: %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int of_write_trailer(OutputFile *of)
|
||||
static void ost_free(OutputStream **post)
|
||||
{
|
||||
int ret;
|
||||
OutputStream *ost = *post;
|
||||
MuxStream *ms;
|
||||
|
||||
if (!of->header_written) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Nothing was written into output file %d (%s), because "
|
||||
"at least one of its streams received no packets.\n",
|
||||
of->index, of->ctx->url);
|
||||
return AVERROR(EINVAL);
|
||||
if (!ost)
|
||||
return;
|
||||
ms = ms_from_ost(ost);
|
||||
|
||||
if (ost->logfile) {
|
||||
if (fclose(ost->logfile))
|
||||
av_log(ms, AV_LOG_ERROR,
|
||||
"Error closing logfile, loss of information possible: %s\n",
|
||||
av_err2str(AVERROR(errno)));
|
||||
ost->logfile = NULL;
|
||||
}
|
||||
|
||||
ret = av_write_trailer(of->ctx);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", of->ctx->url, av_err2str(ret));
|
||||
return ret;
|
||||
if (ms->muxing_queue) {
|
||||
AVPacket *pkt;
|
||||
while (av_fifo_read(ms->muxing_queue, &pkt, 1) >= 0)
|
||||
av_packet_free(&pkt);
|
||||
av_fifo_freep2(&ms->muxing_queue);
|
||||
}
|
||||
|
||||
return 0;
|
||||
av_bsf_free(&ms->bsf_ctx);
|
||||
|
||||
av_frame_free(&ost->filtered_frame);
|
||||
av_frame_free(&ost->sq_frame);
|
||||
av_frame_free(&ost->last_frame);
|
||||
av_packet_free(&ost->pkt);
|
||||
av_dict_free(&ost->encoder_opts);
|
||||
|
||||
av_freep(&ost->kf.pts);
|
||||
av_expr_free(ost->kf.pexpr);
|
||||
|
||||
av_freep(&ost->avfilter);
|
||||
av_freep(&ost->logfile_prefix);
|
||||
av_freep(&ost->apad);
|
||||
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
av_freep(&ost->audio_channels_map);
|
||||
ost->audio_channels_mapped = 0;
|
||||
#endif
|
||||
|
||||
av_dict_free(&ost->sws_dict);
|
||||
av_dict_free(&ost->swr_opts);
|
||||
|
||||
if (ost->enc_ctx)
|
||||
av_freep(&ost->enc_ctx->stats_in);
|
||||
avcodec_free_context(&ost->enc_ctx);
|
||||
|
||||
for (int i = 0; i < ost->enc_stats_pre.nb_components; i++)
|
||||
av_freep(&ost->enc_stats_pre.components[i].str);
|
||||
av_freep(&ost->enc_stats_pre.components);
|
||||
|
||||
for (int i = 0; i < ost->enc_stats_post.nb_components; i++)
|
||||
av_freep(&ost->enc_stats_post.components[i].str);
|
||||
av_freep(&ost->enc_stats_post.components);
|
||||
|
||||
for (int i = 0; i < ms->stats.nb_components; i++)
|
||||
av_freep(&ms->stats.components[i].str);
|
||||
av_freep(&ms->stats.components);
|
||||
|
||||
av_freep(post);
|
||||
}
|
||||
|
||||
static void fc_close(AVFormatContext **pfc)
|
||||
{
|
||||
AVFormatContext *fc = *pfc;
|
||||
|
||||
if (!fc)
|
||||
return;
|
||||
|
||||
if (!(fc->oformat->flags & AVFMT_NOFILE))
|
||||
avio_closep(&fc->pb);
|
||||
avformat_free_context(fc);
|
||||
|
||||
*pfc = NULL;
|
||||
}
|
||||
|
||||
void of_close(OutputFile **pof)
|
||||
{
|
||||
OutputFile *of = *pof;
|
||||
AVFormatContext *s;
|
||||
Muxer *mux;
|
||||
|
||||
if (!of)
|
||||
return;
|
||||
mux = mux_from_of(of);
|
||||
|
||||
s = of->ctx;
|
||||
if (s && s->oformat && !(s->oformat->flags & AVFMT_NOFILE))
|
||||
avio_closep(&s->pb);
|
||||
avformat_free_context(s);
|
||||
av_dict_free(&of->opts);
|
||||
thread_stop(mux);
|
||||
|
||||
sq_free(&of->sq_encode);
|
||||
sq_free(&mux->sq_mux);
|
||||
|
||||
for (int i = 0; i < of->nb_streams; i++)
|
||||
ost_free(&of->streams[i]);
|
||||
av_freep(&of->streams);
|
||||
|
||||
av_dict_free(&mux->opts);
|
||||
|
||||
av_packet_free(&mux->sq_pkt);
|
||||
|
||||
fc_close(&mux->fc);
|
||||
|
||||
av_freep(pof);
|
||||
}
|
||||
|
||||
int64_t of_filesize(OutputFile *of)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
return atomic_load(&mux->last_filesize);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Muxer internal APIs - should not be included outside of ffmpeg_mux*
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of ffmpeg_mux.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
* - want_sdp made thread-local
|
||||
* - EncStatsFile declaration migrated from ffmpeg_mux_init.c
|
||||
* - WARN_MULTIPLE_OPT_USAGE, MATCH_PER_STREAM_OPT, MATCH_PER_TYPE_OPT, SPECIFIER_OPT_FMT declarations migrated from
|
||||
* ffmpeg.h
|
||||
* - ms_from_ost migrated to ffmpeg_mux.c
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_FFMPEG_MUX_H
|
||||
#define FFTOOLS_FFMPEG_MUX_H
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/dict.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#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)\
|
||||
{\
|
||||
char namestr[128] = "";\
|
||||
const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
|
||||
for (int _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);\
|
||||
}
|
||||
|
||||
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
|
||||
{\
|
||||
int _ret, _matches = 0;\
|
||||
SpecifierOpt *so;\
|
||||
for (int _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);\
|
||||
}
|
||||
|
||||
#define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
|
||||
{\
|
||||
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;\
|
||||
}\
|
||||
}
|
||||
|
||||
typedef struct MuxStream {
|
||||
OutputStream ost;
|
||||
|
||||
// name used for logging
|
||||
char log_name[32];
|
||||
|
||||
/* the packets are buffered here until the muxer is ready to be initialized */
|
||||
AVFifo *muxing_queue;
|
||||
|
||||
AVBSFContext *bsf_ctx;
|
||||
|
||||
EncStats stats;
|
||||
|
||||
int64_t max_frames;
|
||||
|
||||
/*
|
||||
* The size of the AVPackets' buffers in queue.
|
||||
* Updated when a packet is either pushed or pulled from the queue.
|
||||
*/
|
||||
size_t muxing_queue_data_size;
|
||||
|
||||
int max_muxing_queue_size;
|
||||
|
||||
/* Threshold after which max_muxing_queue_size will be in effect */
|
||||
size_t muxing_queue_data_threshold;
|
||||
|
||||
/* dts of the last packet sent to the muxer, in the stream timebase
|
||||
* used for making up missing dts values */
|
||||
int64_t last_mux_dts;
|
||||
} MuxStream;
|
||||
|
||||
typedef struct Muxer {
|
||||
OutputFile of;
|
||||
|
||||
// name used for logging
|
||||
char log_name[32];
|
||||
|
||||
AVFormatContext *fc;
|
||||
|
||||
pthread_t thread;
|
||||
ThreadQueue *tq;
|
||||
|
||||
AVDictionary *opts;
|
||||
|
||||
int thread_queue_size;
|
||||
|
||||
/* filesize limit expressed in bytes */
|
||||
int64_t limit_filesize;
|
||||
atomic_int_least64_t last_filesize;
|
||||
int header_written;
|
||||
|
||||
SyncQueue *sq_mux;
|
||||
AVPacket *sq_pkt;
|
||||
} Muxer;
|
||||
|
||||
typedef struct EncStatsFile {
|
||||
char *path;
|
||||
AVIOContext *io;
|
||||
} EncStatsFile;
|
||||
|
||||
/* whether we want to print an SDP, set in of_open() */
|
||||
extern __thread int want_sdp;
|
||||
|
||||
int mux_check_init(Muxer *mux);
|
||||
|
||||
#endif /* FFTOOLS_FFMPEG_MUX_H */
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2010 Stefano Sabatini
|
||||
* Copyright (c) 2020 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2020-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -29,6 +30,13 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -52,9 +60,11 @@
|
||||
#include "libavutil/ffversion.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavutil/ambient_viewing_environment.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/bprint.h"
|
||||
@@ -163,6 +173,8 @@ typedef struct ReadInterval {
|
||||
__thread ReadInterval *read_intervals;
|
||||
__thread int read_intervals_nb = 0;
|
||||
|
||||
__thread int find_stream_info = 1;
|
||||
|
||||
/* section structure definition */
|
||||
|
||||
#define SECTION_MAX_NB_CHILDREN 10
|
||||
@@ -626,6 +638,7 @@ static inline void writer_put_str_printf(WriterContext *wctx, const char *str)
|
||||
static inline void writer_printf_printf(WriterContext *wctx, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
av_vlog(NULL, AV_LOG_STDERR, fmt, ap);
|
||||
va_end(ap);
|
||||
@@ -671,7 +684,7 @@ static int writer_open(WriterContext **wctx, const Writer *writer, const char *a
|
||||
goto fail;
|
||||
}
|
||||
|
||||
while ((opt = av_dict_get(opts, "", opt, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((opt = av_dict_iterate(opts, opt))) {
|
||||
if ((ret = av_opt_set(*wctx, opt->key, opt->value, AV_OPT_SEARCH_CHILDREN)) < 0) {
|
||||
av_log(*wctx, AV_LOG_ERROR, "Failed to set option '%s' with value '%s' provided to writer context\n",
|
||||
opt->key, opt->value);
|
||||
@@ -1907,12 +1920,14 @@ static void writer_register_all(void)
|
||||
writer_print_string(w, k, pbuf.str, 0); \
|
||||
} while (0)
|
||||
|
||||
#define print_list_fmt(k, f, n, ...) do { \
|
||||
#define print_list_fmt(k, f, n, m, ...) do { \
|
||||
av_bprint_clear(&pbuf); \
|
||||
for (int idx = 0; idx < n; idx++) { \
|
||||
if (idx > 0) \
|
||||
av_bprint_chars(&pbuf, ' ', 1); \
|
||||
av_bprintf(&pbuf, f, __VA_ARGS__); \
|
||||
for (int idx2 = 0; idx2 < m; idx2++) { \
|
||||
if (idx > 0 || idx2 > 0) \
|
||||
av_bprint_chars(&pbuf, ' ', 1); \
|
||||
av_bprintf(&pbuf, f, __VA_ARGS__); \
|
||||
} \
|
||||
} \
|
||||
writer_print_string(w, k, pbuf.str, 0); \
|
||||
} while (0)
|
||||
@@ -1953,7 +1968,7 @@ static inline int show_tags(WriterContext *w, AVDictionary *tags, int section_id
|
||||
return 0;
|
||||
writer_print_section_header(w, section_id);
|
||||
|
||||
while ((tag = av_dict_get(tags, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((tag = av_dict_iterate(tags, tag))) {
|
||||
if ((ret = print_str_validate(tag->key, tag->value)) < 0)
|
||||
break;
|
||||
}
|
||||
@@ -2023,7 +2038,7 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
const AVDOVIReshapingCurve *curve = &mapping->curves[c];
|
||||
writer_print_section_header(w, SECTION_ID_FRAME_SIDE_DATA_COMPONENT);
|
||||
|
||||
print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, curve->pivots[idx]);
|
||||
print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, 1, curve->pivots[idx]);
|
||||
|
||||
writer_print_section_header(w, SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST);
|
||||
for (int i = 0; i < curve->num_pivots - 1; i++) {
|
||||
@@ -2035,7 +2050,7 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_str("mapping_idc_name", "polynomial");
|
||||
print_int("poly_order", curve->poly_order[i]);
|
||||
print_list_fmt("poly_coef", "%"PRIi64,
|
||||
curve->poly_order[i] + 1,
|
||||
curve->poly_order[i] + 1, 1,
|
||||
curve->poly_coef[i][idx]);
|
||||
break;
|
||||
case AV_DOVI_MAPPING_MMR:
|
||||
@@ -2043,8 +2058,8 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_int("mmr_order", curve->mmr_order[i]);
|
||||
print_int("mmr_constant", curve->mmr_constant[i]);
|
||||
print_list_fmt("mmr_coef", "%"PRIi64,
|
||||
curve->mmr_order[i] * 7,
|
||||
curve->mmr_coef[i][0][idx]);
|
||||
curve->mmr_order[i], 7,
|
||||
curve->mmr_coef[i][idx][idx2]);
|
||||
break;
|
||||
default:
|
||||
print_str("mapping_idc_name", "unknown");
|
||||
@@ -2082,15 +2097,15 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_int("dm_metadata_id", color->dm_metadata_id);
|
||||
print_int("scene_refresh_flag", color->scene_refresh_flag);
|
||||
print_list_fmt("ycc_to_rgb_matrix", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_matrix),
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_matrix), 1,
|
||||
color->ycc_to_rgb_matrix[idx].num,
|
||||
color->ycc_to_rgb_matrix[idx].den);
|
||||
print_list_fmt("ycc_to_rgb_offset", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_offset),
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_offset), 1,
|
||||
color->ycc_to_rgb_offset[idx].num,
|
||||
color->ycc_to_rgb_offset[idx].den);
|
||||
print_list_fmt("rgb_to_lms_matrix", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->rgb_to_lms_matrix),
|
||||
FF_ARRAY_ELEMS(color->rgb_to_lms_matrix), 1,
|
||||
color->rgb_to_lms_matrix[idx].num,
|
||||
color->rgb_to_lms_matrix[idx].den);
|
||||
print_int("signal_eotf", color->signal_eotf);
|
||||
@@ -2276,6 +2291,17 @@ static void print_dynamic_hdr_vivid(WriterContext *w, const AVDynamicHDRVivid *m
|
||||
}
|
||||
}
|
||||
|
||||
static void print_ambient_viewing_environment(WriterContext *w,
|
||||
const AVAmbientViewingEnvironment *env)
|
||||
{
|
||||
if (!env)
|
||||
return;
|
||||
|
||||
print_q("ambient_illuminance", env->ambient_illuminance, '/');
|
||||
print_q("ambient_light_x", env->ambient_light_x, '/');
|
||||
print_q("ambient_light_y", env->ambient_light_y, '/');
|
||||
}
|
||||
|
||||
static void print_pkt_side_data(WriterContext *w,
|
||||
AVCodecParameters *par,
|
||||
const AVPacketSideData *side_data,
|
||||
@@ -2293,8 +2319,11 @@ static void print_pkt_side_data(WriterContext *w,
|
||||
writer_print_section_header(w, id_data);
|
||||
print_str("side_data_type", name ? name : "unknown");
|
||||
if (sd->type == AV_PKT_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
|
||||
double rotation = av_display_rotation_get((int32_t *)sd->data);
|
||||
if (isnan(rotation))
|
||||
rotation = 0;
|
||||
writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
|
||||
print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
|
||||
print_int("rotation", rotation);
|
||||
} else if (sd->type == AV_PKT_DATA_STEREO3D) {
|
||||
const AVStereo3D *stereo = (AVStereo3D *)sd->data;
|
||||
print_str("type", av_stereo3d_type_name(stereo->type));
|
||||
@@ -2506,8 +2535,12 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
|
||||
print_val("size", pkt->size, unit_byte_str);
|
||||
if (pkt->pos != -1) print_fmt ("pos", "%"PRId64, pkt->pos);
|
||||
else print_str_opt("pos", "N/A");
|
||||
print_fmt("flags", "%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_');
|
||||
print_fmt("flags", "%c%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_CORRUPT ? 'C' : '_');
|
||||
if (do_show_data)
|
||||
writer_print_data(w, "data", pkt->data, pkt->size);
|
||||
writer_print_data_hash(w, "data_hash", pkt->data, pkt->size);
|
||||
|
||||
if (pkt->side_data_elems) {
|
||||
size_t size;
|
||||
@@ -2526,9 +2559,6 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
|
||||
SECTION_ID_PACKET_SIDE_DATA);
|
||||
}
|
||||
|
||||
if (do_show_data)
|
||||
writer_print_data(w, "data", pkt->data, pkt->size);
|
||||
writer_print_data_hash(w, "data_hash", pkt->data, pkt->size);
|
||||
writer_print_section_footer(w);
|
||||
|
||||
av_bprint_finalize(&pbuf, NULL);
|
||||
@@ -2581,8 +2611,14 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
|
||||
print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
|
||||
print_time("best_effort_timestamp_time", frame->best_effort_timestamp, &stream->time_base);
|
||||
#if LIBAVUTIL_VERSION_MAJOR < 59
|
||||
AV_NOWARN_DEPRECATED(
|
||||
print_duration_ts ("pkt_duration", frame->pkt_duration);
|
||||
print_duration_time("pkt_duration_time", frame->pkt_duration, &stream->time_base);
|
||||
)
|
||||
#endif
|
||||
print_duration_ts ("duration", frame->duration);
|
||||
print_duration_time("duration_time", frame->duration, &stream->time_base);
|
||||
if (frame->pkt_pos != -1) print_fmt ("pkt_pos", "%"PRId64, frame->pkt_pos);
|
||||
else print_str_opt("pkt_pos", "N/A");
|
||||
if (frame->pkt_size != -1) print_val ("pkt_size", frame->pkt_size, unit_byte_str);
|
||||
@@ -2604,8 +2640,12 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
print_str_opt("sample_aspect_ratio", "N/A");
|
||||
}
|
||||
print_fmt("pict_type", "%c", av_get_picture_type_char(frame->pict_type));
|
||||
#if LIBAVUTIL_VERSION_MAJOR < 59
|
||||
AV_NOWARN_DEPRECATED(
|
||||
print_int("coded_picture_number", frame->coded_picture_number);
|
||||
print_int("display_picture_number", frame->display_picture_number);
|
||||
)
|
||||
#endif
|
||||
print_int("interlaced_frame", frame->interlaced_frame);
|
||||
print_int("top_field_first", frame->top_field_first);
|
||||
print_int("repeat_pict", frame->repeat_pict);
|
||||
@@ -2644,8 +2684,11 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
name = av_frame_side_data_name(sd->type);
|
||||
print_str("side_data_type", name ? name : "unknown");
|
||||
if (sd->type == AV_FRAME_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
|
||||
double rotation = av_display_rotation_get((int32_t *)sd->data);
|
||||
if (isnan(rotation))
|
||||
rotation = 0;
|
||||
writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
|
||||
print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
|
||||
print_int("rotation", rotation);
|
||||
} else if (sd->type == AV_FRAME_DATA_AFD && sd->size > 0) {
|
||||
print_int("active_format", *sd->data);
|
||||
} else if (sd->type == AV_FRAME_DATA_GOP_TIMECODE && sd->size >= 8) {
|
||||
@@ -2700,6 +2743,9 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
} else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_VIVID) {
|
||||
AVDynamicHDRVivid *metadata = (AVDynamicHDRVivid *)sd->data;
|
||||
print_dynamic_hdr_vivid(w, metadata);
|
||||
} else if (sd->type == AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT) {
|
||||
print_ambient_viewing_environment(
|
||||
w, (const AVAmbientViewingEnvironment *)sd->data);
|
||||
}
|
||||
writer_print_section_footer(w);
|
||||
}
|
||||
@@ -2714,7 +2760,7 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
|
||||
static av_always_inline int process_frame(WriterContext *w,
|
||||
InputFile *ifile,
|
||||
AVFrame *frame, AVPacket *pkt,
|
||||
AVFrame *frame, const AVPacket *pkt,
|
||||
int *packet_new)
|
||||
{
|
||||
AVFormatContext *fmt_ctx = ifile->fmt_ctx;
|
||||
@@ -2858,9 +2904,10 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
|
||||
}
|
||||
if (selected_streams[pkt->stream_index]) {
|
||||
AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
|
||||
int64_t pts = pkt->pts != AV_NOPTS_VALUE ? pkt->pts : pkt->dts;
|
||||
|
||||
if (pkt->pts != AV_NOPTS_VALUE)
|
||||
*cur_ts = av_rescale_q(pkt->pts, tb, AV_TIME_BASE_Q);
|
||||
if (pts != AV_NOPTS_VALUE)
|
||||
*cur_ts = av_rescale_q(pts, tb, AV_TIME_BASE_Q);
|
||||
|
||||
if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
|
||||
start = *cur_ts;
|
||||
@@ -2894,7 +2941,7 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
|
||||
}
|
||||
av_packet_unref(pkt);
|
||||
//Flush remaining frames that are cached in the decoder
|
||||
for (i = 0; i < fmt_ctx->nb_streams; i++) {
|
||||
for (i = 0; i < ifile->nb_streams; i++) {
|
||||
pkt->stream_index = i;
|
||||
if (do_read_frames) {
|
||||
while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
|
||||
@@ -3052,6 +3099,8 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
|
||||
}
|
||||
|
||||
print_int("bits_per_sample", av_get_bits_per_sample(par->codec_id));
|
||||
|
||||
print_int("initial_padding", par->initial_padding);
|
||||
break;
|
||||
|
||||
case AVMEDIA_TYPE_SUBTITLE:
|
||||
@@ -3278,15 +3327,9 @@ static int show_format(WriterContext *w, InputFile *ifile)
|
||||
|
||||
static void show_error(WriterContext *w, int err)
|
||||
{
|
||||
char errbuf[128];
|
||||
const char *errbuf_ptr = errbuf;
|
||||
|
||||
if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
|
||||
errbuf_ptr = strerror(AVUNERROR(err));
|
||||
|
||||
writer_print_section_header(w, SECTION_ID_ERROR);
|
||||
print_int("code", err);
|
||||
print_str("string", errbuf_ptr);
|
||||
print_str("string", av_err2str(err));
|
||||
writer_print_section_footer(w);
|
||||
}
|
||||
|
||||
@@ -3299,10 +3342,8 @@ static int open_input_file(InputFile *ifile, const char *filename,
|
||||
int scan_all_pmts_set = 0;
|
||||
|
||||
fmt_ctx = avformat_alloc_context();
|
||||
if (!fmt_ctx) {
|
||||
print_error(filename, AVERROR(ENOMEM));
|
||||
exit_program(1);
|
||||
}
|
||||
if (!fmt_ctx)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
if (!av_dict_get(format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) {
|
||||
av_dict_set(&format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE);
|
||||
@@ -3320,7 +3361,7 @@ static int open_input_file(InputFile *ifile, const char *filename,
|
||||
ifile->fmt_ctx = fmt_ctx;
|
||||
if (scan_all_pmts_set)
|
||||
av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
|
||||
while ((t = av_dict_get(format_opts, "", t, AV_DICT_IGNORE_SUFFIX)))
|
||||
while ((t = av_dict_iterate(format_opts, t)))
|
||||
av_log(NULL, AV_LOG_WARNING, "Option %s skipped - not known to demuxer.\n", t->key);
|
||||
|
||||
if (find_stream_info) {
|
||||
@@ -3718,7 +3759,7 @@ static void opt_input_file(void *optctx, const char *arg)
|
||||
exit_program(1);
|
||||
}
|
||||
if (!strcmp(arg, "-"))
|
||||
arg = "pipe:";
|
||||
arg = "fd:";
|
||||
input_filename = arg;
|
||||
}
|
||||
|
||||
@@ -3737,7 +3778,7 @@ static void opt_output_file(void *optctx, const char *arg)
|
||||
exit_program(1);
|
||||
}
|
||||
if (!strcmp(arg, "-"))
|
||||
arg = "pipe:";
|
||||
arg = "fd:";
|
||||
output_filename = arg;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of objpool.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/mem.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
|
||||
struct ObjPool {
|
||||
void *pool[32];
|
||||
unsigned int pool_count;
|
||||
|
||||
ObjPoolCBAlloc alloc;
|
||||
ObjPoolCBReset reset;
|
||||
ObjPoolCBFree free;
|
||||
};
|
||||
|
||||
ObjPool *objpool_alloc(ObjPoolCBAlloc cb_alloc, ObjPoolCBReset cb_reset,
|
||||
ObjPoolCBFree cb_free)
|
||||
{
|
||||
ObjPool *op = av_mallocz(sizeof(*op));
|
||||
|
||||
if (!op)
|
||||
return NULL;
|
||||
|
||||
op->alloc = cb_alloc;
|
||||
op->reset = cb_reset;
|
||||
op->free = cb_free;
|
||||
|
||||
return op;
|
||||
}
|
||||
|
||||
void objpool_free(ObjPool **pop)
|
||||
{
|
||||
ObjPool *op = *pop;
|
||||
|
||||
if (!op)
|
||||
return;
|
||||
|
||||
for (unsigned int i = 0; i < op->pool_count; i++)
|
||||
op->free(&op->pool[i]);
|
||||
|
||||
av_freep(pop);
|
||||
}
|
||||
|
||||
int objpool_get(ObjPool *op, void **obj)
|
||||
{
|
||||
if (op->pool_count) {
|
||||
*obj = op->pool[--op->pool_count];
|
||||
op->pool[op->pool_count] = NULL;
|
||||
} else
|
||||
*obj = op->alloc();
|
||||
|
||||
return *obj ? 0 : AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
void objpool_release(ObjPool *op, void **obj)
|
||||
{
|
||||
if (!*obj)
|
||||
return;
|
||||
|
||||
op->reset(*obj);
|
||||
|
||||
if (op->pool_count < FF_ARRAY_ELEMS(op->pool))
|
||||
op->pool[op->pool_count++] = *obj;
|
||||
else
|
||||
op->free(obj);
|
||||
|
||||
*obj = NULL;
|
||||
}
|
||||
|
||||
static void *alloc_packet(void)
|
||||
{
|
||||
return av_packet_alloc();
|
||||
}
|
||||
static void *alloc_frame(void)
|
||||
{
|
||||
return av_frame_alloc();
|
||||
}
|
||||
|
||||
static void reset_packet(void *obj)
|
||||
{
|
||||
av_packet_unref(obj);
|
||||
}
|
||||
static void reset_frame(void *obj)
|
||||
{
|
||||
av_frame_unref(obj);
|
||||
}
|
||||
|
||||
static void free_packet(void **obj)
|
||||
{
|
||||
AVPacket *pkt = *obj;
|
||||
av_packet_free(&pkt);
|
||||
*obj = NULL;
|
||||
}
|
||||
static void free_frame(void **obj)
|
||||
{
|
||||
AVFrame *frame = *obj;
|
||||
av_frame_free(&frame);
|
||||
*obj = NULL;
|
||||
}
|
||||
|
||||
ObjPool *objpool_alloc_packets(void)
|
||||
{
|
||||
return objpool_alloc(alloc_packet, reset_packet, free_packet);
|
||||
}
|
||||
ObjPool *objpool_alloc_frames(void)
|
||||
{
|
||||
return objpool_alloc(alloc_frame, reset_frame, free_frame);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of objpool.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_OBJPOOL_H
|
||||
#define FFTOOLS_OBJPOOL_H
|
||||
|
||||
typedef struct ObjPool ObjPool;
|
||||
|
||||
typedef void* (*ObjPoolCBAlloc)(void);
|
||||
typedef void (*ObjPoolCBReset)(void *);
|
||||
typedef void (*ObjPoolCBFree)(void **);
|
||||
|
||||
void objpool_free(ObjPool **op);
|
||||
ObjPool *objpool_alloc(ObjPoolCBAlloc cb_alloc, ObjPoolCBReset cb_reset,
|
||||
ObjPoolCBFree cb_free);
|
||||
ObjPool *objpool_alloc_packets(void);
|
||||
ObjPool *objpool_alloc_frames(void);
|
||||
|
||||
int objpool_get(ObjPool *op, void **obj);
|
||||
void objpool_release(ObjPool *op, void **obj);
|
||||
|
||||
#endif // FFTOOLS_OBJPOOL_H
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Option handlers shared between the tools.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -24,6 +25,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop the ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - time field in report_callback updated as double
|
||||
*
|
||||
* ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -88,7 +95,7 @@ static __thread FILE *report_file = NULL;
|
||||
static __thread int report_file_level = AV_LOG_DEBUG;
|
||||
|
||||
extern void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs);
|
||||
extern void (*report_callback)(int, float, float, int64_t, int, double, double);
|
||||
extern void (*report_callback)(int, float, float, int64_t, double, double, double);
|
||||
extern __thread char *program_name;
|
||||
|
||||
int show_license(void *optctx, const char *opt, const char *arg)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Option handlers shared between the tools.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,462 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of sync_queue.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
|
||||
typedef struct SyncQueueStream {
|
||||
AVFifo *fifo;
|
||||
AVRational tb;
|
||||
|
||||
/* stream head: largest timestamp seen */
|
||||
int64_t head_ts;
|
||||
int limiting;
|
||||
/* no more frames will be sent for this stream */
|
||||
int finished;
|
||||
|
||||
uint64_t frames_sent;
|
||||
uint64_t frames_max;
|
||||
} SyncQueueStream;
|
||||
|
||||
struct SyncQueue {
|
||||
enum SyncQueueType type;
|
||||
|
||||
/* no more frames will be sent for any stream */
|
||||
int finished;
|
||||
/* sync head: the stream with the _smallest_ head timestamp
|
||||
* this stream determines which frames can be output */
|
||||
int head_stream;
|
||||
/* the finished stream with the smallest finish timestamp or -1 */
|
||||
int head_finished_stream;
|
||||
|
||||
// maximum buffering duration in microseconds
|
||||
int64_t buf_size_us;
|
||||
|
||||
SyncQueueStream *streams;
|
||||
unsigned int nb_streams;
|
||||
|
||||
// pool of preallocated frames to avoid constant allocations
|
||||
ObjPool *pool;
|
||||
};
|
||||
|
||||
static void frame_move(const SyncQueue *sq, SyncQueueFrame dst,
|
||||
SyncQueueFrame src)
|
||||
{
|
||||
if (sq->type == SYNC_QUEUE_PACKETS)
|
||||
av_packet_move_ref(dst.p, src.p);
|
||||
else
|
||||
av_frame_move_ref(dst.f, src.f);
|
||||
}
|
||||
|
||||
static int64_t frame_ts(const SyncQueue *sq, SyncQueueFrame frame)
|
||||
{
|
||||
return (sq->type == SYNC_QUEUE_PACKETS) ?
|
||||
frame.p->pts + frame.p->duration :
|
||||
frame.f->pts + frame.f->duration;
|
||||
}
|
||||
|
||||
static int frame_null(const SyncQueue *sq, SyncQueueFrame frame)
|
||||
{
|
||||
return (sq->type == SYNC_QUEUE_PACKETS) ? (frame.p == NULL) : (frame.f == NULL);
|
||||
}
|
||||
|
||||
static void finish_stream(SyncQueue *sq, unsigned int stream_idx)
|
||||
{
|
||||
SyncQueueStream *st = &sq->streams[stream_idx];
|
||||
|
||||
st->finished = 1;
|
||||
|
||||
if (st->limiting && st->head_ts != AV_NOPTS_VALUE) {
|
||||
/* check if this stream is the new finished head */
|
||||
if (sq->head_finished_stream < 0 ||
|
||||
av_compare_ts(st->head_ts, st->tb,
|
||||
sq->streams[sq->head_finished_stream].head_ts,
|
||||
sq->streams[sq->head_finished_stream].tb) < 0) {
|
||||
sq->head_finished_stream = stream_idx;
|
||||
}
|
||||
|
||||
/* mark as finished all streams that should no longer receive new frames,
|
||||
* due to them being ahead of some finished stream */
|
||||
st = &sq->streams[sq->head_finished_stream];
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st1 = &sq->streams[i];
|
||||
if (st != st1 && st1->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(st->head_ts, st->tb, st1->head_ts, st1->tb) <= 0)
|
||||
st1->finished = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* mark the whole queue as finished if all streams are finished */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
if (!sq->streams[i].finished)
|
||||
return;
|
||||
}
|
||||
sq->finished = 1;
|
||||
}
|
||||
|
||||
static void queue_head_update(SyncQueue *sq)
|
||||
{
|
||||
if (sq->head_stream < 0) {
|
||||
/* wait for one timestamp in each stream before determining
|
||||
* the queue head */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st = &sq->streams[i];
|
||||
if (st->limiting && st->head_ts == AV_NOPTS_VALUE)
|
||||
return;
|
||||
}
|
||||
|
||||
// placeholder value, correct one will be found below
|
||||
sq->head_stream = 0;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st_head = &sq->streams[sq->head_stream];
|
||||
SyncQueueStream *st_other = &sq->streams[i];
|
||||
if (st_other->limiting && st_other->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(st_other->head_ts, st_other->tb,
|
||||
st_head->head_ts, st_head->tb) < 0)
|
||||
sq->head_stream = i;
|
||||
}
|
||||
}
|
||||
|
||||
/* update this stream's head timestamp */
|
||||
static void stream_update_ts(SyncQueue *sq, unsigned int stream_idx, int64_t ts)
|
||||
{
|
||||
SyncQueueStream *st = &sq->streams[stream_idx];
|
||||
|
||||
if (ts == AV_NOPTS_VALUE ||
|
||||
(st->head_ts != AV_NOPTS_VALUE && st->head_ts >= ts))
|
||||
return;
|
||||
|
||||
st->head_ts = ts;
|
||||
|
||||
/* if this stream is now ahead of some finished stream, then
|
||||
* this stream is also finished */
|
||||
if (sq->head_finished_stream >= 0 &&
|
||||
av_compare_ts(sq->streams[sq->head_finished_stream].head_ts,
|
||||
sq->streams[sq->head_finished_stream].tb,
|
||||
ts, st->tb) <= 0)
|
||||
finish_stream(sq, stream_idx);
|
||||
|
||||
/* update the overall head timestamp if it could have changed */
|
||||
if (st->limiting &&
|
||||
(sq->head_stream < 0 || sq->head_stream == stream_idx))
|
||||
queue_head_update(sq);
|
||||
}
|
||||
|
||||
/* If the queue for the given stream (or all streams when stream_idx=-1)
|
||||
* is overflowing, trigger a fake heartbeat on lagging streams.
|
||||
*
|
||||
* @return 1 if heartbeat triggered, 0 otherwise
|
||||
*/
|
||||
static int overflow_heartbeat(SyncQueue *sq, int stream_idx)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
SyncQueueFrame frame;
|
||||
int64_t tail_ts = AV_NOPTS_VALUE;
|
||||
|
||||
/* if no stream specified, pick the one that is most ahead */
|
||||
if (stream_idx < 0) {
|
||||
int64_t ts = AV_NOPTS_VALUE;
|
||||
|
||||
for (int i = 0; i < sq->nb_streams; i++) {
|
||||
st = &sq->streams[i];
|
||||
if (st->head_ts != AV_NOPTS_VALUE &&
|
||||
(ts == AV_NOPTS_VALUE ||
|
||||
av_compare_ts(ts, sq->streams[stream_idx].tb,
|
||||
st->head_ts, st->tb) < 0)) {
|
||||
ts = st->head_ts;
|
||||
stream_idx = i;
|
||||
}
|
||||
}
|
||||
/* no stream has a timestamp yet -> nothing to do */
|
||||
if (stream_idx < 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
/* get the chosen stream's tail timestamp */
|
||||
for (size_t i = 0; tail_ts == AV_NOPTS_VALUE &&
|
||||
av_fifo_peek(st->fifo, &frame, 1, i) >= 0; i++)
|
||||
tail_ts = frame_ts(sq, frame);
|
||||
|
||||
/* overflow triggers when the tail is over specified duration behind the head */
|
||||
if (tail_ts == AV_NOPTS_VALUE || tail_ts >= st->head_ts ||
|
||||
av_rescale_q(st->head_ts - tail_ts, st->tb, AV_TIME_BASE_Q) < sq->buf_size_us)
|
||||
return 0;
|
||||
|
||||
/* signal a fake timestamp for all streams that prevent tail_ts from being output */
|
||||
tail_ts++;
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st1 = &sq->streams[i];
|
||||
int64_t ts;
|
||||
|
||||
if (st == st1 || st1->finished ||
|
||||
(st1->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(tail_ts, st->tb, st1->head_ts, st1->tb) <= 0))
|
||||
continue;
|
||||
|
||||
ts = av_rescale_q(tail_ts, st->tb, st1->tb);
|
||||
if (st1->head_ts != AV_NOPTS_VALUE)
|
||||
ts = FFMAX(st1->head_ts + 1, ts);
|
||||
|
||||
stream_update_ts(sq, i, ts);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sq_send(SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
SyncQueueFrame dst;
|
||||
int64_t ts;
|
||||
int ret;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
av_assert0(st->tb.num > 0 && st->tb.den > 0);
|
||||
|
||||
if (frame_null(sq, frame)) {
|
||||
finish_stream(sq, stream_idx);
|
||||
return 0;
|
||||
}
|
||||
if (st->finished)
|
||||
return AVERROR_EOF;
|
||||
|
||||
ret = objpool_get(sq->pool, (void**)&dst);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
frame_move(sq, dst, frame);
|
||||
|
||||
ts = frame_ts(sq, dst);
|
||||
|
||||
ret = av_fifo_write(st->fifo, &dst, 1);
|
||||
if (ret < 0) {
|
||||
frame_move(sq, frame, dst);
|
||||
objpool_release(sq->pool, (void**)&dst);
|
||||
return ret;
|
||||
}
|
||||
|
||||
stream_update_ts(sq, stream_idx, ts);
|
||||
|
||||
st->frames_sent++;
|
||||
if (st->frames_sent >= st->frames_max)
|
||||
finish_stream(sq, stream_idx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int receive_for_stream(SyncQueue *sq, unsigned int stream_idx,
|
||||
SyncQueueFrame frame)
|
||||
{
|
||||
SyncQueueStream *st_head = sq->head_stream >= 0 ?
|
||||
&sq->streams[sq->head_stream] : NULL;
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
if (av_fifo_can_read(st->fifo)) {
|
||||
SyncQueueFrame peek;
|
||||
int64_t ts;
|
||||
int cmp = 1;
|
||||
|
||||
av_fifo_peek(st->fifo, &peek, 1, 0);
|
||||
ts = frame_ts(sq, peek);
|
||||
|
||||
/* check if this stream's tail timestamp does not overtake
|
||||
* the overall queue head */
|
||||
if (ts != AV_NOPTS_VALUE && st_head)
|
||||
cmp = av_compare_ts(ts, st->tb, st_head->head_ts, st_head->tb);
|
||||
|
||||
/* We can release frames that do not end after the queue head.
|
||||
* Frames with no timestamps are just passed through with no conditions.
|
||||
*/
|
||||
if (cmp <= 0 || ts == AV_NOPTS_VALUE) {
|
||||
frame_move(sq, frame, peek);
|
||||
objpool_release(sq->pool, (void**)&peek);
|
||||
av_fifo_drain2(st->fifo, 1);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return (sq->finished || (st->finished && !av_fifo_can_read(st->fifo))) ?
|
||||
AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
static int receive_internal(SyncQueue *sq, int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
int nb_eof = 0;
|
||||
int ret;
|
||||
|
||||
/* read a frame for a specific stream */
|
||||
if (stream_idx >= 0) {
|
||||
ret = receive_for_stream(sq, stream_idx, frame);
|
||||
return (ret < 0) ? ret : stream_idx;
|
||||
}
|
||||
|
||||
/* read a frame for any stream with available output */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
ret = receive_for_stream(sq, i, frame);
|
||||
if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) {
|
||||
nb_eof += (ret == AVERROR_EOF);
|
||||
continue;
|
||||
}
|
||||
return (ret < 0) ? ret : i;
|
||||
}
|
||||
|
||||
return (nb_eof == sq->nb_streams) ? AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
int sq_receive(SyncQueue *sq, int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
int ret = receive_internal(sq, stream_idx, frame);
|
||||
|
||||
/* try again if the queue overflowed and triggered a fake heartbeat
|
||||
* for lagging streams */
|
||||
if (ret == AVERROR(EAGAIN) && overflow_heartbeat(sq, stream_idx))
|
||||
ret = receive_internal(sq, stream_idx, frame);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int sq_add_stream(SyncQueue *sq, int limiting)
|
||||
{
|
||||
SyncQueueStream *tmp, *st;
|
||||
|
||||
tmp = av_realloc_array(sq->streams, sq->nb_streams + 1, sizeof(*sq->streams));
|
||||
if (!tmp)
|
||||
return AVERROR(ENOMEM);
|
||||
sq->streams = tmp;
|
||||
|
||||
st = &sq->streams[sq->nb_streams];
|
||||
memset(st, 0, sizeof(*st));
|
||||
|
||||
st->fifo = av_fifo_alloc2(1, sizeof(SyncQueueFrame), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!st->fifo)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
/* we set a valid default, so that a pathological stream that never
|
||||
* receives even a real timebase (and no frames) won't stall all other
|
||||
* streams forever; cf. overflow_heartbeat() */
|
||||
st->tb = (AVRational){ 1, 1 };
|
||||
st->head_ts = AV_NOPTS_VALUE;
|
||||
st->frames_max = UINT64_MAX;
|
||||
st->limiting = limiting;
|
||||
|
||||
return sq->nb_streams++;
|
||||
}
|
||||
|
||||
void sq_set_tb(SyncQueue *sq, unsigned int stream_idx, AVRational tb)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
av_assert0(!av_fifo_can_read(st->fifo));
|
||||
|
||||
if (st->head_ts != AV_NOPTS_VALUE)
|
||||
st->head_ts = av_rescale_q(st->head_ts, st->tb, tb);
|
||||
|
||||
st->tb = tb;
|
||||
}
|
||||
|
||||
void sq_limit_frames(SyncQueue *sq, unsigned int stream_idx, uint64_t frames)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
st->frames_max = frames;
|
||||
if (st->frames_sent >= st->frames_max)
|
||||
finish_stream(sq, stream_idx);
|
||||
}
|
||||
|
||||
SyncQueue *sq_alloc(enum SyncQueueType type, int64_t buf_size_us)
|
||||
{
|
||||
SyncQueue *sq = av_mallocz(sizeof(*sq));
|
||||
|
||||
if (!sq)
|
||||
return NULL;
|
||||
|
||||
sq->type = type;
|
||||
sq->buf_size_us = buf_size_us;
|
||||
|
||||
sq->head_stream = -1;
|
||||
sq->head_finished_stream = -1;
|
||||
|
||||
sq->pool = (type == SYNC_QUEUE_PACKETS) ? objpool_alloc_packets() :
|
||||
objpool_alloc_frames();
|
||||
if (!sq->pool) {
|
||||
av_freep(&sq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return sq;
|
||||
}
|
||||
|
||||
void sq_free(SyncQueue **psq)
|
||||
{
|
||||
SyncQueue *sq = *psq;
|
||||
|
||||
if (!sq)
|
||||
return;
|
||||
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueFrame frame;
|
||||
while (av_fifo_read(sq->streams[i].fifo, &frame, 1) >= 0)
|
||||
objpool_release(sq->pool, (void**)&frame);
|
||||
|
||||
av_fifo_freep2(&sq->streams[i].fifo);
|
||||
}
|
||||
|
||||
av_freep(&sq->streams);
|
||||
|
||||
objpool_free(&sq->pool);
|
||||
|
||||
av_freep(psq);
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of sync_queue.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_SYNC_QUEUE_H
|
||||
#define FFTOOLS_SYNC_QUEUE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/frame.h"
|
||||
|
||||
enum SyncQueueType {
|
||||
SYNC_QUEUE_PACKETS,
|
||||
SYNC_QUEUE_FRAMES,
|
||||
};
|
||||
|
||||
typedef union SyncQueueFrame {
|
||||
AVFrame *f;
|
||||
AVPacket *p;
|
||||
} SyncQueueFrame;
|
||||
|
||||
#define SQFRAME(frame) ((SyncQueueFrame){ .f = (frame) })
|
||||
#define SQPKT(pkt) ((SyncQueueFrame){ .p = (pkt) })
|
||||
|
||||
typedef struct SyncQueue SyncQueue;
|
||||
|
||||
/**
|
||||
* Allocate a sync queue of the given type.
|
||||
*
|
||||
* @param buf_size_us maximum duration that will be buffered in microseconds
|
||||
*/
|
||||
SyncQueue *sq_alloc(enum SyncQueueType type, int64_t buf_size_us);
|
||||
void sq_free(SyncQueue **sq);
|
||||
|
||||
/**
|
||||
* Add a new stream to the sync queue.
|
||||
*
|
||||
* @param limiting whether the stream is limiting, i.e. no other stream can be
|
||||
* longer than this one
|
||||
* @return
|
||||
* - a non-negative stream index on success
|
||||
* - a negative error code on error
|
||||
*/
|
||||
int sq_add_stream(SyncQueue *sq, int limiting);
|
||||
|
||||
/**
|
||||
* Set the timebase for the stream with index stream_idx. Should be called
|
||||
* before sending any frames for this stream.
|
||||
*/
|
||||
void sq_set_tb(SyncQueue *sq, unsigned int stream_idx, AVRational tb);
|
||||
|
||||
/**
|
||||
* Limit the number of output frames for stream with index stream_idx
|
||||
* to max_frames.
|
||||
*/
|
||||
void sq_limit_frames(SyncQueue *sq, unsigned int stream_idx,
|
||||
uint64_t max_frames);
|
||||
|
||||
/**
|
||||
* Submit a frame for the stream with index stream_idx.
|
||||
*
|
||||
* On success, the sync queue takes ownership of the frame and will reset the
|
||||
* contents of the supplied frame. On failure, the frame remains owned by the
|
||||
* caller.
|
||||
*
|
||||
* Sending a frame with NULL contents marks the stream as finished.
|
||||
*
|
||||
* @return
|
||||
* - 0 on success
|
||||
* - AVERROR_EOF when no more frames should be submitted for this stream
|
||||
* - another a negative error code on failure
|
||||
*/
|
||||
int sq_send(SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame);
|
||||
|
||||
/**
|
||||
* Read a frame from the queue.
|
||||
*
|
||||
* @param stream_idx index of the stream to read a frame for. May be -1, then
|
||||
* try to read a frame from any stream that is ready for
|
||||
* output.
|
||||
* @param frame output frame will be written here on success. The frame is owned
|
||||
* by the caller.
|
||||
*
|
||||
* @return
|
||||
* - a non-negative index of the stream to which the returned frame belongs
|
||||
* - AVERROR(EAGAIN) when more frames need to be submitted to the queue
|
||||
* - AVERROR_EOF when no more frames will be available for this stream (for any
|
||||
* stream if stream_idx is -1)
|
||||
* - another negative error code on failure
|
||||
*/
|
||||
int sq_receive(SyncQueue *sq, int stream_idx, SyncQueueFrame frame);
|
||||
|
||||
#endif // FFTOOLS_SYNC_QUEUE_H
|
||||
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of thread_queue.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
enum {
|
||||
FINISHED_SEND = (1 << 0),
|
||||
FINISHED_RECV = (1 << 1),
|
||||
};
|
||||
|
||||
typedef struct FifoElem {
|
||||
void *obj;
|
||||
unsigned int stream_idx;
|
||||
} FifoElem;
|
||||
|
||||
struct ThreadQueue {
|
||||
int *finished;
|
||||
unsigned int nb_streams;
|
||||
|
||||
AVFifo *fifo;
|
||||
|
||||
ObjPool *obj_pool;
|
||||
void (*obj_move)(void *dst, void *src);
|
||||
|
||||
pthread_mutex_t lock;
|
||||
pthread_cond_t cond;
|
||||
};
|
||||
|
||||
void tq_free(ThreadQueue **ptq)
|
||||
{
|
||||
ThreadQueue *tq = *ptq;
|
||||
|
||||
if (!tq)
|
||||
return;
|
||||
|
||||
if (tq->fifo) {
|
||||
FifoElem elem;
|
||||
while (av_fifo_read(tq->fifo, &elem, 1) >= 0)
|
||||
objpool_release(tq->obj_pool, &elem.obj);
|
||||
}
|
||||
av_fifo_freep2(&tq->fifo);
|
||||
|
||||
objpool_free(&tq->obj_pool);
|
||||
|
||||
av_freep(&tq->finished);
|
||||
|
||||
pthread_cond_destroy(&tq->cond);
|
||||
pthread_mutex_destroy(&tq->lock);
|
||||
|
||||
av_freep(ptq);
|
||||
}
|
||||
|
||||
ThreadQueue *tq_alloc(unsigned int nb_streams, size_t queue_size,
|
||||
ObjPool *obj_pool, void (*obj_move)(void *dst, void *src))
|
||||
{
|
||||
ThreadQueue *tq;
|
||||
int ret;
|
||||
|
||||
tq = av_mallocz(sizeof(*tq));
|
||||
if (!tq)
|
||||
return NULL;
|
||||
|
||||
ret = pthread_cond_init(&tq->cond, NULL);
|
||||
if (ret) {
|
||||
av_freep(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = pthread_mutex_init(&tq->lock, NULL);
|
||||
if (ret) {
|
||||
pthread_cond_destroy(&tq->cond);
|
||||
av_freep(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tq->finished = av_calloc(nb_streams, sizeof(*tq->finished));
|
||||
if (!tq->finished)
|
||||
goto fail;
|
||||
tq->nb_streams = nb_streams;
|
||||
|
||||
tq->fifo = av_fifo_alloc2(queue_size, sizeof(FifoElem), 0);
|
||||
if (!tq->fifo)
|
||||
goto fail;
|
||||
|
||||
tq->obj_pool = obj_pool;
|
||||
tq->obj_move = obj_move;
|
||||
|
||||
return tq;
|
||||
fail:
|
||||
tq_free(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int tq_send(ThreadQueue *tq, unsigned int stream_idx, void *data)
|
||||
{
|
||||
int *finished;
|
||||
int ret;
|
||||
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
finished = &tq->finished[stream_idx];
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
if (*finished & FINISHED_SEND) {
|
||||
ret = AVERROR(EINVAL);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
while (!(*finished & FINISHED_RECV) && !av_fifo_can_write(tq->fifo))
|
||||
pthread_cond_wait(&tq->cond, &tq->lock);
|
||||
|
||||
if (*finished & FINISHED_RECV) {
|
||||
ret = AVERROR_EOF;
|
||||
*finished |= FINISHED_SEND;
|
||||
} else {
|
||||
FifoElem elem = { .stream_idx = stream_idx };
|
||||
|
||||
ret = objpool_get(tq->obj_pool, &elem.obj);
|
||||
if (ret < 0)
|
||||
goto finish;
|
||||
|
||||
tq->obj_move(elem.obj, data);
|
||||
|
||||
ret = av_fifo_write(tq->fifo, &elem, 1);
|
||||
av_assert0(ret >= 0);
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
}
|
||||
|
||||
finish:
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int receive_locked(ThreadQueue *tq, int *stream_idx,
|
||||
void *data)
|
||||
{
|
||||
FifoElem elem;
|
||||
unsigned int nb_finished = 0;
|
||||
|
||||
if (av_fifo_read(tq->fifo, &elem, 1) >= 0) {
|
||||
tq->obj_move(data, elem.obj);
|
||||
objpool_release(tq->obj_pool, &elem.obj);
|
||||
*stream_idx = elem.stream_idx;
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < tq->nb_streams; i++) {
|
||||
if (!(tq->finished[i] & FINISHED_SEND))
|
||||
continue;
|
||||
|
||||
/* return EOF to the consumer at most once for each stream */
|
||||
if (!(tq->finished[i] & FINISHED_RECV)) {
|
||||
tq->finished[i] |= FINISHED_RECV;
|
||||
*stream_idx = i;
|
||||
return AVERROR_EOF;
|
||||
}
|
||||
|
||||
nb_finished++;
|
||||
}
|
||||
|
||||
return nb_finished == tq->nb_streams ? AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
int tq_receive(ThreadQueue *tq, int *stream_idx, void *data)
|
||||
{
|
||||
int ret;
|
||||
|
||||
*stream_idx = -1;
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
while (1) {
|
||||
ret = receive_locked(tq, stream_idx, data);
|
||||
if (ret == AVERROR(EAGAIN)) {
|
||||
pthread_cond_wait(&tq->cond, &tq->lock);
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void tq_send_finish(ThreadQueue *tq, unsigned int stream_idx)
|
||||
{
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
/* mark the stream as send-finished;
|
||||
* next time the consumer thread tries to read this stream it will get
|
||||
* an EOF and recv-finished flag will be set */
|
||||
tq->finished[stream_idx] |= FINISHED_SEND;
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
}
|
||||
|
||||
void tq_receive_finish(ThreadQueue *tq, unsigned int stream_idx)
|
||||
{
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
/* mark the stream as recv-finished;
|
||||
* next time the producer thread tries to send for this stream, it will
|
||||
* get an EOF and send-finished flag will be set */
|
||||
tq->finished[stream_idx] |= FINISHED_RECV;
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of thread_queue.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_THREAD_QUEUE_H
|
||||
#define FFTOOLS_THREAD_QUEUE_H
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
|
||||
typedef struct ThreadQueue ThreadQueue;
|
||||
|
||||
/**
|
||||
* Allocate a queue for sending data between threads.
|
||||
*
|
||||
* @param nb_streams number of streams for which a distinct EOF state is
|
||||
* maintained
|
||||
* @param queue_size number of items that can be stored in the queue without
|
||||
* blocking
|
||||
* @param obj_pool object pool that will be used to allocate items stored in the
|
||||
* queue; the pool becomes owned by the queue
|
||||
* @param callback that moves the contents between two data pointers
|
||||
*/
|
||||
ThreadQueue *tq_alloc(unsigned int nb_streams, size_t queue_size,
|
||||
ObjPool *obj_pool, void (*obj_move)(void *dst, void *src));
|
||||
void tq_free(ThreadQueue **tq);
|
||||
|
||||
/**
|
||||
* Send an item for the given stream to the queue.
|
||||
*
|
||||
* @param data the item to send, its contents will be moved using the callback
|
||||
* provided to tq_alloc(); on failure the item will be left
|
||||
* untouched
|
||||
* @return
|
||||
* - 0 the item was successfully sent
|
||||
* - AVERROR(ENOMEM) could not allocate an item for writing to the FIFO
|
||||
* - AVERROR(EINVAL) the sending side has previously been marked as finished
|
||||
* - AVERROR_EOF the receiving side has marked the given stream as finished
|
||||
*/
|
||||
int tq_send(ThreadQueue *tq, unsigned int stream_idx, void *data);
|
||||
/**
|
||||
* Mark the given stream finished from the sending side.
|
||||
*/
|
||||
void tq_send_finish(ThreadQueue *tq, unsigned int stream_idx);
|
||||
|
||||
/**
|
||||
* Read the next item from the queue.
|
||||
*
|
||||
* @param stream_idx the index of the stream that was processed or -1 will be
|
||||
* written here
|
||||
* @param data the data item will be written here on success using the
|
||||
* callback provided to tq_alloc()
|
||||
* @return
|
||||
* - 0 a data item was successfully read; *stream_idx contains a non-negative
|
||||
* stream index
|
||||
* - AVERROR_EOF When *stream_idx is non-negative, this signals that the sending
|
||||
* side has marked the given stream as finished. This will happen at most once
|
||||
* for each stream. When *stream_idx is -1, all streams are done.
|
||||
*/
|
||||
int tq_receive(ThreadQueue *tq, int *stream_idx, void *data);
|
||||
/**
|
||||
* Mark the given stream finished from the receiving side.
|
||||
*/
|
||||
void tq_receive_finish(ThreadQueue *tq, unsigned int stream_idx);
|
||||
|
||||
#endif // FFTOOLS_THREAD_QUEUE_H
|
||||
+2
-4
@@ -144,8 +144,6 @@ public class FFmpegKitConfig {
|
||||
|
||||
NativeLoader.loadFFmpegKit(nativeFFmpegTriedAndFailed);
|
||||
|
||||
android.util.Log.i(FFmpegKitConfig.TAG, String.format("Loaded ffmpeg-kit-%s-%s-%s-%s.", NativeLoader.loadPackageName(), NativeLoader.loadAbi(), NativeLoader.loadVersion(), NativeLoader.loadBuildDate()));
|
||||
|
||||
uniqueIdGenerator = new AtomicInteger(1);
|
||||
|
||||
/* NATIVE LOG LEVEL IS RECEIVED ONLY ON STARTUP */
|
||||
@@ -175,7 +173,7 @@ public class FFmpegKitConfig {
|
||||
safFileDescriptorMap = new SparseArray<>();
|
||||
globalLogRedirectionStrategy = LogRedirectionStrategy.PRINT_LOGS_WHEN_NO_CALLBACKS_DEFINED;
|
||||
|
||||
NativeLoader.enableRedirection();
|
||||
android.util.Log.i(FFmpegKitConfig.TAG, String.format("Loaded ffmpeg-kit-%s-%s-%s-%s.", NativeLoader.loadPackageName(), NativeLoader.loadAbi(), NativeLoader.loadVersion(), NativeLoader.loadBuildDate()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -336,7 +334,7 @@ public class FFmpegKitConfig {
|
||||
*/
|
||||
private static void statistics(final long sessionId, final int videoFrameNumber,
|
||||
final float videoFps, final float videoQuality, final long size,
|
||||
final int time, final double bitrate, final double speed) {
|
||||
final double time, final double bitrate, final double speed) {
|
||||
final Statistics statistics = new Statistics(sessionId, videoFrameNumber, videoFps, videoQuality, size, time, bitrate, speed);
|
||||
|
||||
final Session session = getSession(sessionId);
|
||||
|
||||
+1
-1
@@ -85,7 +85,7 @@ public class NativeLoader {
|
||||
}
|
||||
|
||||
static String loadVersion() {
|
||||
final String version = "5.1";
|
||||
final String version = "6.0";
|
||||
|
||||
if (isTestModeDisabled()) {
|
||||
return FFmpegKitConfig.getVersion();
|
||||
|
||||
+4
-4
@@ -28,11 +28,11 @@ public class Statistics {
|
||||
private float videoFps;
|
||||
private float videoQuality;
|
||||
private long size;
|
||||
private int time;
|
||||
private double time;
|
||||
private double bitrate;
|
||||
private double speed;
|
||||
|
||||
public Statistics(final long sessionId, final int videoFrameNumber, final float videoFps, final float videoQuality, final long size, final int time, final double bitrate, final double speed) {
|
||||
public Statistics(final long sessionId, final int videoFrameNumber, final float videoFps, final float videoQuality, final long size, final double time, final double bitrate, final double speed) {
|
||||
this.sessionId = sessionId;
|
||||
this.videoFrameNumber = videoFrameNumber;
|
||||
this.videoFps = videoFps;
|
||||
@@ -83,11 +83,11 @@ public class Statistics {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public int getTime() {
|
||||
public double getTime() {
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTime(int time) {
|
||||
public void setTime(double time) {
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -69,7 +69,7 @@ include $(BUILD_SHARED_LIBRARY)
|
||||
|
||||
$(call import-module, cpu-features)
|
||||
|
||||
MY_SRC_FILES := ffmpegkit.c ffprobekit.c ffmpegkit_exception.c fftools_cmdutils.c fftools_ffmpeg.c fftools_ffprobe.c fftools_ffmpeg_mux.c fftools_ffmpeg_opt.c fftools_opt_common.c fftools_ffmpeg_hw.c fftools_ffmpeg_filter.c
|
||||
MY_SRC_FILES := ffmpegkit.c ffprobekit.c ffmpegkit_exception.c fftools_cmdutils.c fftools_ffmpeg.c fftools_ffprobe.c fftools_ffmpeg_mux.c fftools_ffmpeg_mux_init.c fftools_ffmpeg_demux.c fftools_ffmpeg_opt.c fftools_opt_common.c fftools_ffmpeg_hw.c fftools_ffmpeg_filter.c fftools_objpool.c fftools_sync_queue.c fftools_thread_queue.c
|
||||
|
||||
ifeq ($(TARGET_PLATFORM),android-16)
|
||||
MY_SRC_FILES += android_lts_support.c
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ PROJECT_NAME = "FFmpegKit iOS / macOS / tvOS API"
|
||||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 5.1
|
||||
PROJECT_NUMBER = 6.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
||||
+6
-7
@@ -8,7 +8,7 @@
|
||||
- Objective-C API
|
||||
- Camera access
|
||||
- `ARC` enabled library
|
||||
- Built with `-fembed-bitcode` flag
|
||||
- Can be built with `-fembed-bitcode` flag
|
||||
- Creates shared `frameworks` and `xcframeworks`
|
||||
|
||||
#### 1.2 macOS
|
||||
@@ -17,7 +17,6 @@
|
||||
- Objective-C API
|
||||
- Camera access
|
||||
- `ARC` enabled library
|
||||
- Built with `-fembed-bitcode` flag
|
||||
- Creates shared `frameworks` and `xcframeworks`
|
||||
|
||||
#### 1.3 tvOS
|
||||
@@ -25,7 +24,7 @@
|
||||
- Includes `arm64`, `arm64-simulator` and `x86_64` architectures
|
||||
- Objective-C API
|
||||
- `ARC` enabled library
|
||||
- Built with `-fembed-bitcode` flag
|
||||
- Can be built with `-fembed-bitcode` flag
|
||||
- Creates shared `frameworks` and `xcframeworks`
|
||||
|
||||
### 2. Building
|
||||
@@ -66,7 +65,7 @@ Please note that `FFmpegKit` project repository includes the source code of `FFm
|
||||
Use your package manager (brew, etc.) to install the following packages.
|
||||
|
||||
```
|
||||
autoconf automake libtool pkg-config curl cmake gcc gperf texinfo yasm nasm bison autogen git wget gettext meson ninja
|
||||
autoconf automake libtool pkg-config curl git doxygen nasm cmake gcc gperf texinfo yasm bison autogen wget gettext meson ninja ragel groff gtk-doc-tools libtasn1
|
||||
```
|
||||
|
||||
#### 2.2 Options
|
||||
@@ -111,17 +110,17 @@ All libraries created can be found under the `prebuilt` directory.
|
||||
|
||||
- iOS
|
||||
```yaml
|
||||
pod 'ffmpeg-kit-ios-full', '~> 5.1'
|
||||
pod 'ffmpeg-kit-ios-full', '~> 6.0'
|
||||
```
|
||||
|
||||
- macOS
|
||||
```yaml
|
||||
pod 'ffmpeg-kit-macos-full', '~> 5.1'
|
||||
pod 'ffmpeg-kit-macos-full', '~> 6.0'
|
||||
```
|
||||
|
||||
- tvOS
|
||||
```yaml
|
||||
pod 'ffmpeg-kit-tvos-full', '~> 5.1'
|
||||
pod 'ffmpeg-kit-tvos-full', '~> 6.0'
|
||||
```
|
||||
|
||||
2. Execute synchronous `FFmpeg` commands.
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
# ffmpeg-kit 5.1 configure.ac
|
||||
# ffmpeg-kit 6.0 configure.ac
|
||||
|
||||
AC_INIT([ffmpeg-kit], [5.1], [https://github.com/arthenica/ffmpeg-kit/issues/new])
|
||||
AC_INIT([ffmpeg-kit], [6.0], [https://github.com/arthenica/ffmpeg-kit/issues/new])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_SRCDIR([src/FFmpegKit.m])
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#import "SessionState.h"
|
||||
|
||||
/** Global library version */
|
||||
NSString* const FFmpegKitVersion = @"5.1";
|
||||
NSString* const FFmpegKitVersion = @"6.0";
|
||||
|
||||
/**
|
||||
* Prefix of named pipes created by ffmpeg-kit.
|
||||
@@ -150,7 +150,7 @@ void addSessionToSessionHistory(id<Session> session) {
|
||||
float _statisticsFps; // statistics fps
|
||||
float _statisticsQuality; // statistics quality
|
||||
int64_t _statisticsSize; // statistics size
|
||||
int _statisticsTime; // statistics time
|
||||
double _statisticsTime; // statistics time
|
||||
double _statisticsBitrate; // statistics bitrate
|
||||
double _statisticsSpeed; // statistics speed
|
||||
}
|
||||
@@ -173,7 +173,7 @@ void addSessionToSessionHistory(id<Session> session) {
|
||||
fps:(float)videoFps
|
||||
quality:(float)videoQuality
|
||||
size:(int64_t)size
|
||||
time:(int)time
|
||||
time:(double)time
|
||||
bitrate:(double)bitrate
|
||||
speed:(double)speed {
|
||||
self = [super init];
|
||||
@@ -224,7 +224,7 @@ void addSessionToSessionHistory(id<Session> session) {
|
||||
return _statisticsSize;
|
||||
}
|
||||
|
||||
- (int)getStatisticsTime {
|
||||
- (double)getStatisticsTime {
|
||||
return _statisticsTime;
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ void logCallbackDataAdd(int level, AVBPrint *data) {
|
||||
/**
|
||||
* Adds statistics data to the end of callback data list.
|
||||
*/
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_t size, double time, double bitrate, double speed) {
|
||||
CallbackData *callbackData = [[CallbackData alloc] init:globalSessionId videoFrameNumber:frameNumber fps:fps quality:quality size:size time:time bitrate:bitrate speed:speed];
|
||||
|
||||
[lock lock];
|
||||
@@ -481,13 +481,18 @@ void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, v
|
||||
* @param bitrate output bit rate in kbits/s
|
||||
* @param speed processing speed = processed duration / operation duration
|
||||
*/
|
||||
void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, int time, double bitrate, double speed) {
|
||||
void ffmpegkit_statistics_callback_function(int frameNumber, float fps, float quality, int64_t size, double time, double bitrate, double speed) {
|
||||
statisticsCallbackDataAdd(frameNumber, fps, quality, size, time, bitrate, speed);
|
||||
}
|
||||
|
||||
void process_log(long sessionId, int levelValue, AVBPrint* logMessage) {
|
||||
int activeLogLevel = av_log_get_level();
|
||||
Log* log = [[Log alloc] init:sessionId:levelValue:[NSString stringWithCString:logMessage->str encoding:NSUTF8StringEncoding]];
|
||||
NSString* message = [NSString stringWithCString:logMessage->str encoding:NSUTF8StringEncoding];
|
||||
if (message == nil) {
|
||||
// WE DROP LOGS THAT WE CANNOT DISPLAY
|
||||
return;
|
||||
}
|
||||
Log* log = [[Log alloc] init:sessionId:levelValue:message];
|
||||
BOOL globalCallbackDefined = false;
|
||||
BOOL sessionCallbackDefined = false;
|
||||
LogRedirectionStrategy activeLogRedirectionStrategy = globalLogRedirectionStrategy;
|
||||
@@ -570,7 +575,7 @@ void process_log(long sessionId, int levelValue, AVBPrint* logMessage) {
|
||||
}
|
||||
}
|
||||
|
||||
void process_statistics(long sessionId, int videoFrameNumber, float videoFps, float videoQuality, long size, int time, double bitrate, double speed) {
|
||||
void process_statistics(long sessionId, int videoFrameNumber, float videoFps, float videoQuality, long size, double time, double bitrate, double speed) {
|
||||
|
||||
Statistics *statistics = [[Statistics alloc] init:sessionId videoFrameNumber:videoFrameNumber videoFps:videoFps videoQuality:videoQuality size:size time:time bitrate:bitrate speed:speed];
|
||||
|
||||
|
||||
+11
-2
@@ -23,12 +23,17 @@ libffmpegkit_la_SOURCES = \
|
||||
ffmpegkit_exception.m \
|
||||
fftools_cmdutils.c \
|
||||
fftools_ffmpeg.c \
|
||||
fftools_ffmpeg_demux.c \
|
||||
fftools_ffmpeg_filter.c \
|
||||
fftools_ffmpeg_hw.c \
|
||||
fftools_ffmpeg_mux.c \
|
||||
fftools_ffmpeg_mux_init.c \
|
||||
fftools_ffmpeg_opt.c \
|
||||
fftools_ffprobe.c \
|
||||
fftools_opt_common.c
|
||||
fftools_objpool.c \
|
||||
fftools_opt_common.c \
|
||||
fftools_sync_queue.c \
|
||||
fftools_thread_queue.c
|
||||
|
||||
include_HEADERS = \
|
||||
AbstractSession.h \
|
||||
@@ -60,8 +65,12 @@ include_HEADERS = \
|
||||
ffmpegkit_exception.h \
|
||||
fftools_cmdutils.h \
|
||||
fftools_ffmpeg.h \
|
||||
fftools_ffmpeg_mux.h \
|
||||
fftools_fopen_utf8.h \
|
||||
fftools_opt_common.h
|
||||
fftools_objpool.h \
|
||||
fftools_opt_common.h \
|
||||
fftools_sync_queue.h \
|
||||
fftools_thread_queue.h
|
||||
|
||||
libffmpegkit_la_CFLAGS = $(CFLAGS)
|
||||
libffmpegkit_la_OBJCFLAGS = $(CFLAGS)
|
||||
|
||||
+73
-4
@@ -147,12 +147,17 @@ am_libffmpegkit_la_OBJECTS = libffmpegkit_la-AbstractSession.lo \
|
||||
libffmpegkit_la-ffmpegkit_exception.lo \
|
||||
libffmpegkit_la-fftools_cmdutils.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_demux.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_filter.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_hw.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_mux.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_mux_init.lo \
|
||||
libffmpegkit_la-fftools_ffmpeg_opt.lo \
|
||||
libffmpegkit_la-fftools_ffprobe.lo \
|
||||
libffmpegkit_la-fftools_opt_common.lo
|
||||
libffmpegkit_la-fftools_objpool.lo \
|
||||
libffmpegkit_la-fftools_opt_common.lo \
|
||||
libffmpegkit_la-fftools_sync_queue.lo \
|
||||
libffmpegkit_la-fftools_thread_queue.lo
|
||||
libffmpegkit_la_OBJECTS = $(am_libffmpegkit_la_OBJECTS)
|
||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||
@@ -197,12 +202,17 @@ am__depfiles_remade = ./$(DEPDIR)/libffmpegkit_la-AbstractSession.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-ffmpegkit_exception.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_cmdutils.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_hw.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_ffprobe.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_objpool.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Plo \
|
||||
./$(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Plo
|
||||
am__mv = mv -f
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
@@ -415,12 +425,17 @@ libffmpegkit_la_SOURCES = \
|
||||
ffmpegkit_exception.m \
|
||||
fftools_cmdutils.c \
|
||||
fftools_ffmpeg.c \
|
||||
fftools_ffmpeg_demux.c \
|
||||
fftools_ffmpeg_filter.c \
|
||||
fftools_ffmpeg_hw.c \
|
||||
fftools_ffmpeg_mux.c \
|
||||
fftools_ffmpeg_mux_init.c \
|
||||
fftools_ffmpeg_opt.c \
|
||||
fftools_ffprobe.c \
|
||||
fftools_opt_common.c
|
||||
fftools_objpool.c \
|
||||
fftools_opt_common.c \
|
||||
fftools_sync_queue.c \
|
||||
fftools_thread_queue.c
|
||||
|
||||
include_HEADERS = \
|
||||
AbstractSession.h \
|
||||
@@ -452,8 +467,12 @@ include_HEADERS = \
|
||||
ffmpegkit_exception.h \
|
||||
fftools_cmdutils.h \
|
||||
fftools_ffmpeg.h \
|
||||
fftools_ffmpeg_mux.h \
|
||||
fftools_fopen_utf8.h \
|
||||
fftools_opt_common.h
|
||||
fftools_objpool.h \
|
||||
fftools_opt_common.h \
|
||||
fftools_sync_queue.h \
|
||||
fftools_thread_queue.h
|
||||
|
||||
libffmpegkit_la_CFLAGS = $(CFLAGS)
|
||||
libffmpegkit_la_OBJCFLAGS = $(CFLAGS)
|
||||
@@ -557,12 +576,17 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-ffmpegkit_exception.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_cmdutils.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_hw.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_ffprobe.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_objpool.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Plo@am__quote@ # am--include-marker
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Plo@am__quote@ # am--include-marker
|
||||
|
||||
$(am__depfiles_remade):
|
||||
@$(MKDIR_P) $(@D)
|
||||
@@ -608,6 +632,13 @@ libffmpegkit_la-fftools_ffmpeg.lo: fftools_ffmpeg.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_ffmpeg.lo `test -f 'fftools_ffmpeg.c' || echo '$(srcdir)/'`fftools_ffmpeg.c
|
||||
|
||||
libffmpegkit_la-fftools_ffmpeg_demux.lo: fftools_ffmpeg_demux.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_ffmpeg_demux.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Tpo -c -o libffmpegkit_la-fftools_ffmpeg_demux.lo `test -f 'fftools_ffmpeg_demux.c' || echo '$(srcdir)/'`fftools_ffmpeg_demux.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Tpo $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftools_ffmpeg_demux.c' object='libffmpegkit_la-fftools_ffmpeg_demux.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_ffmpeg_demux.lo `test -f 'fftools_ffmpeg_demux.c' || echo '$(srcdir)/'`fftools_ffmpeg_demux.c
|
||||
|
||||
libffmpegkit_la-fftools_ffmpeg_filter.lo: fftools_ffmpeg_filter.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_ffmpeg_filter.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Tpo -c -o libffmpegkit_la-fftools_ffmpeg_filter.lo `test -f 'fftools_ffmpeg_filter.c' || echo '$(srcdir)/'`fftools_ffmpeg_filter.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Tpo $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Plo
|
||||
@@ -629,6 +660,13 @@ libffmpegkit_la-fftools_ffmpeg_mux.lo: fftools_ffmpeg_mux.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_ffmpeg_mux.lo `test -f 'fftools_ffmpeg_mux.c' || echo '$(srcdir)/'`fftools_ffmpeg_mux.c
|
||||
|
||||
libffmpegkit_la-fftools_ffmpeg_mux_init.lo: fftools_ffmpeg_mux_init.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_ffmpeg_mux_init.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Tpo -c -o libffmpegkit_la-fftools_ffmpeg_mux_init.lo `test -f 'fftools_ffmpeg_mux_init.c' || echo '$(srcdir)/'`fftools_ffmpeg_mux_init.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Tpo $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftools_ffmpeg_mux_init.c' object='libffmpegkit_la-fftools_ffmpeg_mux_init.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_ffmpeg_mux_init.lo `test -f 'fftools_ffmpeg_mux_init.c' || echo '$(srcdir)/'`fftools_ffmpeg_mux_init.c
|
||||
|
||||
libffmpegkit_la-fftools_ffmpeg_opt.lo: fftools_ffmpeg_opt.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_ffmpeg_opt.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Tpo -c -o libffmpegkit_la-fftools_ffmpeg_opt.lo `test -f 'fftools_ffmpeg_opt.c' || echo '$(srcdir)/'`fftools_ffmpeg_opt.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Tpo $(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Plo
|
||||
@@ -643,6 +681,13 @@ libffmpegkit_la-fftools_ffprobe.lo: fftools_ffprobe.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_ffprobe.lo `test -f 'fftools_ffprobe.c' || echo '$(srcdir)/'`fftools_ffprobe.c
|
||||
|
||||
libffmpegkit_la-fftools_objpool.lo: fftools_objpool.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_objpool.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_objpool.Tpo -c -o libffmpegkit_la-fftools_objpool.lo `test -f 'fftools_objpool.c' || echo '$(srcdir)/'`fftools_objpool.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_objpool.Tpo $(DEPDIR)/libffmpegkit_la-fftools_objpool.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftools_objpool.c' object='libffmpegkit_la-fftools_objpool.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_objpool.lo `test -f 'fftools_objpool.c' || echo '$(srcdir)/'`fftools_objpool.c
|
||||
|
||||
libffmpegkit_la-fftools_opt_common.lo: fftools_opt_common.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_opt_common.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_opt_common.Tpo -c -o libffmpegkit_la-fftools_opt_common.lo `test -f 'fftools_opt_common.c' || echo '$(srcdir)/'`fftools_opt_common.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_opt_common.Tpo $(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo
|
||||
@@ -650,6 +695,20 @@ libffmpegkit_la-fftools_opt_common.lo: fftools_opt_common.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_opt_common.lo `test -f 'fftools_opt_common.c' || echo '$(srcdir)/'`fftools_opt_common.c
|
||||
|
||||
libffmpegkit_la-fftools_sync_queue.lo: fftools_sync_queue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_sync_queue.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Tpo -c -o libffmpegkit_la-fftools_sync_queue.lo `test -f 'fftools_sync_queue.c' || echo '$(srcdir)/'`fftools_sync_queue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Tpo $(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftools_sync_queue.c' object='libffmpegkit_la-fftools_sync_queue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_sync_queue.lo `test -f 'fftools_sync_queue.c' || echo '$(srcdir)/'`fftools_sync_queue.c
|
||||
|
||||
libffmpegkit_la-fftools_thread_queue.lo: fftools_thread_queue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -MT libffmpegkit_la-fftools_thread_queue.lo -MD -MP -MF $(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Tpo -c -o libffmpegkit_la-fftools_thread_queue.lo `test -f 'fftools_thread_queue.c' || echo '$(srcdir)/'`fftools_thread_queue.c
|
||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Tpo $(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftools_thread_queue.c' object='libffmpegkit_la-fftools_thread_queue.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libffmpegkit_la_CFLAGS) $(CFLAGS) -c -o libffmpegkit_la-fftools_thread_queue.lo `test -f 'fftools_thread_queue.c' || echo '$(srcdir)/'`fftools_thread_queue.c
|
||||
|
||||
.m.o:
|
||||
@am__fastdepOBJC_TRUE@ $(AM_V_OBJC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
@am__fastdepOBJC_TRUE@ $(OBJCCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@@ -974,12 +1033,17 @@ distclean: distclean-am
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-ffmpegkit_exception.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_cmdutils.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_hw.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffprobe.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_objpool.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Plo
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@@ -1045,12 +1109,17 @@ maintainer-clean: maintainer-clean-am
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-ffmpegkit_exception.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_cmdutils.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_demux.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_filter.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_hw.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_mux_init.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffmpeg_opt.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_ffprobe.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_objpool.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_opt_common.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_sync_queue.Plo
|
||||
-rm -f ./$(DEPDIR)/libffmpegkit_la-fftools_thread_queue.Plo
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
*/
|
||||
@interface Statistics : NSObject
|
||||
|
||||
- (instancetype)init:(long)sessionId videoFrameNumber:(int)videoFrameNumber videoFps:(float)videoFps videoQuality:(float)videoQuality size:(int64_t)size time:(int)time bitrate:(double)bitrate speed:(double)speed;
|
||||
- (instancetype)init:(long)sessionId videoFrameNumber:(int)videoFrameNumber videoFps:(float)videoFps videoQuality:(float)videoQuality size:(int64_t)size time:(double)time bitrate:(double)bitrate speed:(double)speed;
|
||||
|
||||
- (long)getSessionId;
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
- (long)getSize;
|
||||
|
||||
- (int)getTime;
|
||||
- (double)getTime;
|
||||
|
||||
- (double)getBitrate;
|
||||
|
||||
|
||||
@@ -25,12 +25,12 @@
|
||||
float _videoFps;
|
||||
float _videoQuality;
|
||||
long _size;
|
||||
int _time;
|
||||
double _time;
|
||||
double _bitrate;
|
||||
double _speed;
|
||||
}
|
||||
|
||||
- (instancetype)init:(long)sessionId videoFrameNumber:(int)videoFrameNumber videoFps:(float)videoFps videoQuality:(float)videoQuality size:(int64_t)size time:(int)time bitrate:(double)bitrate speed:(double)speed {
|
||||
- (instancetype)init:(long)sessionId videoFrameNumber:(int)videoFrameNumber videoFps:(float)videoFps videoQuality:(float)videoQuality size:(int64_t)size time:(double)time bitrate:(double)bitrate speed:(double)speed {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_sessionId = sessionId;
|
||||
@@ -66,7 +66,7 @@
|
||||
return _size;
|
||||
}
|
||||
|
||||
- (int)getTime {
|
||||
- (double)getTime {
|
||||
return _time;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Various utilities for command line tools
|
||||
* Copyright (c) 2000-2003 Fabrice Bellard
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -25,6 +26,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -129,11 +136,18 @@ void register_exit(void (*cb)(int ret))
|
||||
program_exit = cb;
|
||||
}
|
||||
|
||||
void report_and_exit(int ret)
|
||||
{
|
||||
av_log(NULL, AV_LOG_FATAL, "%s\n", av_err2str(ret));
|
||||
exit_program(AVUNERROR(ret));
|
||||
}
|
||||
|
||||
void exit_program(int ret)
|
||||
{
|
||||
if (program_exit)
|
||||
program_exit(ret);
|
||||
|
||||
// FFmpegKit
|
||||
// exit disabled and replaced with longjmp, exit value stored in longjmp_value
|
||||
// exit(ret);
|
||||
longjmp_value = ret;
|
||||
@@ -696,7 +710,7 @@ static void init_parse_context(OptionParseContext *octx,
|
||||
octx->nb_groups = nb_groups;
|
||||
octx->groups = av_calloc(octx->nb_groups, sizeof(*octx->groups));
|
||||
if (!octx->groups)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
for (i = 0; i < octx->nb_groups; i++)
|
||||
octx->groups[i].group_def = &groups[i];
|
||||
@@ -843,12 +857,7 @@ do { \
|
||||
|
||||
void print_error(const char *filename, int err)
|
||||
{
|
||||
char errbuf[128];
|
||||
const char *errbuf_ptr = errbuf;
|
||||
|
||||
if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
|
||||
errbuf_ptr = strerror(AVUNERROR(err));
|
||||
av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, errbuf_ptr);
|
||||
av_log(NULL, AV_LOG_ERROR, "%s: %s\n", filename, av_err2str(err));
|
||||
}
|
||||
|
||||
int read_yesno(void)
|
||||
@@ -971,7 +980,7 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
|
||||
break;
|
||||
}
|
||||
|
||||
while ((t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((t = av_dict_iterate(opts, t))) {
|
||||
const AVClass *priv_class;
|
||||
char *p = strchr(t->key, ':');
|
||||
|
||||
@@ -1009,11 +1018,8 @@ AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
|
||||
if (!s->nb_streams)
|
||||
return NULL;
|
||||
opts = av_calloc(s->nb_streams, sizeof(*opts));
|
||||
if (!opts) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Could not alloc memory for stream options.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
if (!opts)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
for (i = 0; i < s->nb_streams; i++)
|
||||
opts[i] = filter_codec_opts(codec_opts, s->streams[i]->codecpar->codec_id,
|
||||
s, s->streams[i], NULL);
|
||||
@@ -1028,10 +1034,8 @@ void *grow_array(void *array, int elem_size, int *size, int new_size)
|
||||
}
|
||||
if (*size < new_size) {
|
||||
uint8_t *tmp = av_realloc_array(array, new_size, elem_size);
|
||||
if (!tmp) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
if (!tmp)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
memset(tmp + *size*elem_size, 0, (new_size-*size) * elem_size);
|
||||
*size = new_size;
|
||||
return tmp;
|
||||
@@ -1044,10 +1048,8 @@ void *allocate_array_elem(void *ptr, size_t elem_size, int *nb_elems)
|
||||
void *new_elem;
|
||||
|
||||
if (!(new_elem = av_mallocz(elem_size)) ||
|
||||
av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Could not alloc buffer.\n");
|
||||
exit_program(1);
|
||||
}
|
||||
av_dynarray_add_nofree(ptr, nb_elems, new_elem) < 0)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return new_elem;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Various utilities for command line tools
|
||||
* copyright (c) 2003 Fabrice Bellard
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* copyright (c) 2018-2022 Taner Sener
|
||||
* copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -25,6 +26,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -95,6 +102,17 @@ extern __thread int find_stream_info;
|
||||
*/
|
||||
void register_exit(void (*cb)(int ret));
|
||||
|
||||
/**
|
||||
* Reports an error corresponding to the provided
|
||||
* AVERROR code and calls exit_program() with the
|
||||
* corresponding POSIX error code.
|
||||
* @note ret must be an AVERROR-value of a POSIX error code
|
||||
* (i.e. AVERROR(EFOO) and not AVERROR_FOO).
|
||||
* library functions can return both, so call this only
|
||||
* with AVERROR(EFOO) of your own.
|
||||
*/
|
||||
void report_and_exit(int ret) av_noreturn;
|
||||
|
||||
/**
|
||||
* Wraps exit with a program-specific cleanup routine.
|
||||
*/
|
||||
@@ -232,11 +250,6 @@ void show_help_children(const AVClass *clazz, int flags);
|
||||
void show_help_default_ffmpeg(const char *opt, const char *arg);
|
||||
void show_help_default_ffprobe(const char *opt, const char *arg);
|
||||
|
||||
/**
|
||||
* Generic -h handler common to all fftools.
|
||||
*/
|
||||
int show_help(void *optctx, const char *opt, const char *arg);
|
||||
|
||||
/**
|
||||
* Parse the command line arguments.
|
||||
*
|
||||
|
||||
+1256
-1631
File diff suppressed because it is too large
Load Diff
+268
-102
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -22,6 +23,16 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - WARN_MULTIPLE_OPT_USAGE, MATCH_PER_STREAM_OPT, MATCH_PER_TYPE_OPT, SPECIFIER_OPT_FMT declarations migrated to
|
||||
* ffmpeg_mux.h
|
||||
* - "class" member field renamed as clazz
|
||||
* - time field in set_report_callback updated as double
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -59,11 +70,13 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "fftools_cmdutils.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/avio.h"
|
||||
@@ -85,6 +98,12 @@
|
||||
|
||||
#include "libswresample/swresample.h"
|
||||
|
||||
// deprecated features
|
||||
#define FFMPEG_OPT_PSNR 1
|
||||
#define FFMPEG_OPT_MAP_CHANNEL 1
|
||||
#define FFMPEG_OPT_MAP_SYNC 1
|
||||
#define FFMPEG_ROTATION_METADATA 1
|
||||
|
||||
enum VideoSyncMethod {
|
||||
VSYNC_AUTO = -1,
|
||||
VSYNC_PASSTHROUGH,
|
||||
@@ -113,15 +132,15 @@ typedef struct StreamMap {
|
||||
int disabled; /* 1 is this mapping is disabled by a negative map */
|
||||
int file_index;
|
||||
int stream_index;
|
||||
int sync_file_index;
|
||||
int sync_stream_index;
|
||||
char *linklabel; /* name of an output link, for mapping lavfi outputs */
|
||||
} StreamMap;
|
||||
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
typedef struct {
|
||||
int file_idx, stream_idx, channel_idx; // input
|
||||
int ofile_idx, ostream_idx; // output
|
||||
} AudioChannelMap;
|
||||
#endif
|
||||
|
||||
typedef struct OptionsContext {
|
||||
OptionGroup *g;
|
||||
@@ -157,6 +176,7 @@ typedef struct OptionsContext {
|
||||
int accurate_seek;
|
||||
int thread_queue_size;
|
||||
int input_sync_ref;
|
||||
int find_stream_info;
|
||||
|
||||
SpecifierOpt *ts_scale;
|
||||
int nb_ts_scale;
|
||||
@@ -174,11 +194,10 @@ typedef struct OptionsContext {
|
||||
/* output options */
|
||||
StreamMap *stream_maps;
|
||||
int nb_stream_maps;
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
AudioChannelMap *audio_channel_maps; /* one info entry per -map_channel */
|
||||
int nb_audio_channel_maps; /* number of (valid) -map_channel settings */
|
||||
int metadata_global_manual;
|
||||
int metadata_streams_manual;
|
||||
int metadata_chapters_manual;
|
||||
#endif
|
||||
const char **attachments;
|
||||
int nb_attachments;
|
||||
|
||||
@@ -186,9 +205,10 @@ typedef struct OptionsContext {
|
||||
|
||||
int64_t recording_time;
|
||||
int64_t stop_time;
|
||||
uint64_t limit_filesize;
|
||||
int64_t limit_filesize;
|
||||
float mux_preload;
|
||||
float mux_max_delay;
|
||||
float shortest_buf_duration;
|
||||
int shortest;
|
||||
int bitexact;
|
||||
|
||||
@@ -221,6 +241,12 @@ typedef struct OptionsContext {
|
||||
int nb_force_fps;
|
||||
SpecifierOpt *frame_aspect_ratios;
|
||||
int nb_frame_aspect_ratios;
|
||||
SpecifierOpt *display_rotations;
|
||||
int nb_display_rotations;
|
||||
SpecifierOpt *display_hflips;
|
||||
int nb_display_hflips;
|
||||
SpecifierOpt *display_vflips;
|
||||
int nb_display_vflips;
|
||||
SpecifierOpt *rc_overrides;
|
||||
int nb_rc_overrides;
|
||||
SpecifierOpt *intra_matrices;
|
||||
@@ -247,6 +273,8 @@ typedef struct OptionsContext {
|
||||
int nb_reinit_filters;
|
||||
SpecifierOpt *fix_sub_duration;
|
||||
int nb_fix_sub_duration;
|
||||
SpecifierOpt *fix_sub_duration_heartbeat;
|
||||
int nb_fix_sub_duration_heartbeat;
|
||||
SpecifierOpt *canvas_sizes;
|
||||
int nb_canvas_sizes;
|
||||
SpecifierOpt *pass;
|
||||
@@ -275,6 +303,18 @@ typedef struct OptionsContext {
|
||||
int nb_autoscale;
|
||||
SpecifierOpt *bits_per_raw_sample;
|
||||
int nb_bits_per_raw_sample;
|
||||
SpecifierOpt *enc_stats_pre;
|
||||
int nb_enc_stats_pre;
|
||||
SpecifierOpt *enc_stats_post;
|
||||
int nb_enc_stats_post;
|
||||
SpecifierOpt *mux_stats;
|
||||
int nb_mux_stats;
|
||||
SpecifierOpt *enc_stats_pre_fmt;
|
||||
int nb_enc_stats_pre_fmt;
|
||||
SpecifierOpt *enc_stats_post_fmt;
|
||||
int nb_enc_stats_post_fmt;
|
||||
SpecifierOpt *mux_stats_fmt;
|
||||
int nb_mux_stats_fmt;
|
||||
} OptionsContext;
|
||||
|
||||
typedef struct InputFilter {
|
||||
@@ -350,12 +390,22 @@ typedef struct InputStream {
|
||||
#define DECODING_FOR_OST 1
|
||||
#define DECODING_FOR_FILTER 2
|
||||
int processing_needed; /* non zero if the packets must be processed */
|
||||
// should attach FrameData as opaque_ref after decoding
|
||||
int want_frame_data;
|
||||
|
||||
/**
|
||||
* Codec parameters - to be used by the decoding/streamcopy code.
|
||||
* st->codecpar should not be accessed, because it may be modified
|
||||
* concurrently by the demuxing thread.
|
||||
*/
|
||||
AVCodecParameters *par;
|
||||
AVCodecContext *dec_ctx;
|
||||
const AVCodec *dec;
|
||||
AVFrame *decoded_frame;
|
||||
AVPacket *pkt;
|
||||
|
||||
AVRational framerate_guessed;
|
||||
|
||||
int64_t prev_pkt_pts;
|
||||
int64_t start; /* time when read started */
|
||||
/* predicted dts of the next packet read for this stream or (when there are
|
||||
@@ -368,6 +418,12 @@ typedef struct InputStream {
|
||||
int64_t pts; ///< current pts of the decoded frame (in AV_TIME_BASE units)
|
||||
int wrap_correction_done;
|
||||
|
||||
// the value of AVCodecParserContext.repeat_pict from the AVStream parser
|
||||
// for the last packet returned from ifile_get_packet()
|
||||
// -1 if unknown
|
||||
// FIXME: this is a hack, the avstream parser should not be used
|
||||
int last_pkt_repeat_pict;
|
||||
|
||||
int64_t filter_in_rescale_delta_last;
|
||||
|
||||
int64_t min_pts; /* pts with the smallest value in a current stream */
|
||||
@@ -417,12 +473,8 @@ typedef struct InputStream {
|
||||
char *hwaccel_device;
|
||||
enum AVPixelFormat hwaccel_output_format;
|
||||
|
||||
/* hwaccel context */
|
||||
void *hwaccel_ctx;
|
||||
void (*hwaccel_uninit)(AVCodecContext *s);
|
||||
int (*hwaccel_retrieve_data)(AVCodecContext *s, AVFrame *frame);
|
||||
enum AVPixelFormat hwaccel_pix_fmt;
|
||||
enum AVPixelFormat hwaccel_retrieved_pix_fmt;
|
||||
|
||||
/* stats */
|
||||
// combined size of all the packets read
|
||||
@@ -439,38 +491,46 @@ typedef struct InputStream {
|
||||
int got_output;
|
||||
} InputStream;
|
||||
|
||||
typedef struct LastFrameDuration {
|
||||
int stream_idx;
|
||||
int64_t duration;
|
||||
} LastFrameDuration;
|
||||
|
||||
typedef struct InputFile {
|
||||
int index;
|
||||
|
||||
AVFormatContext *ctx;
|
||||
int eof_reached; /* true if eof reached */
|
||||
int eagain; /* true if last read attempt returned EAGAIN */
|
||||
int ist_index; /* index of first stream in input_streams */
|
||||
int loop; /* set number of times input stream should be looped */
|
||||
int64_t duration; /* actual duration of the longest stream in a file
|
||||
at the moment when looping happens */
|
||||
AVRational time_base; /* time base of the duration */
|
||||
int64_t input_ts_offset;
|
||||
int input_sync_ref;
|
||||
|
||||
/**
|
||||
* Effective format start time based on enabled streams.
|
||||
*/
|
||||
int64_t start_time_effective;
|
||||
int64_t ts_offset;
|
||||
/**
|
||||
* Extra timestamp offset added by discontinuity handling.
|
||||
*/
|
||||
int64_t ts_offset_discont;
|
||||
int64_t last_ts;
|
||||
int64_t start_time; /* user-specified start time in AV_TIME_BASE or AV_NOPTS_VALUE */
|
||||
int64_t recording_time;
|
||||
int nb_streams; /* number of stream that ffmpeg is aware of; may be different
|
||||
from ctx.nb_streams if new streams appear during av_read_frame() */
|
||||
int nb_streams_warn; /* number of streams that the user was warned of */
|
||||
|
||||
/* streams that ffmpeg is aware of;
|
||||
* there may be extra streams in ctx that are not mapped to an InputStream
|
||||
* if new streams appear dynamically during demuxing */
|
||||
InputStream **streams;
|
||||
int nb_streams;
|
||||
|
||||
int rate_emu;
|
||||
float readrate;
|
||||
int accurate_seek;
|
||||
|
||||
AVPacket *pkt;
|
||||
|
||||
#if HAVE_THREADS
|
||||
AVThreadMessageQueue *in_thread_queue;
|
||||
pthread_t thread; /* thread reading from this file */
|
||||
int non_blocking; /* reading packets from the thread should not block */
|
||||
int joined; /* the thread has been joined */
|
||||
int thread_queue_size; /* maximum number of queued packets */
|
||||
#endif
|
||||
/* when looping the input file, this queue is used by decoders to report
|
||||
* the last frame duration back to the demuxer thread */
|
||||
AVThreadMessageQueue *audio_duration_queue;
|
||||
int audio_duration_queue_size;
|
||||
} InputFile;
|
||||
|
||||
enum forced_keyframes_const {
|
||||
@@ -485,6 +545,41 @@ enum forced_keyframes_const {
|
||||
#define ABORT_ON_FLAG_EMPTY_OUTPUT (1 << 0)
|
||||
#define ABORT_ON_FLAG_EMPTY_OUTPUT_STREAM (1 << 1)
|
||||
|
||||
enum EncStatsType {
|
||||
ENC_STATS_LITERAL = 0,
|
||||
ENC_STATS_FILE_IDX,
|
||||
ENC_STATS_STREAM_IDX,
|
||||
ENC_STATS_FRAME_NUM,
|
||||
ENC_STATS_FRAME_NUM_IN,
|
||||
ENC_STATS_TIMEBASE,
|
||||
ENC_STATS_TIMEBASE_IN,
|
||||
ENC_STATS_PTS,
|
||||
ENC_STATS_PTS_TIME,
|
||||
ENC_STATS_PTS_IN,
|
||||
ENC_STATS_PTS_TIME_IN,
|
||||
ENC_STATS_DTS,
|
||||
ENC_STATS_DTS_TIME,
|
||||
ENC_STATS_SAMPLE_NUM,
|
||||
ENC_STATS_NB_SAMPLES,
|
||||
ENC_STATS_PKT_SIZE,
|
||||
ENC_STATS_BITRATE,
|
||||
ENC_STATS_AVG_BITRATE,
|
||||
};
|
||||
|
||||
typedef struct EncStatsComponent {
|
||||
enum EncStatsType type;
|
||||
|
||||
uint8_t *str;
|
||||
size_t str_len;
|
||||
} EncStatsComponent;
|
||||
|
||||
typedef struct EncStats {
|
||||
EncStatsComponent *components;
|
||||
int nb_components;
|
||||
|
||||
AVIOContext *io;
|
||||
} EncStats;
|
||||
|
||||
extern const char *const forced_keyframes_const_names[];
|
||||
|
||||
typedef enum {
|
||||
@@ -492,68 +587,92 @@ typedef enum {
|
||||
MUXER_FINISHED = 2,
|
||||
} OSTFinished ;
|
||||
|
||||
enum {
|
||||
KF_FORCE_SOURCE = 1,
|
||||
KF_FORCE_SOURCE_NO_DROP = 2,
|
||||
};
|
||||
|
||||
typedef struct KeyframeForceCtx {
|
||||
int type;
|
||||
|
||||
int64_t ref_pts;
|
||||
|
||||
// timestamps of the forced keyframes, in AV_TIME_BASE_Q
|
||||
int64_t *pts;
|
||||
int nb_pts;
|
||||
int index;
|
||||
|
||||
AVExpr *pexpr;
|
||||
double expr_const_values[FKF_NB];
|
||||
|
||||
int dropped_keyframe;
|
||||
} KeyframeForceCtx;
|
||||
|
||||
typedef struct OutputStream {
|
||||
const AVClass *clazz;
|
||||
|
||||
int file_index; /* file index */
|
||||
int index; /* stream index in the output file */
|
||||
int source_index; /* InputStream index */
|
||||
|
||||
/* input stream that is the source for this output stream;
|
||||
* may be NULL for streams with no well-defined source, e.g.
|
||||
* attachments or outputs from complex filtergraphs */
|
||||
InputStream *ist;
|
||||
|
||||
AVStream *st; /* stream in the output file */
|
||||
int encoding_needed; /* true if encoding needed for this stream */
|
||||
int64_t frame_number;
|
||||
/* input pts and corresponding output pts
|
||||
for A/V sync */
|
||||
struct InputStream *sync_ist; /* input stream to sync against */
|
||||
int64_t sync_opts; /* output frame counter, could be changed to some true timestamp */ // FIXME look at frame_number
|
||||
/* pts of the first frame encoded for this stream, used for limiting
|
||||
* recording time */
|
||||
int64_t first_pts;
|
||||
/* dts of the last packet sent to the muxer */
|
||||
/* number of frames emitted by the video-encoding sync code */
|
||||
int64_t vsync_frame_number;
|
||||
/* predicted pts of the next frame to be encoded
|
||||
* audio/video encoding only */
|
||||
int64_t next_pts;
|
||||
/* dts of the last packet sent to the muxing queue, in AV_TIME_BASE_Q */
|
||||
int64_t last_mux_dts;
|
||||
/* pts of the last frame received from the filters, in AV_TIME_BASE_Q */
|
||||
int64_t last_filter_pts;
|
||||
|
||||
// timestamp from which the streamcopied streams should start,
|
||||
// in AV_TIME_BASE_Q;
|
||||
// everything before it should be discarded
|
||||
int64_t ts_copy_start;
|
||||
|
||||
// the timebase of the packets sent to the muxer
|
||||
AVRational mux_timebase;
|
||||
AVRational enc_timebase;
|
||||
|
||||
AVBSFContext *bsf_ctx;
|
||||
|
||||
AVCodecContext *enc_ctx;
|
||||
AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
|
||||
const AVCodec *enc;
|
||||
int64_t max_frames;
|
||||
AVFrame *filtered_frame;
|
||||
AVFrame *last_frame;
|
||||
AVFrame *sq_frame;
|
||||
AVPacket *pkt;
|
||||
int64_t last_dropped;
|
||||
int64_t last_nb0_frames[3];
|
||||
|
||||
void *hwaccel_ctx;
|
||||
|
||||
/* video only */
|
||||
AVRational frame_rate;
|
||||
AVRational max_frame_rate;
|
||||
enum VideoSyncMethod vsync_method;
|
||||
int is_cfr;
|
||||
const char *fps_mode;
|
||||
int force_fps;
|
||||
int top_field_first;
|
||||
#if FFMPEG_ROTATION_METADATA
|
||||
int rotate_overridden;
|
||||
#endif
|
||||
int autoscale;
|
||||
int bitexact;
|
||||
int bits_per_raw_sample;
|
||||
#if FFMPEG_ROTATION_METADATA
|
||||
double rotate_override_value;
|
||||
#endif
|
||||
|
||||
AVRational frame_aspect_ratio;
|
||||
|
||||
/* forced key frames */
|
||||
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;
|
||||
KeyframeForceCtx kf;
|
||||
|
||||
/* audio only */
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
int *audio_channels_map; /* list of the channels id to pick from the source stream */
|
||||
int audio_channels_mapped; /* number of channels in audio_channels_map */
|
||||
#endif
|
||||
|
||||
char *logfile_prefix;
|
||||
FILE *logfile;
|
||||
@@ -569,7 +688,6 @@ typedef struct OutputStream {
|
||||
char *apad;
|
||||
OSTFinished finished; /* no more packets should be written for this stream */
|
||||
int unavailable; /* true if the steram is unavailable (possibly temporarily) */
|
||||
int stream_copy;
|
||||
|
||||
// init_output_stream() has been called for this stream
|
||||
// The encoder and the bitstream filters have been initialized and the stream
|
||||
@@ -582,15 +700,16 @@ typedef struct OutputStream {
|
||||
int streamcopy_started;
|
||||
int copy_initial_nonkeyframes;
|
||||
int copy_prior_start;
|
||||
char *disposition;
|
||||
|
||||
int keep_pix_fmt;
|
||||
|
||||
/* stats */
|
||||
// combined size of all the packets written
|
||||
uint64_t data_size;
|
||||
// combined size of all the packets sent to the muxer
|
||||
uint64_t data_size_mux;
|
||||
// combined size of all the packets received from the encoder
|
||||
uint64_t data_size_enc;
|
||||
// number of packets send to the muxer
|
||||
uint64_t packets_written;
|
||||
atomic_uint_least64_t packets_written;
|
||||
// number of frames/samples sent to the encoder
|
||||
uint64_t frames_encoded;
|
||||
uint64_t samples_encoded;
|
||||
@@ -600,51 +719,48 @@ typedef struct OutputStream {
|
||||
/* packet quality factor */
|
||||
int quality;
|
||||
|
||||
int max_muxing_queue_size;
|
||||
|
||||
/* the packets are buffered here until the muxer is ready to be initialized */
|
||||
AVFifo *muxing_queue;
|
||||
|
||||
/*
|
||||
* The size of the AVPackets' buffers in queue.
|
||||
* Updated when a packet is either pushed or pulled from the queue.
|
||||
*/
|
||||
size_t muxing_queue_data_size;
|
||||
|
||||
/* Threshold after which max_muxing_queue_size will be in effect */
|
||||
size_t muxing_queue_data_threshold;
|
||||
|
||||
/* packet picture type */
|
||||
int pict_type;
|
||||
|
||||
/* frame encode sum of squared error values */
|
||||
int64_t error[4];
|
||||
|
||||
int sq_idx_encode;
|
||||
int sq_idx_mux;
|
||||
|
||||
EncStats enc_stats_pre;
|
||||
EncStats enc_stats_post;
|
||||
|
||||
/*
|
||||
* bool on whether this stream should be utilized for splitting
|
||||
* subtitles utilizing fix_sub_duration at random access points.
|
||||
*/
|
||||
unsigned int fix_sub_duration_heartbeat;
|
||||
} OutputStream;
|
||||
|
||||
typedef struct OutputFile {
|
||||
const AVClass *clazz;
|
||||
|
||||
int index;
|
||||
|
||||
const AVOutputFormat *format;
|
||||
const char *url;
|
||||
|
||||
OutputStream **streams;
|
||||
int nb_streams;
|
||||
|
||||
SyncQueue *sq_encode;
|
||||
|
||||
AVFormatContext *ctx;
|
||||
AVDictionary *opts;
|
||||
int ost_index; /* index of the first stream in output_streams */
|
||||
int64_t recording_time; ///< desired length of the resulting file in microseconds == AV_TIME_BASE units
|
||||
int64_t start_time; ///< start time in microseconds == AV_TIME_BASE units
|
||||
uint64_t limit_filesize; /* filesize limit expressed in bytes */
|
||||
|
||||
int shortest;
|
||||
|
||||
int header_written;
|
||||
int bitexact;
|
||||
} OutputFile;
|
||||
|
||||
extern __thread InputStream **input_streams;
|
||||
extern __thread int nb_input_streams;
|
||||
extern __thread InputFile **input_files;
|
||||
extern __thread int nb_input_files;
|
||||
|
||||
extern __thread OutputStream **output_streams;
|
||||
extern __thread int nb_output_streams;
|
||||
extern __thread OutputFile **output_files;
|
||||
extern __thread int nb_output_files;
|
||||
|
||||
@@ -658,13 +774,10 @@ extern __thread float audio_drift_threshold;
|
||||
extern __thread float dts_delta_threshold;
|
||||
extern __thread float dts_error_threshold;
|
||||
|
||||
extern __thread int audio_volume;
|
||||
extern __thread int audio_sync_method;
|
||||
extern __thread enum VideoSyncMethod video_sync_method;
|
||||
extern __thread float frame_drop_threshold;
|
||||
extern __thread int do_benchmark;
|
||||
extern __thread int do_benchmark_all;
|
||||
extern __thread int do_deinterlace;
|
||||
extern __thread int do_hex_dump;
|
||||
extern __thread int do_pkt_dump;
|
||||
extern __thread int copy_ts;
|
||||
@@ -677,7 +790,6 @@ extern __thread int print_stats;
|
||||
extern __thread int64_t stats_period;
|
||||
extern __thread int qp_hist;
|
||||
extern __thread int stdin_interaction;
|
||||
extern __thread int frame_bits_per_raw_sample;
|
||||
extern __thread AVIOContext *progress_avio;
|
||||
extern __thread float max_error_rate;
|
||||
|
||||
@@ -688,15 +800,20 @@ extern __thread int auto_conversion_filters;
|
||||
|
||||
extern __thread const AVIOInterruptCB int_cb;
|
||||
|
||||
#if CONFIG_QSV
|
||||
extern __thread char *qsv_device;
|
||||
#endif
|
||||
extern __thread HWDevice *filter_hw_device;
|
||||
|
||||
extern __thread int want_sdp;
|
||||
extern __thread unsigned nb_output_dumped;
|
||||
extern __thread int main_ffmpeg_return_code;
|
||||
|
||||
extern __thread int ignore_unknown_streams;
|
||||
extern __thread int copy_unknown_streams;
|
||||
|
||||
extern __thread int recast_media;
|
||||
|
||||
#if FFMPEG_OPT_PSNR
|
||||
extern __thread int do_psnr;
|
||||
#endif
|
||||
|
||||
void term_init(void);
|
||||
void term_exit(void);
|
||||
|
||||
@@ -705,7 +822,12 @@ void show_usage(void);
|
||||
void remove_avoptions(AVDictionary **a, AVDictionary *b);
|
||||
void assert_avoptions(AVDictionary *m);
|
||||
|
||||
int guess_input_channel_layout(InputStream *ist);
|
||||
void assert_file_overwrite(const char *filename);
|
||||
char *file_read(const char *filename);
|
||||
AVDictionary *strip_specifiers(const AVDictionary *dict);
|
||||
const AVCodec *find_codec_or_die(void *logctx, const char *name,
|
||||
enum AVMediaType type, int encoder);
|
||||
int parse_and_set_vsync(const char *arg, int *vsync_var, int file_idx, int st_idx, int is_global);
|
||||
|
||||
int configure_filtergraph(FilterGraph *fg);
|
||||
void check_filter_outputs(void);
|
||||
@@ -719,8 +841,9 @@ 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);
|
||||
void enc_stats_write(OutputStream *ost, EncStats *es,
|
||||
const AVFrame *frame, const AVPacket *pkt,
|
||||
uint64_t frame_num);
|
||||
|
||||
HWDevice *hw_device_get_by_name(const char *name);
|
||||
int hw_device_init_from_string(const char *arg, HWDevice **dev);
|
||||
@@ -732,15 +855,58 @@ int hw_device_setup_for_filter(FilterGraph *fg);
|
||||
|
||||
int hwaccel_decode_init(AVCodecContext *avctx);
|
||||
|
||||
/* open the muxer when all the streams are initialized */
|
||||
int of_check_init(OutputFile *of);
|
||||
/*
|
||||
* Initialize muxing state for the given stream, should be called
|
||||
* after the codec/streamcopy setup has been done.
|
||||
*
|
||||
* Open the muxer once all the streams have been initialized.
|
||||
*/
|
||||
int of_stream_init(OutputFile *of, OutputStream *ost);
|
||||
int of_write_trailer(OutputFile *of);
|
||||
int of_open(const OptionsContext *o, const char *filename);
|
||||
void of_close(OutputFile **pof);
|
||||
|
||||
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
int unqueue);
|
||||
void of_enc_stats_close(void);
|
||||
|
||||
void set_report_callback(void (*callback)(int, float, float, int64_t, int, double, double));
|
||||
/*
|
||||
* Send a single packet to the output, applying any bitstream filters
|
||||
* associated with the output stream. This may result in any number
|
||||
* of packets actually being written, depending on what bitstream
|
||||
* filters are applied. The supplied packet is consumed and will be
|
||||
* blank (as if newly-allocated) when this function returns.
|
||||
*
|
||||
* If eof is set, instead indicate EOF to all bitstream filters and
|
||||
* therefore flush any delayed packets to the output. A blank packet
|
||||
* must be supplied in this case.
|
||||
*/
|
||||
void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof);
|
||||
int64_t of_filesize(OutputFile *of);
|
||||
|
||||
int ifile_open(const OptionsContext *o, const char *filename);
|
||||
void ifile_close(InputFile **f);
|
||||
|
||||
/**
|
||||
* Get next input packet from the demuxer.
|
||||
*
|
||||
* @param pkt the packet is written here when this function returns 0
|
||||
* @return
|
||||
* - 0 when a packet has been read successfully
|
||||
* - 1 when stream end was reached, but the stream is looped;
|
||||
* caller should flush decoders and read from this demuxer again
|
||||
* - a negative error code on failure
|
||||
*/
|
||||
int ifile_get_packet(InputFile *f, AVPacket **pkt);
|
||||
|
||||
/* iterate over all input streams in all input files;
|
||||
* pass NULL to start iteration */
|
||||
InputStream *ist_iter(InputStream *prev);
|
||||
|
||||
extern const char * const opt_name_codec_names[];
|
||||
extern const char * const opt_name_codec_tags[];
|
||||
extern const char * const opt_name_frame_rates[];
|
||||
extern const char * const opt_name_top_field_first[];
|
||||
|
||||
void set_report_callback(void (*callback)(int, float, float, int64_t, double, double, double));
|
||||
void cancel_operation(long id);
|
||||
|
||||
#endif /* FFTOOLS_FFMPEG_H */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* ffmpeg filter configuration
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -24,6 +25,12 @@
|
||||
* We manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 08.2018
|
||||
@@ -69,8 +76,9 @@ static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *c
|
||||
}
|
||||
}
|
||||
|
||||
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
const AVCodec *codec, enum AVPixelFormat target)
|
||||
enum AVPixelFormat
|
||||
choose_pixel_fmt(const AVCodec *codec, enum AVPixelFormat target,
|
||||
int strict_std_compliance)
|
||||
{
|
||||
if (codec && codec->pix_fmts) {
|
||||
const enum AVPixelFormat *p = codec->pix_fmts;
|
||||
@@ -79,7 +87,7 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
int has_alpha = desc ? desc->nb_components % 2 == 0 : 0;
|
||||
enum AVPixelFormat best= AV_PIX_FMT_NONE;
|
||||
|
||||
if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
if (strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
p = get_compliance_normal_pix_fmts(codec, p);
|
||||
}
|
||||
for (; *p != AV_PIX_FMT_NONE; p++) {
|
||||
@@ -106,6 +114,7 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
|
||||
static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
{
|
||||
OutputStream *ost = ofilter->ost;
|
||||
AVCodecContext *enc = ost->enc_ctx;
|
||||
const AVDictionaryEntry *strict_dict = av_dict_get(ost->encoder_opts, "strict", NULL, 0);
|
||||
if (strict_dict)
|
||||
// used by choose_pixel_fmt() and below
|
||||
@@ -119,13 +128,14 @@ static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
return av_get_pix_fmt_name(ost->enc_ctx->pix_fmt);
|
||||
}
|
||||
if (ost->enc_ctx->pix_fmt != AV_PIX_FMT_NONE) {
|
||||
return av_get_pix_fmt_name(choose_pixel_fmt(ost->st, ost->enc_ctx, ost->enc, ost->enc_ctx->pix_fmt));
|
||||
} else if (ost->enc && ost->enc->pix_fmts) {
|
||||
return av_get_pix_fmt_name(choose_pixel_fmt(enc->codec, enc->pix_fmt,
|
||||
ost->enc_ctx->strict_std_compliance));
|
||||
} else if (enc->codec->pix_fmts) {
|
||||
const enum AVPixelFormat *p;
|
||||
|
||||
p = ost->enc->pix_fmts;
|
||||
p = enc->codec->pix_fmts;
|
||||
if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
|
||||
p = get_compliance_normal_pix_fmts(ost->enc, p);
|
||||
p = get_compliance_normal_pix_fmts(enc->codec, p);
|
||||
}
|
||||
|
||||
for (; *p != AV_PIX_FMT_NONE; p++) {
|
||||
@@ -133,7 +143,7 @@ static const char *choose_pix_fmts(OutputFilter *ofilter, AVBPrint *bprint)
|
||||
av_bprintf(bprint, "%s%c", name, p[1] == AV_PIX_FMT_NONE ? '\0' : '|');
|
||||
}
|
||||
if (!av_bprint_is_complete(bprint))
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return bprint->str;
|
||||
} else
|
||||
return NULL;
|
||||
@@ -197,7 +207,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
||||
InputFilter *ifilter;
|
||||
|
||||
if (!fg)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
fg->index = nb_filtergraphs;
|
||||
|
||||
ofilter = ALLOC_ARRAY_ELEM(fg->outputs, fg->nb_outputs);
|
||||
@@ -214,7 +224,7 @@ int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
|
||||
|
||||
ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!ifilter->frame_queue)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
GROW_ARRAY(ist->filters, ist->nb_filters);
|
||||
ist->filters[ist->nb_filters - 1] = ifilter;
|
||||
@@ -238,7 +248,7 @@ static char *describe_filter_link(FilterGraph *fg, AVFilterInOut *inout, int in)
|
||||
res = av_asprintf("%s:%s", ctx->filter->name,
|
||||
avfilter_pad_get_name(pads, inout->pad_idx));
|
||||
if (!res)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
return res;
|
||||
}
|
||||
|
||||
@@ -285,7 +295,7 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
"matches no streams.\n", p, fg->graph_desc);
|
||||
exit_program(1);
|
||||
}
|
||||
ist = input_streams[input_files[file_idx]->ist_index + st->index];
|
||||
ist = input_files[file_idx]->streams[st->index];
|
||||
if (ist->user_set_discard == AVDISCARD_ALL) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Stream specifier '%s' in filtergraph description %s "
|
||||
"matches a disabled input stream.\n", p, fg->graph_desc);
|
||||
@@ -293,14 +303,13 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
}
|
||||
} else {
|
||||
/* find the first unused stream of corresponding type */
|
||||
for (i = 0; i < nb_input_streams; i++) {
|
||||
ist = input_streams[i];
|
||||
for (ist = ist_iter(NULL); ist; ist = ist_iter(ist)) {
|
||||
if (ist->user_set_discard == AVDISCARD_ALL)
|
||||
continue;
|
||||
if (ist->dec_ctx->codec_type == type && ist->discard)
|
||||
break;
|
||||
}
|
||||
if (i == nb_input_streams) {
|
||||
if (!ist) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Cannot find a matching stream for "
|
||||
"unlabeled input pad %d on filter %s\n", in->pad_idx,
|
||||
in->filter_ctx->name);
|
||||
@@ -323,12 +332,162 @@ static void init_input_filter(FilterGraph *fg, AVFilterInOut *in)
|
||||
|
||||
ifilter->frame_queue = av_fifo_alloc2(8, sizeof(AVFrame*), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!ifilter->frame_queue)
|
||||
exit_program(1);
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
GROW_ARRAY(ist->filters, ist->nb_filters);
|
||||
ist->filters[ist->nb_filters - 1] = ifilter;
|
||||
}
|
||||
|
||||
static int read_binary(const char *path, uint8_t **data, int *len)
|
||||
{
|
||||
AVIOContext *io = NULL;
|
||||
int64_t fsize;
|
||||
int ret;
|
||||
|
||||
*data = NULL;
|
||||
*len = 0;
|
||||
|
||||
ret = avio_open2(&io, path, AVIO_FLAG_READ, &int_cb, NULL);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Cannot open file '%s': %s\n",
|
||||
path, av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
fsize = avio_size(io);
|
||||
if (fsize < 0 || fsize > INT_MAX) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Cannot obtain size of file %s\n", path);
|
||||
ret = AVERROR(EIO);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*data = av_malloc(fsize);
|
||||
if (!*data) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = avio_read(io, *data, fsize);
|
||||
if (ret != fsize) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error reading file %s\n", path);
|
||||
ret = ret < 0 ? ret : AVERROR(EIO);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
*len = fsize;
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
avio_close(io);
|
||||
av_freep(data);
|
||||
*len = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int filter_opt_apply(AVFilterContext *f, const char *key, const char *val)
|
||||
{
|
||||
const AVOption *o = NULL;
|
||||
int ret;
|
||||
|
||||
ret = av_opt_set(f, key, val, AV_OPT_SEARCH_CHILDREN);
|
||||
if (ret >= 0)
|
||||
return 0;
|
||||
|
||||
if (ret == AVERROR_OPTION_NOT_FOUND && key[0] == '/')
|
||||
o = av_opt_find(f, key + 1, NULL, 0, AV_OPT_SEARCH_CHILDREN);
|
||||
if (!o)
|
||||
goto err_apply;
|
||||
|
||||
// key is a valid option name prefixed with '/'
|
||||
// interpret value as a path from which to load the actual option value
|
||||
key++;
|
||||
|
||||
if (o->type == AV_OPT_TYPE_BINARY) {
|
||||
uint8_t *data;
|
||||
int len;
|
||||
|
||||
ret = read_binary(val, &data, &len);
|
||||
if (ret < 0)
|
||||
goto err_load;
|
||||
|
||||
ret = av_opt_set_bin(f, key, data, len, AV_OPT_SEARCH_CHILDREN);
|
||||
av_freep(&data);
|
||||
} else {
|
||||
char *data = file_read(val);
|
||||
if (!data) {
|
||||
ret = AVERROR(EIO);
|
||||
goto err_load;
|
||||
}
|
||||
|
||||
ret = av_opt_set(f, key, data, AV_OPT_SEARCH_CHILDREN);
|
||||
av_freep(&data);
|
||||
}
|
||||
if (ret < 0)
|
||||
goto err_apply;
|
||||
|
||||
return 0;
|
||||
|
||||
err_apply:
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Error applying option '%s' to filter '%s': %s\n",
|
||||
key, f->filter->name, av_err2str(ret));
|
||||
return ret;
|
||||
err_load:
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Error loading value for option '%s' from file '%s'\n",
|
||||
key, val);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int graph_opts_apply(AVFilterGraphSegment *seg)
|
||||
{
|
||||
for (size_t i = 0; i < seg->nb_chains; i++) {
|
||||
AVFilterChain *ch = seg->chains[i];
|
||||
|
||||
for (size_t j = 0; j < ch->nb_filters; j++) {
|
||||
AVFilterParams *p = ch->filters[j];
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
|
||||
av_assert0(p->filter);
|
||||
|
||||
while ((e = av_dict_iterate(p->opts, e))) {
|
||||
int ret = filter_opt_apply(p->filter, e->key, e->value);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
av_dict_free(&p->opts);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int graph_parse(AVFilterGraph *graph, const char *desc,
|
||||
AVFilterInOut **inputs, AVFilterInOut **outputs)
|
||||
{
|
||||
AVFilterGraphSegment *seg;
|
||||
int ret;
|
||||
|
||||
ret = avfilter_graph_segment_parse(graph, desc, 0, &seg);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = avfilter_graph_segment_create_filters(seg, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
ret = graph_opts_apply(seg);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
ret = avfilter_graph_segment_apply(seg, 0, inputs, outputs);
|
||||
|
||||
fail:
|
||||
avfilter_graph_segment_free(&seg);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int init_complex_filtergraph(FilterGraph *fg)
|
||||
{
|
||||
AVFilterInOut *inputs, *outputs, *cur;
|
||||
@@ -342,7 +501,7 @@ int init_complex_filtergraph(FilterGraph *fg)
|
||||
return AVERROR(ENOMEM);
|
||||
graph->nb_threads = 1;
|
||||
|
||||
ret = avfilter_graph_parse2(graph, fg->graph_desc, &inputs, &outputs);
|
||||
ret = graph_parse(graph, fg->graph_desc, &inputs, &outputs);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
@@ -467,8 +626,7 @@ static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
snprintf(args, sizeof(args), "%d:%d",
|
||||
ofilter->width, ofilter->height);
|
||||
|
||||
while ((e = av_dict_get(ost->sws_dict, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((e = av_dict_iterate(ost->sws_dict, e))) {
|
||||
av_strlcatf(args, sizeof(args), ":%s=%s", e->key, e->value);
|
||||
}
|
||||
|
||||
@@ -575,6 +733,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
pad_idx = 0; \
|
||||
} while (0)
|
||||
av_bprint_init(&args, 0, AV_BPRINT_SIZE_UNLIMITED);
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
if (ost->audio_channels_mapped) {
|
||||
AVChannelLayout mapped_layout = { 0 };
|
||||
int i;
|
||||
@@ -587,6 +746,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
AUTO_INSERT_FILTER("-map_channel", "pan", args.str);
|
||||
av_bprint_clear(&args);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (codec->ch_layout.order == AV_CHANNEL_ORDER_UNSPEC)
|
||||
av_channel_layout_default(&codec->ch_layout, codec->ch_layout.nb_channels);
|
||||
@@ -620,11 +780,11 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
|
||||
if (ost->apad && of->shortest) {
|
||||
int i;
|
||||
|
||||
for (i=0; i<of->ctx->nb_streams; i++)
|
||||
if (of->ctx->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||
for (i = 0; i < of->nb_streams; i++)
|
||||
if (of->streams[i]->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
|
||||
break;
|
||||
|
||||
if (i<of->ctx->nb_streams) {
|
||||
if (i < of->nb_streams) {
|
||||
AUTO_INSERT_FILTER("-apad", "apad", ost->apad);
|
||||
}
|
||||
}
|
||||
@@ -751,7 +911,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter,
|
||||
}
|
||||
|
||||
if (!fr.num)
|
||||
fr = av_guess_frame_rate(input_files[ist->file_index]->ctx, ist->st, NULL);
|
||||
fr = ist->framerate_guessed;
|
||||
|
||||
if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_SUBTITLE) {
|
||||
ret = sub2video_prepare(ist, ifilter);
|
||||
@@ -904,40 +1064,6 @@ static int configure_input_audio_filter(FilterGraph *fg, InputFilter *ifilter,
|
||||
last_filter = filt_ctx; \
|
||||
} while (0)
|
||||
|
||||
if (audio_sync_method > 0) {
|
||||
char args[256] = {0};
|
||||
|
||||
av_strlcatf(args, sizeof(args), "async=%d", audio_sync_method);
|
||||
if (audio_drift_threshold != 0.1)
|
||||
av_strlcatf(args, sizeof(args), ":min_hard_comp=%f", audio_drift_threshold);
|
||||
if (!fg->reconfiguration)
|
||||
av_strlcatf(args, sizeof(args), ":first_pts=0");
|
||||
AUTO_INSERT_FILTER_INPUT("-async", "aresample", args);
|
||||
}
|
||||
|
||||
// if (ost->audio_channels_mapped) {
|
||||
// int i;
|
||||
// AVBPrint pan_buf;
|
||||
// av_bprint_init(&pan_buf, 256, 8192);
|
||||
// av_bprintf(&pan_buf, "0x%"PRIx64,
|
||||
// av_get_default_channel_layout(ost->audio_channels_mapped));
|
||||
// for (i = 0; i < ost->audio_channels_mapped; i++)
|
||||
// if (ost->audio_channels_map[i] != -1)
|
||||
// av_bprintf(&pan_buf, ":c%d=c%d", i, ost->audio_channels_map[i]);
|
||||
// AUTO_INSERT_FILTER_INPUT("-map_channel", "pan", pan_buf.str);
|
||||
// av_bprint_finalize(&pan_buf, NULL);
|
||||
// }
|
||||
|
||||
if (audio_volume != 256) {
|
||||
char args[256];
|
||||
|
||||
av_log(NULL, AV_LOG_WARNING, "-vol has been deprecated. Use the volume "
|
||||
"audio filter instead.\n");
|
||||
|
||||
snprintf(args, sizeof(args), "%f", audio_volume / 256.);
|
||||
AUTO_INSERT_FILTER_INPUT("-vol", "volume", args);
|
||||
}
|
||||
|
||||
snprintf(name, sizeof(name), "trim for input stream %d:%d",
|
||||
ist->file_index, ist->st->index);
|
||||
if (copy_ts) {
|
||||
@@ -1020,44 +1146,39 @@ int configure_filtergraph(FilterGraph *fg)
|
||||
|
||||
if (simple) {
|
||||
OutputStream *ost = fg->outputs[0]->ost;
|
||||
char args[512];
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
|
||||
if (filter_nbthreads) {
|
||||
ret = av_opt_set(fg->graph, "threads", filter_nbthreads, 0);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
} else {
|
||||
const AVDictionaryEntry *e = NULL;
|
||||
e = av_dict_get(ost->encoder_opts, "threads", NULL, 0);
|
||||
if (e)
|
||||
av_opt_set(fg->graph, "threads", e->value, 0);
|
||||
}
|
||||
|
||||
args[0] = 0;
|
||||
e = NULL;
|
||||
while ((e = av_dict_get(ost->sws_dict, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
|
||||
}
|
||||
if (strlen(args)) {
|
||||
args[strlen(args)-1] = 0;
|
||||
fg->graph->scale_sws_opts = av_strdup(args);
|
||||
if (av_dict_count(ost->sws_dict)) {
|
||||
ret = av_dict_get_string(ost->sws_dict,
|
||||
&fg->graph->scale_sws_opts,
|
||||
'=', ':');
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
args[0] = 0;
|
||||
e = NULL;
|
||||
while ((e = av_dict_get(ost->swr_opts, "", e,
|
||||
AV_DICT_IGNORE_SUFFIX))) {
|
||||
av_strlcatf(args, sizeof(args), "%s=%s:", e->key, e->value);
|
||||
if (av_dict_count(ost->swr_opts)) {
|
||||
char *args;
|
||||
ret = av_dict_get_string(ost->swr_opts, &args, '=', ':');
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
av_opt_set(fg->graph, "aresample_swr_opts", args, 0);
|
||||
av_free(args);
|
||||
}
|
||||
if (strlen(args))
|
||||
args[strlen(args)-1] = 0;
|
||||
av_opt_set(fg->graph, "aresample_swr_opts", args, 0);
|
||||
} else {
|
||||
fg->graph->nb_threads = filter_complex_nbthreads;
|
||||
}
|
||||
|
||||
if ((ret = avfilter_graph_parse2(fg->graph, graph_desc, &inputs, &outputs)) < 0)
|
||||
if ((ret = graph_parse(fg->graph, graph_desc, &inputs, &outputs)) < 0)
|
||||
goto fail;
|
||||
|
||||
ret = hw_device_setup_for_filter(fg);
|
||||
@@ -1131,16 +1252,8 @@ int configure_filtergraph(FilterGraph *fg)
|
||||
|
||||
for (i = 0; i < fg->nb_outputs; i++) {
|
||||
OutputStream *ost = fg->outputs[i]->ost;
|
||||
if (!ost->enc) {
|
||||
/* identical to the same check in ffmpeg.c, needed because
|
||||
complex filter graphs are initialized earlier */
|
||||
av_log(NULL, AV_LOG_ERROR, "Encoder (codec %s) not found for output stream #%d:%d\n",
|
||||
avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
if (ost->enc->type == AVMEDIA_TYPE_AUDIO &&
|
||||
!(ost->enc->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
|
||||
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_AUDIO &&
|
||||
!(ost->enc_ctx->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE))
|
||||
av_buffersink_set_frame_size(ost->filter->filter,
|
||||
ost->enc_ctx->frame_size);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* copyright (c) 2018 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2018-2019 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -23,6 +24,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 12.2019
|
||||
@@ -357,7 +364,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
if (ist->hwaccel_id == HWACCEL_AUTO) {
|
||||
ist->hwaccel_device_type = dev->type;
|
||||
} else if (ist->hwaccel_device_type != dev->type) {
|
||||
av_log(ist->dec_ctx, AV_LOG_ERROR, "Invalid hwaccel device "
|
||||
av_log(NULL, AV_LOG_ERROR, "Invalid hwaccel device "
|
||||
"specified for decoder: device %s of type %s is not "
|
||||
"usable with hwaccel %s.\n", dev->name,
|
||||
av_hwdevice_get_type_name(dev->type),
|
||||
@@ -408,7 +415,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
type = config->device_type;
|
||||
dev = hw_device_get_by_type(type);
|
||||
if (dev) {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with existing device %s.\n",
|
||||
av_hwdevice_get_type_name(type), dev->name);
|
||||
}
|
||||
@@ -426,12 +433,12 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
continue;
|
||||
}
|
||||
if (ist->hwaccel_device) {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with new device created "
|
||||
"from %s.\n", av_hwdevice_get_type_name(type),
|
||||
ist->hwaccel_device);
|
||||
} else {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Using auto "
|
||||
av_log(NULL, AV_LOG_INFO, "Using auto "
|
||||
"hwaccel type %s with new default device.\n",
|
||||
av_hwdevice_get_type_name(type));
|
||||
}
|
||||
@@ -439,7 +446,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
if (dev) {
|
||||
ist->hwaccel_device_type = type;
|
||||
} else {
|
||||
av_log(ist->dec_ctx, AV_LOG_INFO, "Auto hwaccel "
|
||||
av_log(NULL, AV_LOG_INFO, "Auto hwaccel "
|
||||
"disabled: no device found.\n");
|
||||
ist->hwaccel_id = HWACCEL_NONE;
|
||||
return 0;
|
||||
@@ -447,7 +454,7 @@ int hw_device_setup_for_decode(InputStream *ist)
|
||||
}
|
||||
|
||||
if (!dev) {
|
||||
av_log(ist->dec_ctx, AV_LOG_ERROR, "No device available "
|
||||
av_log(NULL, AV_LOG_ERROR, "No device available "
|
||||
"for decoder: device type %s needed for codec %s.\n",
|
||||
av_hwdevice_get_type_name(type), ist->dec->name);
|
||||
return err;
|
||||
@@ -479,7 +486,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
}
|
||||
|
||||
for (i = 0;; i++) {
|
||||
config = avcodec_get_hw_config(ost->enc, i);
|
||||
config = avcodec_get_hw_config(ost->enc_ctx->codec, i);
|
||||
if (!config)
|
||||
break;
|
||||
|
||||
@@ -490,7 +497,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using input "
|
||||
"frames context (format %s) with %s encoder.\n",
|
||||
av_get_pix_fmt_name(ost->enc_ctx->pix_fmt),
|
||||
ost->enc->name);
|
||||
ost->enc_ctx->codec->name);
|
||||
ost->enc_ctx->hw_frames_ctx = av_buffer_ref(frames_ref);
|
||||
if (!ost->enc_ctx->hw_frames_ctx)
|
||||
return AVERROR(ENOMEM);
|
||||
@@ -505,7 +512,7 @@ int hw_device_setup_for_encode(OutputStream *ost)
|
||||
if (dev) {
|
||||
av_log(ost->enc_ctx, AV_LOG_VERBOSE, "Using device %s "
|
||||
"(type %s) with %s encoder.\n", dev->name,
|
||||
av_hwdevice_get_type_name(dev->type), ost->enc->name);
|
||||
av_hwdevice_get_type_name(dev->type), ost->enc_ctx->codec->name);
|
||||
ost->enc_ctx->hw_device_ctx = av_buffer_ref(dev->device_ref);
|
||||
if (!ost->enc_ctx->hw_device_ctx)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
+570
-121
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
@@ -22,6 +23,15 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop the ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
* - want_sdp marked as thread-local
|
||||
* - ms_from_ost migrated from ffmpeg_mux.c and marked as non-static
|
||||
*
|
||||
* ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -31,100 +41,83 @@
|
||||
* - printf replaced with av_log statements
|
||||
*/
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "fftools_ffmpeg.h"
|
||||
#include "fftools_ffmpeg_mux.h"
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/log.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/timestamp.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavformat/avio.h"
|
||||
|
||||
static void close_all_output_streams(OutputStream *ost, OSTFinished this_stream, OSTFinished others)
|
||||
__thread int want_sdp = 1;
|
||||
|
||||
MuxStream *ms_from_ost(OutputStream *ost)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < nb_output_streams; i++) {
|
||||
OutputStream *ost2 = output_streams[i];
|
||||
ost2->finished |= ost == ost2 ? this_stream : others;
|
||||
}
|
||||
return (MuxStream*)ost;
|
||||
}
|
||||
|
||||
void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
int unqueue)
|
||||
static Muxer *mux_from_of(OutputFile *of)
|
||||
{
|
||||
AVFormatContext *s = of->ctx;
|
||||
return (Muxer*)of;
|
||||
}
|
||||
|
||||
static int64_t filesize(AVIOContext *pb)
|
||||
{
|
||||
int64_t ret = -1;
|
||||
|
||||
if (pb) {
|
||||
ret = avio_size(pb);
|
||||
if (ret <= 0) // FIXME improve avio_size() so it works with non seekable output too
|
||||
ret = avio_tell(pb);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int write_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVFormatContext *s = mux->fc;
|
||||
AVStream *st = ost->st;
|
||||
int64_t fs;
|
||||
uint64_t frame_num;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Audio encoders may split the packets -- #frames in != #packets out.
|
||||
* But there is no reordering, so we can limit the number of output packets
|
||||
* by simply dropping them here.
|
||||
* Counting encoded video frames needs to be done separately because of
|
||||
* reordering, see do_video_out().
|
||||
* Do not count the packet when unqueued because it has been counted when queued.
|
||||
*/
|
||||
if (!(st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->encoding_needed) && !unqueue) {
|
||||
if (ost->frame_number >= ost->max_frames) {
|
||||
av_packet_unref(pkt);
|
||||
return;
|
||||
}
|
||||
ost->frame_number++;
|
||||
fs = filesize(s->pb);
|
||||
atomic_store(&mux->last_filesize, fs);
|
||||
if (fs >= mux->limit_filesize) {
|
||||
ret = AVERROR_EOF;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (!of->header_written) {
|
||||
AVPacket *tmp_pkt;
|
||||
/* the muxer is not initialized yet, buffer the packet */
|
||||
if (!av_fifo_can_write(ost->muxing_queue)) {
|
||||
size_t cur_size = av_fifo_can_read(ost->muxing_queue);
|
||||
unsigned int are_we_over_size =
|
||||
(ost->muxing_queue_data_size + pkt->size) > ost->muxing_queue_data_threshold;
|
||||
size_t limit = are_we_over_size ? ost->max_muxing_queue_size : SIZE_MAX;
|
||||
size_t new_size = FFMIN(2 * cur_size, limit);
|
||||
|
||||
if (new_size <= cur_size) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Too many packets buffered for output stream %d:%d.\n",
|
||||
ost->file_index, ost->st->index);
|
||||
exit_program(1);
|
||||
}
|
||||
ret = av_fifo_grow2(ost->muxing_queue, new_size - cur_size);
|
||||
if (ret < 0)
|
||||
exit_program(1);
|
||||
}
|
||||
ret = av_packet_make_refcounted(pkt);
|
||||
if (ret < 0)
|
||||
exit_program(1);
|
||||
tmp_pkt = av_packet_alloc();
|
||||
if (!tmp_pkt)
|
||||
exit_program(1);
|
||||
av_packet_move_ref(tmp_pkt, pkt);
|
||||
ost->muxing_queue_data_size += tmp_pkt->size;
|
||||
av_fifo_write(ost->muxing_queue, &tmp_pkt, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->vsync_method == VSYNC_DROP) ||
|
||||
(st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && audio_sync_method < 0))
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && ost->vsync_method == VSYNC_DROP)
|
||||
pkt->pts = pkt->dts = AV_NOPTS_VALUE;
|
||||
|
||||
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
|
||||
if (ost->frame_rate.num && ost->is_cfr) {
|
||||
if (pkt->duration > 0)
|
||||
av_log(NULL, AV_LOG_WARNING, "Overriding packet duration by frame rate, this should not happen\n");
|
||||
av_log(ost, AV_LOG_WARNING, "Overriding packet duration by frame rate, this should not happen\n");
|
||||
pkt->duration = av_rescale_q(1, av_inv_q(ost->frame_rate),
|
||||
ost->mux_timebase);
|
||||
pkt->time_base);
|
||||
}
|
||||
}
|
||||
|
||||
av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
|
||||
av_packet_rescale_ts(pkt, pkt->time_base, ost->st->time_base);
|
||||
pkt->time_base = ost->st->time_base;
|
||||
|
||||
if (!(s->oformat->flags & AVFMT_NOTIMESTAMPS)) {
|
||||
if (pkt->dts != AV_NOPTS_VALUE &&
|
||||
@@ -134,25 +127,26 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
pkt->dts, pkt->pts,
|
||||
ost->file_index, ost->st->index);
|
||||
pkt->pts =
|
||||
pkt->dts = pkt->pts + pkt->dts + ost->last_mux_dts + 1
|
||||
- FFMIN3(pkt->pts, pkt->dts, ost->last_mux_dts + 1)
|
||||
- FFMAX3(pkt->pts, pkt->dts, ost->last_mux_dts + 1);
|
||||
pkt->dts = pkt->pts + pkt->dts + ms->last_mux_dts + 1
|
||||
- FFMIN3(pkt->pts, pkt->dts, ms->last_mux_dts + 1)
|
||||
- FFMAX3(pkt->pts, pkt->dts, ms->last_mux_dts + 1);
|
||||
}
|
||||
if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO || st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) &&
|
||||
pkt->dts != AV_NOPTS_VALUE &&
|
||||
ost->last_mux_dts != AV_NOPTS_VALUE) {
|
||||
int64_t max = ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT);
|
||||
ms->last_mux_dts != AV_NOPTS_VALUE) {
|
||||
int64_t max = ms->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT);
|
||||
if (pkt->dts < max) {
|
||||
int loglevel = max - pkt->dts > 2 || st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ? AV_LOG_WARNING : AV_LOG_DEBUG;
|
||||
if (exit_on_error)
|
||||
loglevel = AV_LOG_ERROR;
|
||||
av_log(s, loglevel, "Non-monotonous DTS in output stream "
|
||||
"%d:%d; previous: %"PRId64", current: %"PRId64"; ",
|
||||
ost->file_index, ost->st->index, ost->last_mux_dts, pkt->dts);
|
||||
ost->file_index, ost->st->index, ms->last_mux_dts, pkt->dts);
|
||||
if (exit_on_error) {
|
||||
av_log(NULL, AV_LOG_FATAL, "aborting.\n");
|
||||
exit_program(1);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
av_log(s, loglevel, "changing to %"PRId64". This may result "
|
||||
"in incorrect timestamps in the output file.\n",
|
||||
max);
|
||||
@@ -162,17 +156,17 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
}
|
||||
}
|
||||
}
|
||||
ost->last_mux_dts = pkt->dts;
|
||||
ms->last_mux_dts = pkt->dts;
|
||||
|
||||
ost->data_size += pkt->size;
|
||||
ost->packets_written++;
|
||||
ost->data_size_mux += pkt->size;
|
||||
frame_num = atomic_fetch_add(&ost->packets_written, 1);
|
||||
|
||||
pkt->stream_index = ost->index;
|
||||
|
||||
if (debug_ts) {
|
||||
av_log(NULL, AV_LOG_INFO, "muxer <- type:%s "
|
||||
av_log(ost, AV_LOG_INFO, "muxer <- type:%s "
|
||||
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s size:%d\n",
|
||||
av_get_media_type_string(ost->enc_ctx->codec_type),
|
||||
av_get_media_type_string(st->codecpar->codec_type),
|
||||
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->st->time_base),
|
||||
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->st->time_base),
|
||||
av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, &ost->st->time_base),
|
||||
@@ -180,12 +174,307 @@ void of_write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost,
|
||||
);
|
||||
}
|
||||
|
||||
if (ms->stats.io)
|
||||
enc_stats_write(ost, &ms->stats, NULL, pkt, frame_num);
|
||||
|
||||
ret = av_interleaved_write_frame(s, pkt);
|
||||
if (ret < 0) {
|
||||
print_error("av_interleaved_write_frame()", ret);
|
||||
main_ffmpeg_return_code = 1;
|
||||
close_all_output_streams(ost, MUXER_FINISHED | ENCODER_FINISHED, ENCODER_FINISHED);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
return 0;
|
||||
fail:
|
||||
av_packet_unref(pkt);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int sync_queue_process(Muxer *mux, OutputStream *ost, AVPacket *pkt, int *stream_eof)
|
||||
{
|
||||
OutputFile *of = &mux->of;
|
||||
|
||||
if (ost->sq_idx_mux >= 0) {
|
||||
int ret = sq_send(mux->sq_mux, ost->sq_idx_mux, SQPKT(pkt));
|
||||
if (ret < 0) {
|
||||
if (ret == AVERROR_EOF)
|
||||
*stream_eof = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
while (1) {
|
||||
ret = sq_receive(mux->sq_mux, -1, SQPKT(mux->sq_pkt));
|
||||
if (ret < 0)
|
||||
return (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) ? 0 : ret;
|
||||
|
||||
ret = write_packet(mux, of->streams[ret],
|
||||
mux->sq_pkt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
} else if (pkt)
|
||||
return write_packet(mux, ost, pkt);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void thread_set_name(OutputFile *of)
|
||||
{
|
||||
char name[16];
|
||||
snprintf(name, sizeof(name), "mux%d:%s", of->index, of->format->name);
|
||||
ff_thread_setname(name);
|
||||
}
|
||||
|
||||
static void *muxer_thread(void *arg)
|
||||
{
|
||||
Muxer *mux = arg;
|
||||
OutputFile *of = &mux->of;
|
||||
AVPacket *pkt = NULL;
|
||||
int ret = 0;
|
||||
|
||||
pkt = av_packet_alloc();
|
||||
if (!pkt) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
thread_set_name(of);
|
||||
|
||||
while (1) {
|
||||
OutputStream *ost;
|
||||
int stream_idx, stream_eof = 0;
|
||||
|
||||
ret = tq_receive(mux->tq, &stream_idx, pkt);
|
||||
if (stream_idx < 0) {
|
||||
av_log(mux, AV_LOG_VERBOSE, "All streams finished\n");
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
ost = of->streams[stream_idx];
|
||||
ret = sync_queue_process(mux, ost, ret < 0 ? NULL : pkt, &stream_eof);
|
||||
av_packet_unref(pkt);
|
||||
if (ret == AVERROR_EOF && stream_eof)
|
||||
tq_receive_finish(mux->tq, stream_idx);
|
||||
else if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error muxing a packet\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
finish:
|
||||
av_packet_free(&pkt);
|
||||
|
||||
for (unsigned int i = 0; i < mux->fc->nb_streams; i++)
|
||||
tq_receive_finish(mux->tq, i);
|
||||
|
||||
av_log(mux, AV_LOG_VERBOSE, "Terminating muxer thread\n");
|
||||
|
||||
return (void*)(intptr_t)ret;
|
||||
}
|
||||
|
||||
static int thread_submit_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if (!pkt || ost->finished & MUXER_FINISHED)
|
||||
goto finish;
|
||||
|
||||
ret = tq_send(mux->tq, ost->index, pkt);
|
||||
if (ret < 0)
|
||||
goto finish;
|
||||
|
||||
return 0;
|
||||
|
||||
finish:
|
||||
if (pkt)
|
||||
av_packet_unref(pkt);
|
||||
|
||||
ost->finished |= MUXER_FINISHED;
|
||||
tq_send_finish(mux->tq, ost->index);
|
||||
return ret == AVERROR_EOF ? 0 : ret;
|
||||
}
|
||||
|
||||
static int queue_packet(Muxer *mux, OutputStream *ost, AVPacket *pkt)
|
||||
{
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVPacket *tmp_pkt = NULL;
|
||||
int ret;
|
||||
|
||||
if (!av_fifo_can_write(ms->muxing_queue)) {
|
||||
size_t cur_size = av_fifo_can_read(ms->muxing_queue);
|
||||
size_t pkt_size = pkt ? pkt->size : 0;
|
||||
unsigned int are_we_over_size =
|
||||
(ms->muxing_queue_data_size + pkt_size) > ms->muxing_queue_data_threshold;
|
||||
size_t limit = are_we_over_size ? ms->max_muxing_queue_size : SIZE_MAX;
|
||||
size_t new_size = FFMIN(2 * cur_size, limit);
|
||||
|
||||
if (new_size <= cur_size) {
|
||||
av_log(ost, AV_LOG_ERROR,
|
||||
"Too many packets buffered for output stream %d:%d.\n",
|
||||
ost->file_index, ost->st->index);
|
||||
return AVERROR(ENOSPC);
|
||||
}
|
||||
ret = av_fifo_grow2(ms->muxing_queue, new_size - cur_size);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (pkt) {
|
||||
ret = av_packet_make_refcounted(pkt);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
tmp_pkt = av_packet_alloc();
|
||||
if (!tmp_pkt)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
av_packet_move_ref(tmp_pkt, pkt);
|
||||
ms->muxing_queue_data_size += tmp_pkt->size;
|
||||
}
|
||||
av_fifo_write(ms->muxing_queue, &tmp_pkt, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int submit_packet(Muxer *mux, AVPacket *pkt, OutputStream *ost)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (mux->tq) {
|
||||
return thread_submit_packet(mux, ost, pkt);
|
||||
} else {
|
||||
/* the muxer is not initialized yet, buffer the packet */
|
||||
ret = queue_packet(mux, ost, pkt);
|
||||
if (ret < 0) {
|
||||
if (pkt)
|
||||
av_packet_unref(pkt);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void of_output_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int eof)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
const char *err_msg;
|
||||
int ret = 0;
|
||||
|
||||
if (!eof && pkt->dts != AV_NOPTS_VALUE)
|
||||
ost->last_mux_dts = av_rescale_q(pkt->dts, pkt->time_base, AV_TIME_BASE_Q);
|
||||
|
||||
/* apply the output bitstream filters */
|
||||
if (ms->bsf_ctx) {
|
||||
int bsf_eof = 0;
|
||||
|
||||
ret = av_bsf_send_packet(ms->bsf_ctx, eof ? NULL : pkt);
|
||||
if (ret < 0) {
|
||||
err_msg = "submitting a packet for bitstream filtering";
|
||||
goto fail;
|
||||
}
|
||||
|
||||
while (!bsf_eof) {
|
||||
ret = av_bsf_receive_packet(ms->bsf_ctx, pkt);
|
||||
if (ret == AVERROR(EAGAIN))
|
||||
return;
|
||||
else if (ret == AVERROR_EOF)
|
||||
bsf_eof = 1;
|
||||
else if (ret < 0) {
|
||||
err_msg = "applying bitstream filters to a packet";
|
||||
goto fail;
|
||||
}
|
||||
|
||||
ret = submit_packet(mux, bsf_eof ? NULL : pkt, ost);
|
||||
if (ret < 0)
|
||||
goto mux_fail;
|
||||
}
|
||||
} else {
|
||||
ret = submit_packet(mux, eof ? NULL : pkt, ost);
|
||||
if (ret < 0)
|
||||
goto mux_fail;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
mux_fail:
|
||||
err_msg = "submitting a packet to the muxer";
|
||||
|
||||
fail:
|
||||
av_log(ost, AV_LOG_ERROR, "Error %s\n", err_msg);
|
||||
if (exit_on_error)
|
||||
exit_program(1);
|
||||
|
||||
}
|
||||
|
||||
static int thread_stop(Muxer *mux)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
if (!mux || !mux->tq)
|
||||
return 0;
|
||||
|
||||
for (unsigned int i = 0; i < mux->fc->nb_streams; i++)
|
||||
tq_send_finish(mux->tq, i);
|
||||
|
||||
pthread_join(mux->thread, &ret);
|
||||
|
||||
tq_free(&mux->tq);
|
||||
|
||||
return (int)(intptr_t)ret;
|
||||
}
|
||||
|
||||
static void pkt_move(void *dst, void *src)
|
||||
{
|
||||
av_packet_move_ref(dst, src);
|
||||
}
|
||||
|
||||
static int thread_start(Muxer *mux)
|
||||
{
|
||||
AVFormatContext *fc = mux->fc;
|
||||
ObjPool *op;
|
||||
int ret;
|
||||
|
||||
op = objpool_alloc_packets();
|
||||
if (!op)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
mux->tq = tq_alloc(fc->nb_streams, mux->thread_queue_size, op, pkt_move);
|
||||
if (!mux->tq) {
|
||||
objpool_free(&op);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
ret = pthread_create(&mux->thread, NULL, muxer_thread, (void*)mux);
|
||||
if (ret) {
|
||||
tq_free(&mux->tq);
|
||||
return AVERROR(ret);
|
||||
}
|
||||
|
||||
/* flush the muxing queues */
|
||||
for (int i = 0; i < fc->nb_streams; i++) {
|
||||
OutputStream *ost = mux->of.streams[i];
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
AVPacket *pkt;
|
||||
|
||||
/* try to improve muxing time_base (only possible if nothing has been written yet) */
|
||||
if (!av_fifo_can_read(ms->muxing_queue))
|
||||
ost->mux_timebase = ost->st->time_base;
|
||||
|
||||
while (av_fifo_read(ms->muxing_queue, &pkt, 1) >= 0) {
|
||||
ret = thread_submit_packet(mux, ost, pkt);
|
||||
if (pkt) {
|
||||
ms->muxing_queue_data_size -= pkt->size;
|
||||
av_packet_free(&pkt);
|
||||
}
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int print_sdp(void)
|
||||
@@ -197,16 +486,16 @@ static int print_sdp(void)
|
||||
AVFormatContext **avc;
|
||||
|
||||
for (i = 0; i < nb_output_files; i++) {
|
||||
if (!output_files[i]->header_written)
|
||||
if (!mux_from_of(output_files[i])->header_written)
|
||||
return 0;
|
||||
}
|
||||
|
||||
avc = av_malloc_array(nb_output_files, sizeof(*avc));
|
||||
if (!avc)
|
||||
exit_program(1);
|
||||
return AVERROR(ENOMEM);
|
||||
for (i = 0, j = 0; i < nb_output_files; i++) {
|
||||
if (!strcmp(output_files[i]->ctx->oformat->name, "rtp")) {
|
||||
avc[j] = output_files[i]->ctx;
|
||||
if (!strcmp(output_files[i]->format->name, "rtp")) {
|
||||
avc[j] = mux_from_of(output_files[i])->fc;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
@@ -236,34 +525,36 @@ static int print_sdp(void)
|
||||
av_freep(&sdp_filename);
|
||||
}
|
||||
|
||||
// SDP successfully written, allow muxer threads to start
|
||||
ret = 1;
|
||||
|
||||
fail:
|
||||
av_freep(&avc);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* open the muxer when all the streams are initialized */
|
||||
int of_check_init(OutputFile *of)
|
||||
int mux_check_init(Muxer *mux)
|
||||
{
|
||||
OutputFile *of = &mux->of;
|
||||
AVFormatContext *fc = mux->fc;
|
||||
int ret, i;
|
||||
|
||||
for (i = 0; i < of->ctx->nb_streams; i++) {
|
||||
OutputStream *ost = output_streams[of->ost_index + i];
|
||||
for (i = 0; i < fc->nb_streams; i++) {
|
||||
OutputStream *ost = of->streams[i];
|
||||
if (!ost->initialized)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = avformat_write_header(of->ctx, &of->opts);
|
||||
ret = avformat_write_header(fc, &mux->opts);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Could not write header for output file #%d "
|
||||
"(incorrect codec parameters ?): %s\n",
|
||||
of->index, av_err2str(ret));
|
||||
av_log(mux, AV_LOG_ERROR, "Could not write header (incorrect codec "
|
||||
"parameters ?): %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
//assert_avoptions(of->opts);
|
||||
of->header_written = 1;
|
||||
mux->header_written = 1;
|
||||
|
||||
av_dump_format(of->ctx, of->index, of->ctx->url, 1);
|
||||
av_dump_format(fc, of->index, fc->url, 1);
|
||||
nb_output_dumped++;
|
||||
|
||||
if (sdp_filename || want_sdp) {
|
||||
@@ -271,62 +562,220 @@ int of_check_init(OutputFile *of)
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error writing the SDP.\n");
|
||||
return ret;
|
||||
} else if (ret == 1) {
|
||||
/* SDP is written only after all the muxers are ready, so now we
|
||||
* start ALL the threads */
|
||||
for (i = 0; i < nb_output_files; i++) {
|
||||
ret = thread_start(mux_from_of(output_files[i]));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = thread_start(mux_from_of(of));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* flush the muxing queues */
|
||||
for (i = 0; i < of->ctx->nb_streams; i++) {
|
||||
OutputStream *ost = output_streams[of->ost_index + i];
|
||||
AVPacket *pkt;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* try to improve muxing time_base (only possible if nothing has been written yet) */
|
||||
if (!av_fifo_can_read(ost->muxing_queue))
|
||||
ost->mux_timebase = ost->st->time_base;
|
||||
static int bsf_init(MuxStream *ms)
|
||||
{
|
||||
OutputStream *ost = &ms->ost;
|
||||
AVBSFContext *ctx = ms->bsf_ctx;
|
||||
int ret;
|
||||
|
||||
while (av_fifo_read(ost->muxing_queue, &pkt, 1) >= 0) {
|
||||
ost->muxing_queue_data_size -= pkt->size;
|
||||
of_write_packet(of, pkt, ost, 1);
|
||||
av_packet_free(&pkt);
|
||||
if (!ctx)
|
||||
return 0;
|
||||
|
||||
ret = avcodec_parameters_copy(ctx->par_in, ost->st->codecpar);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ctx->time_base_in = ost->st->time_base;
|
||||
|
||||
ret = av_bsf_init(ctx);
|
||||
if (ret < 0) {
|
||||
av_log(ms, AV_LOG_ERROR, "Error initializing bitstream filter: %s\n",
|
||||
ctx->filter->name);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = avcodec_parameters_copy(ost->st->codecpar, ctx->par_out);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
ost->st->time_base = ctx->time_base_out;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int of_stream_init(OutputFile *of, OutputStream *ost)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
MuxStream *ms = ms_from_ost(ost);
|
||||
int ret;
|
||||
|
||||
if (ost->sq_idx_mux >= 0)
|
||||
sq_set_tb(mux->sq_mux, ost->sq_idx_mux, ost->mux_timebase);
|
||||
|
||||
/* initialize bitstream filters for the output stream
|
||||
* needs to be done here, because the codec id for streamcopy is not
|
||||
* known until now */
|
||||
ret = bsf_init(ms);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ost->initialized = 1;
|
||||
|
||||
return mux_check_init(mux);
|
||||
}
|
||||
|
||||
int of_write_trailer(OutputFile *of)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
AVFormatContext *fc = mux->fc;
|
||||
int ret;
|
||||
|
||||
if (!mux->tq) {
|
||||
av_log(mux, AV_LOG_ERROR,
|
||||
"Nothing was written into output file, because "
|
||||
"at least one of its streams received no packets.\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
ret = thread_stop(mux);
|
||||
if (ret < 0)
|
||||
main_ffmpeg_return_code = ret;
|
||||
|
||||
ret = av_write_trailer(fc);
|
||||
if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error writing trailer: %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
mux->last_filesize = filesize(fc->pb);
|
||||
|
||||
if (!(of->format->flags & AVFMT_NOFILE)) {
|
||||
ret = avio_closep(&fc->pb);
|
||||
if (ret < 0) {
|
||||
av_log(mux, AV_LOG_ERROR, "Error closing file: %s\n", av_err2str(ret));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int of_write_trailer(OutputFile *of)
|
||||
static void ost_free(OutputStream **post)
|
||||
{
|
||||
int ret;
|
||||
OutputStream *ost = *post;
|
||||
MuxStream *ms;
|
||||
|
||||
if (!of->header_written) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
"Nothing was written into output file %d (%s), because "
|
||||
"at least one of its streams received no packets.\n",
|
||||
of->index, of->ctx->url);
|
||||
return AVERROR(EINVAL);
|
||||
if (!ost)
|
||||
return;
|
||||
ms = ms_from_ost(ost);
|
||||
|
||||
if (ost->logfile) {
|
||||
if (fclose(ost->logfile))
|
||||
av_log(ms, AV_LOG_ERROR,
|
||||
"Error closing logfile, loss of information possible: %s\n",
|
||||
av_err2str(AVERROR(errno)));
|
||||
ost->logfile = NULL;
|
||||
}
|
||||
|
||||
ret = av_write_trailer(of->ctx);
|
||||
if (ret < 0) {
|
||||
av_log(NULL, AV_LOG_ERROR, "Error writing trailer of %s: %s\n", of->ctx->url, av_err2str(ret));
|
||||
return ret;
|
||||
if (ms->muxing_queue) {
|
||||
AVPacket *pkt;
|
||||
while (av_fifo_read(ms->muxing_queue, &pkt, 1) >= 0)
|
||||
av_packet_free(&pkt);
|
||||
av_fifo_freep2(&ms->muxing_queue);
|
||||
}
|
||||
|
||||
return 0;
|
||||
av_bsf_free(&ms->bsf_ctx);
|
||||
|
||||
av_frame_free(&ost->filtered_frame);
|
||||
av_frame_free(&ost->sq_frame);
|
||||
av_frame_free(&ost->last_frame);
|
||||
av_packet_free(&ost->pkt);
|
||||
av_dict_free(&ost->encoder_opts);
|
||||
|
||||
av_freep(&ost->kf.pts);
|
||||
av_expr_free(ost->kf.pexpr);
|
||||
|
||||
av_freep(&ost->avfilter);
|
||||
av_freep(&ost->logfile_prefix);
|
||||
av_freep(&ost->apad);
|
||||
|
||||
#if FFMPEG_OPT_MAP_CHANNEL
|
||||
av_freep(&ost->audio_channels_map);
|
||||
ost->audio_channels_mapped = 0;
|
||||
#endif
|
||||
|
||||
av_dict_free(&ost->sws_dict);
|
||||
av_dict_free(&ost->swr_opts);
|
||||
|
||||
if (ost->enc_ctx)
|
||||
av_freep(&ost->enc_ctx->stats_in);
|
||||
avcodec_free_context(&ost->enc_ctx);
|
||||
|
||||
for (int i = 0; i < ost->enc_stats_pre.nb_components; i++)
|
||||
av_freep(&ost->enc_stats_pre.components[i].str);
|
||||
av_freep(&ost->enc_stats_pre.components);
|
||||
|
||||
for (int i = 0; i < ost->enc_stats_post.nb_components; i++)
|
||||
av_freep(&ost->enc_stats_post.components[i].str);
|
||||
av_freep(&ost->enc_stats_post.components);
|
||||
|
||||
for (int i = 0; i < ms->stats.nb_components; i++)
|
||||
av_freep(&ms->stats.components[i].str);
|
||||
av_freep(&ms->stats.components);
|
||||
|
||||
av_freep(post);
|
||||
}
|
||||
|
||||
static void fc_close(AVFormatContext **pfc)
|
||||
{
|
||||
AVFormatContext *fc = *pfc;
|
||||
|
||||
if (!fc)
|
||||
return;
|
||||
|
||||
if (!(fc->oformat->flags & AVFMT_NOFILE))
|
||||
avio_closep(&fc->pb);
|
||||
avformat_free_context(fc);
|
||||
|
||||
*pfc = NULL;
|
||||
}
|
||||
|
||||
void of_close(OutputFile **pof)
|
||||
{
|
||||
OutputFile *of = *pof;
|
||||
AVFormatContext *s;
|
||||
Muxer *mux;
|
||||
|
||||
if (!of)
|
||||
return;
|
||||
mux = mux_from_of(of);
|
||||
|
||||
s = of->ctx;
|
||||
if (s && s->oformat && !(s->oformat->flags & AVFMT_NOFILE))
|
||||
avio_closep(&s->pb);
|
||||
avformat_free_context(s);
|
||||
av_dict_free(&of->opts);
|
||||
thread_stop(mux);
|
||||
|
||||
sq_free(&of->sq_encode);
|
||||
sq_free(&mux->sq_mux);
|
||||
|
||||
for (int i = 0; i < of->nb_streams; i++)
|
||||
ost_free(&of->streams[i]);
|
||||
av_freep(&of->streams);
|
||||
|
||||
av_dict_free(&mux->opts);
|
||||
|
||||
av_packet_free(&mux->sq_pkt);
|
||||
|
||||
fc_close(&mux->fc);
|
||||
|
||||
av_freep(pof);
|
||||
}
|
||||
|
||||
int64_t of_filesize(OutputFile *of)
|
||||
{
|
||||
Muxer *mux = mux_from_of(of);
|
||||
return atomic_load(&mux->last_filesize);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
/*
|
||||
* Muxer internal APIs - should not be included outside of ffmpeg_mux*
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of ffmpeg_mux.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
* - want_sdp made thread-local
|
||||
* - EncStatsFile declaration migrated from ffmpeg_mux_init.c
|
||||
* - WARN_MULTIPLE_OPT_USAGE, MATCH_PER_STREAM_OPT, MATCH_PER_TYPE_OPT, SPECIFIER_OPT_FMT declarations migrated from
|
||||
* ffmpeg.h
|
||||
* - ms_from_ost migrated to ffmpeg_mux.c
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_FFMPEG_MUX_H
|
||||
#define FFTOOLS_FFMPEG_MUX_H
|
||||
|
||||
#include <stdatomic.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/dict.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#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)\
|
||||
{\
|
||||
char namestr[128] = "";\
|
||||
const char *spec = so->specifier && so->specifier[0] ? so->specifier : "";\
|
||||
for (int _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);\
|
||||
}
|
||||
|
||||
#define MATCH_PER_STREAM_OPT(name, type, outvar, fmtctx, st)\
|
||||
{\
|
||||
int _ret, _matches = 0;\
|
||||
SpecifierOpt *so;\
|
||||
for (int _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);\
|
||||
}
|
||||
|
||||
#define MATCH_PER_TYPE_OPT(name, type, outvar, fmtctx, mediatype)\
|
||||
{\
|
||||
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;\
|
||||
}\
|
||||
}
|
||||
|
||||
typedef struct MuxStream {
|
||||
OutputStream ost;
|
||||
|
||||
// name used for logging
|
||||
char log_name[32];
|
||||
|
||||
/* the packets are buffered here until the muxer is ready to be initialized */
|
||||
AVFifo *muxing_queue;
|
||||
|
||||
AVBSFContext *bsf_ctx;
|
||||
|
||||
EncStats stats;
|
||||
|
||||
int64_t max_frames;
|
||||
|
||||
/*
|
||||
* The size of the AVPackets' buffers in queue.
|
||||
* Updated when a packet is either pushed or pulled from the queue.
|
||||
*/
|
||||
size_t muxing_queue_data_size;
|
||||
|
||||
int max_muxing_queue_size;
|
||||
|
||||
/* Threshold after which max_muxing_queue_size will be in effect */
|
||||
size_t muxing_queue_data_threshold;
|
||||
|
||||
/* dts of the last packet sent to the muxer, in the stream timebase
|
||||
* used for making up missing dts values */
|
||||
int64_t last_mux_dts;
|
||||
} MuxStream;
|
||||
|
||||
typedef struct Muxer {
|
||||
OutputFile of;
|
||||
|
||||
// name used for logging
|
||||
char log_name[32];
|
||||
|
||||
AVFormatContext *fc;
|
||||
|
||||
pthread_t thread;
|
||||
ThreadQueue *tq;
|
||||
|
||||
AVDictionary *opts;
|
||||
|
||||
int thread_queue_size;
|
||||
|
||||
/* filesize limit expressed in bytes */
|
||||
int64_t limit_filesize;
|
||||
atomic_int_least64_t last_filesize;
|
||||
int header_written;
|
||||
|
||||
SyncQueue *sq_mux;
|
||||
AVPacket *sq_pkt;
|
||||
} Muxer;
|
||||
|
||||
typedef struct EncStatsFile {
|
||||
char *path;
|
||||
AVIOContext *io;
|
||||
} EncStatsFile;
|
||||
|
||||
/* whether we want to print an SDP, set in of_open() */
|
||||
extern __thread int want_sdp;
|
||||
|
||||
int mux_check_init(Muxer *mux);
|
||||
|
||||
#endif /* FFTOOLS_FFMPEG_MUX_H */
|
||||
File diff suppressed because it is too large
Load Diff
+101
-2383
File diff suppressed because it is too large
Load Diff
+80
-39
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (c) 2007-2010 Stefano Sabatini
|
||||
* Copyright (c) 2020 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2020-2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -29,6 +30,13 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop mobile-ffmpeg and later ffmpeg-kit libraries.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*
|
||||
* mobile-ffmpeg / ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -52,9 +60,11 @@
|
||||
#include "libavutil/ffversion.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "libavformat/avformat.h"
|
||||
#include "libavcodec/avcodec.h"
|
||||
#include "libavutil/ambient_viewing_environment.h"
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/avstring.h"
|
||||
#include "libavutil/bprint.h"
|
||||
@@ -163,6 +173,8 @@ typedef struct ReadInterval {
|
||||
__thread ReadInterval *read_intervals;
|
||||
__thread int read_intervals_nb = 0;
|
||||
|
||||
__thread int find_stream_info = 1;
|
||||
|
||||
/* section structure definition */
|
||||
|
||||
#define SECTION_MAX_NB_CHILDREN 10
|
||||
@@ -626,6 +638,7 @@ static inline void writer_put_str_printf(WriterContext *wctx, const char *str)
|
||||
static inline void writer_printf_printf(WriterContext *wctx, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
av_vlog(NULL, AV_LOG_STDERR, fmt, ap);
|
||||
va_end(ap);
|
||||
@@ -671,7 +684,7 @@ static int writer_open(WriterContext **wctx, const Writer *writer, const char *a
|
||||
goto fail;
|
||||
}
|
||||
|
||||
while ((opt = av_dict_get(opts, "", opt, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((opt = av_dict_iterate(opts, opt))) {
|
||||
if ((ret = av_opt_set(*wctx, opt->key, opt->value, AV_OPT_SEARCH_CHILDREN)) < 0) {
|
||||
av_log(*wctx, AV_LOG_ERROR, "Failed to set option '%s' with value '%s' provided to writer context\n",
|
||||
opt->key, opt->value);
|
||||
@@ -1907,12 +1920,14 @@ static void writer_register_all(void)
|
||||
writer_print_string(w, k, pbuf.str, 0); \
|
||||
} while (0)
|
||||
|
||||
#define print_list_fmt(k, f, n, ...) do { \
|
||||
#define print_list_fmt(k, f, n, m, ...) do { \
|
||||
av_bprint_clear(&pbuf); \
|
||||
for (int idx = 0; idx < n; idx++) { \
|
||||
if (idx > 0) \
|
||||
av_bprint_chars(&pbuf, ' ', 1); \
|
||||
av_bprintf(&pbuf, f, __VA_ARGS__); \
|
||||
for (int idx2 = 0; idx2 < m; idx2++) { \
|
||||
if (idx > 0 || idx2 > 0) \
|
||||
av_bprint_chars(&pbuf, ' ', 1); \
|
||||
av_bprintf(&pbuf, f, __VA_ARGS__); \
|
||||
} \
|
||||
} \
|
||||
writer_print_string(w, k, pbuf.str, 0); \
|
||||
} while (0)
|
||||
@@ -1953,7 +1968,7 @@ static inline int show_tags(WriterContext *w, AVDictionary *tags, int section_id
|
||||
return 0;
|
||||
writer_print_section_header(w, section_id);
|
||||
|
||||
while ((tag = av_dict_get(tags, "", tag, AV_DICT_IGNORE_SUFFIX))) {
|
||||
while ((tag = av_dict_iterate(tags, tag))) {
|
||||
if ((ret = print_str_validate(tag->key, tag->value)) < 0)
|
||||
break;
|
||||
}
|
||||
@@ -2023,7 +2038,7 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
const AVDOVIReshapingCurve *curve = &mapping->curves[c];
|
||||
writer_print_section_header(w, SECTION_ID_FRAME_SIDE_DATA_COMPONENT);
|
||||
|
||||
print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, curve->pivots[idx]);
|
||||
print_list_fmt("pivots", "%"PRIu16, curve->num_pivots, 1, curve->pivots[idx]);
|
||||
|
||||
writer_print_section_header(w, SECTION_ID_FRAME_SIDE_DATA_PIECE_LIST);
|
||||
for (int i = 0; i < curve->num_pivots - 1; i++) {
|
||||
@@ -2035,7 +2050,7 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_str("mapping_idc_name", "polynomial");
|
||||
print_int("poly_order", curve->poly_order[i]);
|
||||
print_list_fmt("poly_coef", "%"PRIi64,
|
||||
curve->poly_order[i] + 1,
|
||||
curve->poly_order[i] + 1, 1,
|
||||
curve->poly_coef[i][idx]);
|
||||
break;
|
||||
case AV_DOVI_MAPPING_MMR:
|
||||
@@ -2043,8 +2058,8 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_int("mmr_order", curve->mmr_order[i]);
|
||||
print_int("mmr_constant", curve->mmr_constant[i]);
|
||||
print_list_fmt("mmr_coef", "%"PRIi64,
|
||||
curve->mmr_order[i] * 7,
|
||||
curve->mmr_coef[i][0][idx]);
|
||||
curve->mmr_order[i], 7,
|
||||
curve->mmr_coef[i][idx][idx2]);
|
||||
break;
|
||||
default:
|
||||
print_str("mapping_idc_name", "unknown");
|
||||
@@ -2082,15 +2097,15 @@ static void print_dovi_metadata(WriterContext *w, const AVDOVIMetadata *dovi)
|
||||
print_int("dm_metadata_id", color->dm_metadata_id);
|
||||
print_int("scene_refresh_flag", color->scene_refresh_flag);
|
||||
print_list_fmt("ycc_to_rgb_matrix", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_matrix),
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_matrix), 1,
|
||||
color->ycc_to_rgb_matrix[idx].num,
|
||||
color->ycc_to_rgb_matrix[idx].den);
|
||||
print_list_fmt("ycc_to_rgb_offset", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_offset),
|
||||
FF_ARRAY_ELEMS(color->ycc_to_rgb_offset), 1,
|
||||
color->ycc_to_rgb_offset[idx].num,
|
||||
color->ycc_to_rgb_offset[idx].den);
|
||||
print_list_fmt("rgb_to_lms_matrix", "%d/%d",
|
||||
FF_ARRAY_ELEMS(color->rgb_to_lms_matrix),
|
||||
FF_ARRAY_ELEMS(color->rgb_to_lms_matrix), 1,
|
||||
color->rgb_to_lms_matrix[idx].num,
|
||||
color->rgb_to_lms_matrix[idx].den);
|
||||
print_int("signal_eotf", color->signal_eotf);
|
||||
@@ -2276,6 +2291,17 @@ static void print_dynamic_hdr_vivid(WriterContext *w, const AVDynamicHDRVivid *m
|
||||
}
|
||||
}
|
||||
|
||||
static void print_ambient_viewing_environment(WriterContext *w,
|
||||
const AVAmbientViewingEnvironment *env)
|
||||
{
|
||||
if (!env)
|
||||
return;
|
||||
|
||||
print_q("ambient_illuminance", env->ambient_illuminance, '/');
|
||||
print_q("ambient_light_x", env->ambient_light_x, '/');
|
||||
print_q("ambient_light_y", env->ambient_light_y, '/');
|
||||
}
|
||||
|
||||
static void print_pkt_side_data(WriterContext *w,
|
||||
AVCodecParameters *par,
|
||||
const AVPacketSideData *side_data,
|
||||
@@ -2293,8 +2319,11 @@ static void print_pkt_side_data(WriterContext *w,
|
||||
writer_print_section_header(w, id_data);
|
||||
print_str("side_data_type", name ? name : "unknown");
|
||||
if (sd->type == AV_PKT_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
|
||||
double rotation = av_display_rotation_get((int32_t *)sd->data);
|
||||
if (isnan(rotation))
|
||||
rotation = 0;
|
||||
writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
|
||||
print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
|
||||
print_int("rotation", rotation);
|
||||
} else if (sd->type == AV_PKT_DATA_STEREO3D) {
|
||||
const AVStereo3D *stereo = (AVStereo3D *)sd->data;
|
||||
print_str("type", av_stereo3d_type_name(stereo->type));
|
||||
@@ -2506,8 +2535,12 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
|
||||
print_val("size", pkt->size, unit_byte_str);
|
||||
if (pkt->pos != -1) print_fmt ("pos", "%"PRId64, pkt->pos);
|
||||
else print_str_opt("pos", "N/A");
|
||||
print_fmt("flags", "%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_');
|
||||
print_fmt("flags", "%c%c%c", pkt->flags & AV_PKT_FLAG_KEY ? 'K' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_',
|
||||
pkt->flags & AV_PKT_FLAG_CORRUPT ? 'C' : '_');
|
||||
if (do_show_data)
|
||||
writer_print_data(w, "data", pkt->data, pkt->size);
|
||||
writer_print_data_hash(w, "data_hash", pkt->data, pkt->size);
|
||||
|
||||
if (pkt->side_data_elems) {
|
||||
size_t size;
|
||||
@@ -2526,9 +2559,6 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
|
||||
SECTION_ID_PACKET_SIDE_DATA);
|
||||
}
|
||||
|
||||
if (do_show_data)
|
||||
writer_print_data(w, "data", pkt->data, pkt->size);
|
||||
writer_print_data_hash(w, "data_hash", pkt->data, pkt->size);
|
||||
writer_print_section_footer(w);
|
||||
|
||||
av_bprint_finalize(&pbuf, NULL);
|
||||
@@ -2581,8 +2611,14 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
|
||||
print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
|
||||
print_time("best_effort_timestamp_time", frame->best_effort_timestamp, &stream->time_base);
|
||||
#if LIBAVUTIL_VERSION_MAJOR < 59
|
||||
AV_NOWARN_DEPRECATED(
|
||||
print_duration_ts ("pkt_duration", frame->pkt_duration);
|
||||
print_duration_time("pkt_duration_time", frame->pkt_duration, &stream->time_base);
|
||||
)
|
||||
#endif
|
||||
print_duration_ts ("duration", frame->duration);
|
||||
print_duration_time("duration_time", frame->duration, &stream->time_base);
|
||||
if (frame->pkt_pos != -1) print_fmt ("pkt_pos", "%"PRId64, frame->pkt_pos);
|
||||
else print_str_opt("pkt_pos", "N/A");
|
||||
if (frame->pkt_size != -1) print_val ("pkt_size", frame->pkt_size, unit_byte_str);
|
||||
@@ -2604,8 +2640,12 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
print_str_opt("sample_aspect_ratio", "N/A");
|
||||
}
|
||||
print_fmt("pict_type", "%c", av_get_picture_type_char(frame->pict_type));
|
||||
#if LIBAVUTIL_VERSION_MAJOR < 59
|
||||
AV_NOWARN_DEPRECATED(
|
||||
print_int("coded_picture_number", frame->coded_picture_number);
|
||||
print_int("display_picture_number", frame->display_picture_number);
|
||||
)
|
||||
#endif
|
||||
print_int("interlaced_frame", frame->interlaced_frame);
|
||||
print_int("top_field_first", frame->top_field_first);
|
||||
print_int("repeat_pict", frame->repeat_pict);
|
||||
@@ -2644,8 +2684,11 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
name = av_frame_side_data_name(sd->type);
|
||||
print_str("side_data_type", name ? name : "unknown");
|
||||
if (sd->type == AV_FRAME_DATA_DISPLAYMATRIX && sd->size >= 9*4) {
|
||||
double rotation = av_display_rotation_get((int32_t *)sd->data);
|
||||
if (isnan(rotation))
|
||||
rotation = 0;
|
||||
writer_print_integers(w, "displaymatrix", sd->data, 9, " %11d", 3, 4, 1);
|
||||
print_int("rotation", av_display_rotation_get((int32_t *)sd->data));
|
||||
print_int("rotation", rotation);
|
||||
} else if (sd->type == AV_FRAME_DATA_AFD && sd->size > 0) {
|
||||
print_int("active_format", *sd->data);
|
||||
} else if (sd->type == AV_FRAME_DATA_GOP_TIMECODE && sd->size >= 8) {
|
||||
@@ -2700,6 +2743,9 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
} else if (sd->type == AV_FRAME_DATA_DYNAMIC_HDR_VIVID) {
|
||||
AVDynamicHDRVivid *metadata = (AVDynamicHDRVivid *)sd->data;
|
||||
print_dynamic_hdr_vivid(w, metadata);
|
||||
} else if (sd->type == AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENT) {
|
||||
print_ambient_viewing_environment(
|
||||
w, (const AVAmbientViewingEnvironment *)sd->data);
|
||||
}
|
||||
writer_print_section_footer(w);
|
||||
}
|
||||
@@ -2714,7 +2760,7 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
|
||||
|
||||
static av_always_inline int process_frame(WriterContext *w,
|
||||
InputFile *ifile,
|
||||
AVFrame *frame, AVPacket *pkt,
|
||||
AVFrame *frame, const AVPacket *pkt,
|
||||
int *packet_new)
|
||||
{
|
||||
AVFormatContext *fmt_ctx = ifile->fmt_ctx;
|
||||
@@ -2858,9 +2904,10 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
|
||||
}
|
||||
if (selected_streams[pkt->stream_index]) {
|
||||
AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
|
||||
int64_t pts = pkt->pts != AV_NOPTS_VALUE ? pkt->pts : pkt->dts;
|
||||
|
||||
if (pkt->pts != AV_NOPTS_VALUE)
|
||||
*cur_ts = av_rescale_q(pkt->pts, tb, AV_TIME_BASE_Q);
|
||||
if (pts != AV_NOPTS_VALUE)
|
||||
*cur_ts = av_rescale_q(pts, tb, AV_TIME_BASE_Q);
|
||||
|
||||
if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
|
||||
start = *cur_ts;
|
||||
@@ -2894,7 +2941,7 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
|
||||
}
|
||||
av_packet_unref(pkt);
|
||||
//Flush remaining frames that are cached in the decoder
|
||||
for (i = 0; i < fmt_ctx->nb_streams; i++) {
|
||||
for (i = 0; i < ifile->nb_streams; i++) {
|
||||
pkt->stream_index = i;
|
||||
if (do_read_frames) {
|
||||
while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
|
||||
@@ -3052,6 +3099,8 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
|
||||
}
|
||||
|
||||
print_int("bits_per_sample", av_get_bits_per_sample(par->codec_id));
|
||||
|
||||
print_int("initial_padding", par->initial_padding);
|
||||
break;
|
||||
|
||||
case AVMEDIA_TYPE_SUBTITLE:
|
||||
@@ -3278,15 +3327,9 @@ static int show_format(WriterContext *w, InputFile *ifile)
|
||||
|
||||
static void show_error(WriterContext *w, int err)
|
||||
{
|
||||
char errbuf[128];
|
||||
const char *errbuf_ptr = errbuf;
|
||||
|
||||
if (av_strerror(err, errbuf, sizeof(errbuf)) < 0)
|
||||
errbuf_ptr = strerror(AVUNERROR(err));
|
||||
|
||||
writer_print_section_header(w, SECTION_ID_ERROR);
|
||||
print_int("code", err);
|
||||
print_str("string", errbuf_ptr);
|
||||
print_str("string", av_err2str(err));
|
||||
writer_print_section_footer(w);
|
||||
}
|
||||
|
||||
@@ -3299,10 +3342,8 @@ static int open_input_file(InputFile *ifile, const char *filename,
|
||||
int scan_all_pmts_set = 0;
|
||||
|
||||
fmt_ctx = avformat_alloc_context();
|
||||
if (!fmt_ctx) {
|
||||
print_error(filename, AVERROR(ENOMEM));
|
||||
exit_program(1);
|
||||
}
|
||||
if (!fmt_ctx)
|
||||
report_and_exit(AVERROR(ENOMEM));
|
||||
|
||||
if (!av_dict_get(format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE)) {
|
||||
av_dict_set(&format_opts, "scan_all_pmts", "1", AV_DICT_DONT_OVERWRITE);
|
||||
@@ -3320,7 +3361,7 @@ static int open_input_file(InputFile *ifile, const char *filename,
|
||||
ifile->fmt_ctx = fmt_ctx;
|
||||
if (scan_all_pmts_set)
|
||||
av_dict_set(&format_opts, "scan_all_pmts", NULL, AV_DICT_MATCH_CASE);
|
||||
while ((t = av_dict_get(format_opts, "", t, AV_DICT_IGNORE_SUFFIX)))
|
||||
while ((t = av_dict_iterate(format_opts, t)))
|
||||
av_log(NULL, AV_LOG_WARNING, "Option %s skipped - not known to demuxer.\n", t->key);
|
||||
|
||||
if (find_stream_info) {
|
||||
@@ -3718,7 +3759,7 @@ static void opt_input_file(void *optctx, const char *arg)
|
||||
exit_program(1);
|
||||
}
|
||||
if (!strcmp(arg, "-"))
|
||||
arg = "pipe:";
|
||||
arg = "fd:";
|
||||
input_filename = arg;
|
||||
}
|
||||
|
||||
@@ -3737,7 +3778,7 @@ static void opt_output_file(void *optctx, const char *arg)
|
||||
exit_program(1);
|
||||
}
|
||||
if (!strcmp(arg, "-"))
|
||||
arg = "pipe:";
|
||||
arg = "fd:";
|
||||
output_filename = arg;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of objpool.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/common.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/frame.h"
|
||||
#include "libavutil/mem.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
|
||||
struct ObjPool {
|
||||
void *pool[32];
|
||||
unsigned int pool_count;
|
||||
|
||||
ObjPoolCBAlloc alloc;
|
||||
ObjPoolCBReset reset;
|
||||
ObjPoolCBFree free;
|
||||
};
|
||||
|
||||
ObjPool *objpool_alloc(ObjPoolCBAlloc cb_alloc, ObjPoolCBReset cb_reset,
|
||||
ObjPoolCBFree cb_free)
|
||||
{
|
||||
ObjPool *op = av_mallocz(sizeof(*op));
|
||||
|
||||
if (!op)
|
||||
return NULL;
|
||||
|
||||
op->alloc = cb_alloc;
|
||||
op->reset = cb_reset;
|
||||
op->free = cb_free;
|
||||
|
||||
return op;
|
||||
}
|
||||
|
||||
void objpool_free(ObjPool **pop)
|
||||
{
|
||||
ObjPool *op = *pop;
|
||||
|
||||
if (!op)
|
||||
return;
|
||||
|
||||
for (unsigned int i = 0; i < op->pool_count; i++)
|
||||
op->free(&op->pool[i]);
|
||||
|
||||
av_freep(pop);
|
||||
}
|
||||
|
||||
int objpool_get(ObjPool *op, void **obj)
|
||||
{
|
||||
if (op->pool_count) {
|
||||
*obj = op->pool[--op->pool_count];
|
||||
op->pool[op->pool_count] = NULL;
|
||||
} else
|
||||
*obj = op->alloc();
|
||||
|
||||
return *obj ? 0 : AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
void objpool_release(ObjPool *op, void **obj)
|
||||
{
|
||||
if (!*obj)
|
||||
return;
|
||||
|
||||
op->reset(*obj);
|
||||
|
||||
if (op->pool_count < FF_ARRAY_ELEMS(op->pool))
|
||||
op->pool[op->pool_count++] = *obj;
|
||||
else
|
||||
op->free(obj);
|
||||
|
||||
*obj = NULL;
|
||||
}
|
||||
|
||||
static void *alloc_packet(void)
|
||||
{
|
||||
return av_packet_alloc();
|
||||
}
|
||||
static void *alloc_frame(void)
|
||||
{
|
||||
return av_frame_alloc();
|
||||
}
|
||||
|
||||
static void reset_packet(void *obj)
|
||||
{
|
||||
av_packet_unref(obj);
|
||||
}
|
||||
static void reset_frame(void *obj)
|
||||
{
|
||||
av_frame_unref(obj);
|
||||
}
|
||||
|
||||
static void free_packet(void **obj)
|
||||
{
|
||||
AVPacket *pkt = *obj;
|
||||
av_packet_free(&pkt);
|
||||
*obj = NULL;
|
||||
}
|
||||
static void free_frame(void **obj)
|
||||
{
|
||||
AVFrame *frame = *obj;
|
||||
av_frame_free(&frame);
|
||||
*obj = NULL;
|
||||
}
|
||||
|
||||
ObjPool *objpool_alloc_packets(void)
|
||||
{
|
||||
return objpool_alloc(alloc_packet, reset_packet, free_packet);
|
||||
}
|
||||
ObjPool *objpool_alloc_frames(void)
|
||||
{
|
||||
return objpool_alloc(alloc_frame, reset_frame, free_frame);
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of objpool.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_OBJPOOL_H
|
||||
#define FFTOOLS_OBJPOOL_H
|
||||
|
||||
typedef struct ObjPool ObjPool;
|
||||
|
||||
typedef void* (*ObjPoolCBAlloc)(void);
|
||||
typedef void (*ObjPoolCBReset)(void *);
|
||||
typedef void (*ObjPoolCBFree)(void **);
|
||||
|
||||
void objpool_free(ObjPool **op);
|
||||
ObjPool *objpool_alloc(ObjPoolCBAlloc cb_alloc, ObjPoolCBReset cb_reset,
|
||||
ObjPoolCBFree cb_free);
|
||||
ObjPool *objpool_alloc_packets(void);
|
||||
ObjPool *objpool_alloc_frames(void);
|
||||
|
||||
int objpool_get(ObjPool *op, void **obj);
|
||||
void objpool_release(ObjPool *op, void **obj);
|
||||
|
||||
#endif // FFTOOLS_OBJPOOL_H
|
||||
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Option handlers shared between the tools.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
@@ -24,6 +25,12 @@
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop the ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - time field in report_callback updated as double
|
||||
*
|
||||
* ffmpeg-kit changes by Taner Sener
|
||||
*
|
||||
* 09.2022
|
||||
@@ -88,7 +95,7 @@ static __thread FILE *report_file = NULL;
|
||||
static __thread int report_file_level = AV_LOG_DEBUG;
|
||||
|
||||
extern void ffmpegkit_log_callback_function(void *ptr, int level, const char* format, va_list vargs);
|
||||
extern void (*report_callback)(int, float, float, int64_t, int, double, double);
|
||||
extern void (*report_callback)(int, float, float, int64_t, double, double, double);
|
||||
extern __thread char *program_name;
|
||||
|
||||
int show_license(void *optctx, const char *opt, const char *arg)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Option handlers shared between the tools.
|
||||
* copyright (c) 2022 Taner Sener ( tanersener gmail com )
|
||||
* Copyright (c) 2022 Taner Sener
|
||||
*
|
||||
* This file is part of FFmpeg.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,462 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of sync_queue.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/mathematics.h"
|
||||
#include "libavutil/mem.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_sync_queue.h"
|
||||
|
||||
typedef struct SyncQueueStream {
|
||||
AVFifo *fifo;
|
||||
AVRational tb;
|
||||
|
||||
/* stream head: largest timestamp seen */
|
||||
int64_t head_ts;
|
||||
int limiting;
|
||||
/* no more frames will be sent for this stream */
|
||||
int finished;
|
||||
|
||||
uint64_t frames_sent;
|
||||
uint64_t frames_max;
|
||||
} SyncQueueStream;
|
||||
|
||||
struct SyncQueue {
|
||||
enum SyncQueueType type;
|
||||
|
||||
/* no more frames will be sent for any stream */
|
||||
int finished;
|
||||
/* sync head: the stream with the _smallest_ head timestamp
|
||||
* this stream determines which frames can be output */
|
||||
int head_stream;
|
||||
/* the finished stream with the smallest finish timestamp or -1 */
|
||||
int head_finished_stream;
|
||||
|
||||
// maximum buffering duration in microseconds
|
||||
int64_t buf_size_us;
|
||||
|
||||
SyncQueueStream *streams;
|
||||
unsigned int nb_streams;
|
||||
|
||||
// pool of preallocated frames to avoid constant allocations
|
||||
ObjPool *pool;
|
||||
};
|
||||
|
||||
static void frame_move(const SyncQueue *sq, SyncQueueFrame dst,
|
||||
SyncQueueFrame src)
|
||||
{
|
||||
if (sq->type == SYNC_QUEUE_PACKETS)
|
||||
av_packet_move_ref(dst.p, src.p);
|
||||
else
|
||||
av_frame_move_ref(dst.f, src.f);
|
||||
}
|
||||
|
||||
static int64_t frame_ts(const SyncQueue *sq, SyncQueueFrame frame)
|
||||
{
|
||||
return (sq->type == SYNC_QUEUE_PACKETS) ?
|
||||
frame.p->pts + frame.p->duration :
|
||||
frame.f->pts + frame.f->duration;
|
||||
}
|
||||
|
||||
static int frame_null(const SyncQueue *sq, SyncQueueFrame frame)
|
||||
{
|
||||
return (sq->type == SYNC_QUEUE_PACKETS) ? (frame.p == NULL) : (frame.f == NULL);
|
||||
}
|
||||
|
||||
static void finish_stream(SyncQueue *sq, unsigned int stream_idx)
|
||||
{
|
||||
SyncQueueStream *st = &sq->streams[stream_idx];
|
||||
|
||||
st->finished = 1;
|
||||
|
||||
if (st->limiting && st->head_ts != AV_NOPTS_VALUE) {
|
||||
/* check if this stream is the new finished head */
|
||||
if (sq->head_finished_stream < 0 ||
|
||||
av_compare_ts(st->head_ts, st->tb,
|
||||
sq->streams[sq->head_finished_stream].head_ts,
|
||||
sq->streams[sq->head_finished_stream].tb) < 0) {
|
||||
sq->head_finished_stream = stream_idx;
|
||||
}
|
||||
|
||||
/* mark as finished all streams that should no longer receive new frames,
|
||||
* due to them being ahead of some finished stream */
|
||||
st = &sq->streams[sq->head_finished_stream];
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st1 = &sq->streams[i];
|
||||
if (st != st1 && st1->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(st->head_ts, st->tb, st1->head_ts, st1->tb) <= 0)
|
||||
st1->finished = 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* mark the whole queue as finished if all streams are finished */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
if (!sq->streams[i].finished)
|
||||
return;
|
||||
}
|
||||
sq->finished = 1;
|
||||
}
|
||||
|
||||
static void queue_head_update(SyncQueue *sq)
|
||||
{
|
||||
if (sq->head_stream < 0) {
|
||||
/* wait for one timestamp in each stream before determining
|
||||
* the queue head */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st = &sq->streams[i];
|
||||
if (st->limiting && st->head_ts == AV_NOPTS_VALUE)
|
||||
return;
|
||||
}
|
||||
|
||||
// placeholder value, correct one will be found below
|
||||
sq->head_stream = 0;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st_head = &sq->streams[sq->head_stream];
|
||||
SyncQueueStream *st_other = &sq->streams[i];
|
||||
if (st_other->limiting && st_other->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(st_other->head_ts, st_other->tb,
|
||||
st_head->head_ts, st_head->tb) < 0)
|
||||
sq->head_stream = i;
|
||||
}
|
||||
}
|
||||
|
||||
/* update this stream's head timestamp */
|
||||
static void stream_update_ts(SyncQueue *sq, unsigned int stream_idx, int64_t ts)
|
||||
{
|
||||
SyncQueueStream *st = &sq->streams[stream_idx];
|
||||
|
||||
if (ts == AV_NOPTS_VALUE ||
|
||||
(st->head_ts != AV_NOPTS_VALUE && st->head_ts >= ts))
|
||||
return;
|
||||
|
||||
st->head_ts = ts;
|
||||
|
||||
/* if this stream is now ahead of some finished stream, then
|
||||
* this stream is also finished */
|
||||
if (sq->head_finished_stream >= 0 &&
|
||||
av_compare_ts(sq->streams[sq->head_finished_stream].head_ts,
|
||||
sq->streams[sq->head_finished_stream].tb,
|
||||
ts, st->tb) <= 0)
|
||||
finish_stream(sq, stream_idx);
|
||||
|
||||
/* update the overall head timestamp if it could have changed */
|
||||
if (st->limiting &&
|
||||
(sq->head_stream < 0 || sq->head_stream == stream_idx))
|
||||
queue_head_update(sq);
|
||||
}
|
||||
|
||||
/* If the queue for the given stream (or all streams when stream_idx=-1)
|
||||
* is overflowing, trigger a fake heartbeat on lagging streams.
|
||||
*
|
||||
* @return 1 if heartbeat triggered, 0 otherwise
|
||||
*/
|
||||
static int overflow_heartbeat(SyncQueue *sq, int stream_idx)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
SyncQueueFrame frame;
|
||||
int64_t tail_ts = AV_NOPTS_VALUE;
|
||||
|
||||
/* if no stream specified, pick the one that is most ahead */
|
||||
if (stream_idx < 0) {
|
||||
int64_t ts = AV_NOPTS_VALUE;
|
||||
|
||||
for (int i = 0; i < sq->nb_streams; i++) {
|
||||
st = &sq->streams[i];
|
||||
if (st->head_ts != AV_NOPTS_VALUE &&
|
||||
(ts == AV_NOPTS_VALUE ||
|
||||
av_compare_ts(ts, sq->streams[stream_idx].tb,
|
||||
st->head_ts, st->tb) < 0)) {
|
||||
ts = st->head_ts;
|
||||
stream_idx = i;
|
||||
}
|
||||
}
|
||||
/* no stream has a timestamp yet -> nothing to do */
|
||||
if (stream_idx < 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
/* get the chosen stream's tail timestamp */
|
||||
for (size_t i = 0; tail_ts == AV_NOPTS_VALUE &&
|
||||
av_fifo_peek(st->fifo, &frame, 1, i) >= 0; i++)
|
||||
tail_ts = frame_ts(sq, frame);
|
||||
|
||||
/* overflow triggers when the tail is over specified duration behind the head */
|
||||
if (tail_ts == AV_NOPTS_VALUE || tail_ts >= st->head_ts ||
|
||||
av_rescale_q(st->head_ts - tail_ts, st->tb, AV_TIME_BASE_Q) < sq->buf_size_us)
|
||||
return 0;
|
||||
|
||||
/* signal a fake timestamp for all streams that prevent tail_ts from being output */
|
||||
tail_ts++;
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueStream *st1 = &sq->streams[i];
|
||||
int64_t ts;
|
||||
|
||||
if (st == st1 || st1->finished ||
|
||||
(st1->head_ts != AV_NOPTS_VALUE &&
|
||||
av_compare_ts(tail_ts, st->tb, st1->head_ts, st1->tb) <= 0))
|
||||
continue;
|
||||
|
||||
ts = av_rescale_q(tail_ts, st->tb, st1->tb);
|
||||
if (st1->head_ts != AV_NOPTS_VALUE)
|
||||
ts = FFMAX(st1->head_ts + 1, ts);
|
||||
|
||||
stream_update_ts(sq, i, ts);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sq_send(SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
SyncQueueFrame dst;
|
||||
int64_t ts;
|
||||
int ret;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
av_assert0(st->tb.num > 0 && st->tb.den > 0);
|
||||
|
||||
if (frame_null(sq, frame)) {
|
||||
finish_stream(sq, stream_idx);
|
||||
return 0;
|
||||
}
|
||||
if (st->finished)
|
||||
return AVERROR_EOF;
|
||||
|
||||
ret = objpool_get(sq->pool, (void**)&dst);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
frame_move(sq, dst, frame);
|
||||
|
||||
ts = frame_ts(sq, dst);
|
||||
|
||||
ret = av_fifo_write(st->fifo, &dst, 1);
|
||||
if (ret < 0) {
|
||||
frame_move(sq, frame, dst);
|
||||
objpool_release(sq->pool, (void**)&dst);
|
||||
return ret;
|
||||
}
|
||||
|
||||
stream_update_ts(sq, stream_idx, ts);
|
||||
|
||||
st->frames_sent++;
|
||||
if (st->frames_sent >= st->frames_max)
|
||||
finish_stream(sq, stream_idx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int receive_for_stream(SyncQueue *sq, unsigned int stream_idx,
|
||||
SyncQueueFrame frame)
|
||||
{
|
||||
SyncQueueStream *st_head = sq->head_stream >= 0 ?
|
||||
&sq->streams[sq->head_stream] : NULL;
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
if (av_fifo_can_read(st->fifo)) {
|
||||
SyncQueueFrame peek;
|
||||
int64_t ts;
|
||||
int cmp = 1;
|
||||
|
||||
av_fifo_peek(st->fifo, &peek, 1, 0);
|
||||
ts = frame_ts(sq, peek);
|
||||
|
||||
/* check if this stream's tail timestamp does not overtake
|
||||
* the overall queue head */
|
||||
if (ts != AV_NOPTS_VALUE && st_head)
|
||||
cmp = av_compare_ts(ts, st->tb, st_head->head_ts, st_head->tb);
|
||||
|
||||
/* We can release frames that do not end after the queue head.
|
||||
* Frames with no timestamps are just passed through with no conditions.
|
||||
*/
|
||||
if (cmp <= 0 || ts == AV_NOPTS_VALUE) {
|
||||
frame_move(sq, frame, peek);
|
||||
objpool_release(sq->pool, (void**)&peek);
|
||||
av_fifo_drain2(st->fifo, 1);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return (sq->finished || (st->finished && !av_fifo_can_read(st->fifo))) ?
|
||||
AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
static int receive_internal(SyncQueue *sq, int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
int nb_eof = 0;
|
||||
int ret;
|
||||
|
||||
/* read a frame for a specific stream */
|
||||
if (stream_idx >= 0) {
|
||||
ret = receive_for_stream(sq, stream_idx, frame);
|
||||
return (ret < 0) ? ret : stream_idx;
|
||||
}
|
||||
|
||||
/* read a frame for any stream with available output */
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
ret = receive_for_stream(sq, i, frame);
|
||||
if (ret == AVERROR_EOF || ret == AVERROR(EAGAIN)) {
|
||||
nb_eof += (ret == AVERROR_EOF);
|
||||
continue;
|
||||
}
|
||||
return (ret < 0) ? ret : i;
|
||||
}
|
||||
|
||||
return (nb_eof == sq->nb_streams) ? AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
int sq_receive(SyncQueue *sq, int stream_idx, SyncQueueFrame frame)
|
||||
{
|
||||
int ret = receive_internal(sq, stream_idx, frame);
|
||||
|
||||
/* try again if the queue overflowed and triggered a fake heartbeat
|
||||
* for lagging streams */
|
||||
if (ret == AVERROR(EAGAIN) && overflow_heartbeat(sq, stream_idx))
|
||||
ret = receive_internal(sq, stream_idx, frame);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int sq_add_stream(SyncQueue *sq, int limiting)
|
||||
{
|
||||
SyncQueueStream *tmp, *st;
|
||||
|
||||
tmp = av_realloc_array(sq->streams, sq->nb_streams + 1, sizeof(*sq->streams));
|
||||
if (!tmp)
|
||||
return AVERROR(ENOMEM);
|
||||
sq->streams = tmp;
|
||||
|
||||
st = &sq->streams[sq->nb_streams];
|
||||
memset(st, 0, sizeof(*st));
|
||||
|
||||
st->fifo = av_fifo_alloc2(1, sizeof(SyncQueueFrame), AV_FIFO_FLAG_AUTO_GROW);
|
||||
if (!st->fifo)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
/* we set a valid default, so that a pathological stream that never
|
||||
* receives even a real timebase (and no frames) won't stall all other
|
||||
* streams forever; cf. overflow_heartbeat() */
|
||||
st->tb = (AVRational){ 1, 1 };
|
||||
st->head_ts = AV_NOPTS_VALUE;
|
||||
st->frames_max = UINT64_MAX;
|
||||
st->limiting = limiting;
|
||||
|
||||
return sq->nb_streams++;
|
||||
}
|
||||
|
||||
void sq_set_tb(SyncQueue *sq, unsigned int stream_idx, AVRational tb)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
av_assert0(!av_fifo_can_read(st->fifo));
|
||||
|
||||
if (st->head_ts != AV_NOPTS_VALUE)
|
||||
st->head_ts = av_rescale_q(st->head_ts, st->tb, tb);
|
||||
|
||||
st->tb = tb;
|
||||
}
|
||||
|
||||
void sq_limit_frames(SyncQueue *sq, unsigned int stream_idx, uint64_t frames)
|
||||
{
|
||||
SyncQueueStream *st;
|
||||
|
||||
av_assert0(stream_idx < sq->nb_streams);
|
||||
st = &sq->streams[stream_idx];
|
||||
|
||||
st->frames_max = frames;
|
||||
if (st->frames_sent >= st->frames_max)
|
||||
finish_stream(sq, stream_idx);
|
||||
}
|
||||
|
||||
SyncQueue *sq_alloc(enum SyncQueueType type, int64_t buf_size_us)
|
||||
{
|
||||
SyncQueue *sq = av_mallocz(sizeof(*sq));
|
||||
|
||||
if (!sq)
|
||||
return NULL;
|
||||
|
||||
sq->type = type;
|
||||
sq->buf_size_us = buf_size_us;
|
||||
|
||||
sq->head_stream = -1;
|
||||
sq->head_finished_stream = -1;
|
||||
|
||||
sq->pool = (type == SYNC_QUEUE_PACKETS) ? objpool_alloc_packets() :
|
||||
objpool_alloc_frames();
|
||||
if (!sq->pool) {
|
||||
av_freep(&sq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return sq;
|
||||
}
|
||||
|
||||
void sq_free(SyncQueue **psq)
|
||||
{
|
||||
SyncQueue *sq = *psq;
|
||||
|
||||
if (!sq)
|
||||
return;
|
||||
|
||||
for (unsigned int i = 0; i < sq->nb_streams; i++) {
|
||||
SyncQueueFrame frame;
|
||||
while (av_fifo_read(sq->streams[i].fifo, &frame, 1) >= 0)
|
||||
objpool_release(sq->pool, (void**)&frame);
|
||||
|
||||
av_fifo_freep2(&sq->streams[i].fifo);
|
||||
}
|
||||
|
||||
av_freep(&sq->streams);
|
||||
|
||||
objpool_free(&sq->pool);
|
||||
|
||||
av_freep(psq);
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of sync_queue.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_SYNC_QUEUE_H
|
||||
#define FFTOOLS_SYNC_QUEUE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "libavcodec/packet.h"
|
||||
|
||||
#include "libavutil/frame.h"
|
||||
|
||||
enum SyncQueueType {
|
||||
SYNC_QUEUE_PACKETS,
|
||||
SYNC_QUEUE_FRAMES,
|
||||
};
|
||||
|
||||
typedef union SyncQueueFrame {
|
||||
AVFrame *f;
|
||||
AVPacket *p;
|
||||
} SyncQueueFrame;
|
||||
|
||||
#define SQFRAME(frame) ((SyncQueueFrame){ .f = (frame) })
|
||||
#define SQPKT(pkt) ((SyncQueueFrame){ .p = (pkt) })
|
||||
|
||||
typedef struct SyncQueue SyncQueue;
|
||||
|
||||
/**
|
||||
* Allocate a sync queue of the given type.
|
||||
*
|
||||
* @param buf_size_us maximum duration that will be buffered in microseconds
|
||||
*/
|
||||
SyncQueue *sq_alloc(enum SyncQueueType type, int64_t buf_size_us);
|
||||
void sq_free(SyncQueue **sq);
|
||||
|
||||
/**
|
||||
* Add a new stream to the sync queue.
|
||||
*
|
||||
* @param limiting whether the stream is limiting, i.e. no other stream can be
|
||||
* longer than this one
|
||||
* @return
|
||||
* - a non-negative stream index on success
|
||||
* - a negative error code on error
|
||||
*/
|
||||
int sq_add_stream(SyncQueue *sq, int limiting);
|
||||
|
||||
/**
|
||||
* Set the timebase for the stream with index stream_idx. Should be called
|
||||
* before sending any frames for this stream.
|
||||
*/
|
||||
void sq_set_tb(SyncQueue *sq, unsigned int stream_idx, AVRational tb);
|
||||
|
||||
/**
|
||||
* Limit the number of output frames for stream with index stream_idx
|
||||
* to max_frames.
|
||||
*/
|
||||
void sq_limit_frames(SyncQueue *sq, unsigned int stream_idx,
|
||||
uint64_t max_frames);
|
||||
|
||||
/**
|
||||
* Submit a frame for the stream with index stream_idx.
|
||||
*
|
||||
* On success, the sync queue takes ownership of the frame and will reset the
|
||||
* contents of the supplied frame. On failure, the frame remains owned by the
|
||||
* caller.
|
||||
*
|
||||
* Sending a frame with NULL contents marks the stream as finished.
|
||||
*
|
||||
* @return
|
||||
* - 0 on success
|
||||
* - AVERROR_EOF when no more frames should be submitted for this stream
|
||||
* - another a negative error code on failure
|
||||
*/
|
||||
int sq_send(SyncQueue *sq, unsigned int stream_idx, SyncQueueFrame frame);
|
||||
|
||||
/**
|
||||
* Read a frame from the queue.
|
||||
*
|
||||
* @param stream_idx index of the stream to read a frame for. May be -1, then
|
||||
* try to read a frame from any stream that is ready for
|
||||
* output.
|
||||
* @param frame output frame will be written here on success. The frame is owned
|
||||
* by the caller.
|
||||
*
|
||||
* @return
|
||||
* - a non-negative index of the stream to which the returned frame belongs
|
||||
* - AVERROR(EAGAIN) when more frames need to be submitted to the queue
|
||||
* - AVERROR_EOF when no more frames will be available for this stream (for any
|
||||
* stream if stream_idx is -1)
|
||||
* - another negative error code on failure
|
||||
*/
|
||||
int sq_receive(SyncQueue *sq, int stream_idx, SyncQueueFrame frame);
|
||||
|
||||
#endif // FFTOOLS_SYNC_QUEUE_H
|
||||
@@ -0,0 +1,259 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of thread_queue.c file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
* - fftools header names updated
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "libavutil/avassert.h"
|
||||
#include "libavutil/error.h"
|
||||
#include "libavutil/fifo.h"
|
||||
#include "libavutil/intreadwrite.h"
|
||||
#include "libavutil/mem.h"
|
||||
#include "libavutil/thread.h"
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
#include "fftools_thread_queue.h"
|
||||
|
||||
enum {
|
||||
FINISHED_SEND = (1 << 0),
|
||||
FINISHED_RECV = (1 << 1),
|
||||
};
|
||||
|
||||
typedef struct FifoElem {
|
||||
void *obj;
|
||||
unsigned int stream_idx;
|
||||
} FifoElem;
|
||||
|
||||
struct ThreadQueue {
|
||||
int *finished;
|
||||
unsigned int nb_streams;
|
||||
|
||||
AVFifo *fifo;
|
||||
|
||||
ObjPool *obj_pool;
|
||||
void (*obj_move)(void *dst, void *src);
|
||||
|
||||
pthread_mutex_t lock;
|
||||
pthread_cond_t cond;
|
||||
};
|
||||
|
||||
void tq_free(ThreadQueue **ptq)
|
||||
{
|
||||
ThreadQueue *tq = *ptq;
|
||||
|
||||
if (!tq)
|
||||
return;
|
||||
|
||||
if (tq->fifo) {
|
||||
FifoElem elem;
|
||||
while (av_fifo_read(tq->fifo, &elem, 1) >= 0)
|
||||
objpool_release(tq->obj_pool, &elem.obj);
|
||||
}
|
||||
av_fifo_freep2(&tq->fifo);
|
||||
|
||||
objpool_free(&tq->obj_pool);
|
||||
|
||||
av_freep(&tq->finished);
|
||||
|
||||
pthread_cond_destroy(&tq->cond);
|
||||
pthread_mutex_destroy(&tq->lock);
|
||||
|
||||
av_freep(ptq);
|
||||
}
|
||||
|
||||
ThreadQueue *tq_alloc(unsigned int nb_streams, size_t queue_size,
|
||||
ObjPool *obj_pool, void (*obj_move)(void *dst, void *src))
|
||||
{
|
||||
ThreadQueue *tq;
|
||||
int ret;
|
||||
|
||||
tq = av_mallocz(sizeof(*tq));
|
||||
if (!tq)
|
||||
return NULL;
|
||||
|
||||
ret = pthread_cond_init(&tq->cond, NULL);
|
||||
if (ret) {
|
||||
av_freep(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = pthread_mutex_init(&tq->lock, NULL);
|
||||
if (ret) {
|
||||
pthread_cond_destroy(&tq->cond);
|
||||
av_freep(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
tq->finished = av_calloc(nb_streams, sizeof(*tq->finished));
|
||||
if (!tq->finished)
|
||||
goto fail;
|
||||
tq->nb_streams = nb_streams;
|
||||
|
||||
tq->fifo = av_fifo_alloc2(queue_size, sizeof(FifoElem), 0);
|
||||
if (!tq->fifo)
|
||||
goto fail;
|
||||
|
||||
tq->obj_pool = obj_pool;
|
||||
tq->obj_move = obj_move;
|
||||
|
||||
return tq;
|
||||
fail:
|
||||
tq_free(&tq);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int tq_send(ThreadQueue *tq, unsigned int stream_idx, void *data)
|
||||
{
|
||||
int *finished;
|
||||
int ret;
|
||||
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
finished = &tq->finished[stream_idx];
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
if (*finished & FINISHED_SEND) {
|
||||
ret = AVERROR(EINVAL);
|
||||
goto finish;
|
||||
}
|
||||
|
||||
while (!(*finished & FINISHED_RECV) && !av_fifo_can_write(tq->fifo))
|
||||
pthread_cond_wait(&tq->cond, &tq->lock);
|
||||
|
||||
if (*finished & FINISHED_RECV) {
|
||||
ret = AVERROR_EOF;
|
||||
*finished |= FINISHED_SEND;
|
||||
} else {
|
||||
FifoElem elem = { .stream_idx = stream_idx };
|
||||
|
||||
ret = objpool_get(tq->obj_pool, &elem.obj);
|
||||
if (ret < 0)
|
||||
goto finish;
|
||||
|
||||
tq->obj_move(elem.obj, data);
|
||||
|
||||
ret = av_fifo_write(tq->fifo, &elem, 1);
|
||||
av_assert0(ret >= 0);
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
}
|
||||
|
||||
finish:
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int receive_locked(ThreadQueue *tq, int *stream_idx,
|
||||
void *data)
|
||||
{
|
||||
FifoElem elem;
|
||||
unsigned int nb_finished = 0;
|
||||
|
||||
if (av_fifo_read(tq->fifo, &elem, 1) >= 0) {
|
||||
tq->obj_move(data, elem.obj);
|
||||
objpool_release(tq->obj_pool, &elem.obj);
|
||||
*stream_idx = elem.stream_idx;
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (unsigned int i = 0; i < tq->nb_streams; i++) {
|
||||
if (!(tq->finished[i] & FINISHED_SEND))
|
||||
continue;
|
||||
|
||||
/* return EOF to the consumer at most once for each stream */
|
||||
if (!(tq->finished[i] & FINISHED_RECV)) {
|
||||
tq->finished[i] |= FINISHED_RECV;
|
||||
*stream_idx = i;
|
||||
return AVERROR_EOF;
|
||||
}
|
||||
|
||||
nb_finished++;
|
||||
}
|
||||
|
||||
return nb_finished == tq->nb_streams ? AVERROR_EOF : AVERROR(EAGAIN);
|
||||
}
|
||||
|
||||
int tq_receive(ThreadQueue *tq, int *stream_idx, void *data)
|
||||
{
|
||||
int ret;
|
||||
|
||||
*stream_idx = -1;
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
while (1) {
|
||||
ret = receive_locked(tq, stream_idx, data);
|
||||
if (ret == AVERROR(EAGAIN)) {
|
||||
pthread_cond_wait(&tq->cond, &tq->lock);
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret == 0)
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void tq_send_finish(ThreadQueue *tq, unsigned int stream_idx)
|
||||
{
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
/* mark the stream as send-finished;
|
||||
* next time the consumer thread tries to read this stream it will get
|
||||
* an EOF and recv-finished flag will be set */
|
||||
tq->finished[stream_idx] |= FINISHED_SEND;
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
}
|
||||
|
||||
void tq_receive_finish(ThreadQueue *tq, unsigned int stream_idx)
|
||||
{
|
||||
av_assert0(stream_idx < tq->nb_streams);
|
||||
|
||||
pthread_mutex_lock(&tq->lock);
|
||||
|
||||
/* mark the stream as recv-finished;
|
||||
* next time the producer thread tries to send for this stream, it will
|
||||
* get an EOF and send-finished flag will be set */
|
||||
tq->finished[stream_idx] |= FINISHED_RECV;
|
||||
pthread_cond_broadcast(&tq->cond);
|
||||
|
||||
pthread_mutex_unlock(&tq->lock);
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* This file is part of FFmpeg.
|
||||
* Copyright (c) 2023 ARTHENICA LTD
|
||||
*
|
||||
* FFmpeg is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* FFmpeg is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with FFmpeg; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file is the modified version of thread_queue.h file living in ffmpeg source code under the fftools folder. We
|
||||
* manually update it each time we depend on a new ffmpeg version. Below you can see the list of changes applied
|
||||
* by us to develop ffmpeg-kit library.
|
||||
*
|
||||
* ffmpeg-kit changes by ARTHENICA LTD
|
||||
*
|
||||
* 07.2023
|
||||
* --------------------------------------------------------
|
||||
* - FFmpeg 6.0 changes migrated
|
||||
*/
|
||||
|
||||
#ifndef FFTOOLS_THREAD_QUEUE_H
|
||||
#define FFTOOLS_THREAD_QUEUE_H
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "fftools_objpool.h"
|
||||
|
||||
typedef struct ThreadQueue ThreadQueue;
|
||||
|
||||
/**
|
||||
* Allocate a queue for sending data between threads.
|
||||
*
|
||||
* @param nb_streams number of streams for which a distinct EOF state is
|
||||
* maintained
|
||||
* @param queue_size number of items that can be stored in the queue without
|
||||
* blocking
|
||||
* @param obj_pool object pool that will be used to allocate items stored in the
|
||||
* queue; the pool becomes owned by the queue
|
||||
* @param callback that moves the contents between two data pointers
|
||||
*/
|
||||
ThreadQueue *tq_alloc(unsigned int nb_streams, size_t queue_size,
|
||||
ObjPool *obj_pool, void (*obj_move)(void *dst, void *src));
|
||||
void tq_free(ThreadQueue **tq);
|
||||
|
||||
/**
|
||||
* Send an item for the given stream to the queue.
|
||||
*
|
||||
* @param data the item to send, its contents will be moved using the callback
|
||||
* provided to tq_alloc(); on failure the item will be left
|
||||
* untouched
|
||||
* @return
|
||||
* - 0 the item was successfully sent
|
||||
* - AVERROR(ENOMEM) could not allocate an item for writing to the FIFO
|
||||
* - AVERROR(EINVAL) the sending side has previously been marked as finished
|
||||
* - AVERROR_EOF the receiving side has marked the given stream as finished
|
||||
*/
|
||||
int tq_send(ThreadQueue *tq, unsigned int stream_idx, void *data);
|
||||
/**
|
||||
* Mark the given stream finished from the sending side.
|
||||
*/
|
||||
void tq_send_finish(ThreadQueue *tq, unsigned int stream_idx);
|
||||
|
||||
/**
|
||||
* Read the next item from the queue.
|
||||
*
|
||||
* @param stream_idx the index of the stream that was processed or -1 will be
|
||||
* written here
|
||||
* @param data the data item will be written here on success using the
|
||||
* callback provided to tq_alloc()
|
||||
* @return
|
||||
* - 0 a data item was successfully read; *stream_idx contains a non-negative
|
||||
* stream index
|
||||
* - AVERROR_EOF When *stream_idx is non-negative, this signals that the sending
|
||||
* side has marked the given stream as finished. This will happen at most once
|
||||
* for each stream. When *stream_idx is -1, all streams are done.
|
||||
*/
|
||||
int tq_receive(ThreadQueue *tq, int *stream_idx, void *data);
|
||||
/**
|
||||
* Mark the given stream finished from the receiving side.
|
||||
*/
|
||||
void tq_receive_finish(ThreadQueue *tq, unsigned int stream_idx);
|
||||
|
||||
#endif // FFTOOLS_THREAD_QUEUE_H
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: Data Structures</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -69,44 +76,60 @@ $(function() {
|
||||
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
|
||||
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
|
||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d2c/struct_audio_channel_map.html" target="_self">AudioChannelMap</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d8e/struct_benchmark_time_stamps.html" target="_self">BenchmarkTimeStamps</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_1_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d5/d8e/struct_benchmark_time_stamps.html" target="_self">BenchmarkTimeStamps</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/dc3/struct_callback_data.html" target="_self">CallbackData</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/ddd/struct_compact_context.html" target="_self">CompactContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_3_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/ddd/struct_compact_context.html" target="_self">CompactContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/da0/struct_default_context.html" target="_self">DefaultContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/de7/struct_filter_graph.html" target="_self">FilterGraph</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/db7/struct_flat_context.html" target="_self">FlatContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="de/dc7/struct_h_w_device.html" target="_self">HWDevice</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d4f/struct_i_n_i_context.html" target="_self">INIContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/d99/struct_input_file.html" target="_self">InputFile</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d0c/struct_input_filter.html" target="_self">InputFilter</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_11_" class="arrow" onclick="toggleFolder('11_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d6e/struct_input_stream.html" target="_self">InputStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/dfd/struct_input_stream_1_1sub2video.html" target="_self">sub2video</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_12_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d53/struct_j_s_o_n_context.html" target="_self">JSONContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_13_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d15/struct_log_buffer.html" target="_self">LogBuffer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_14_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d1d/struct_option.html" target="_self">Option</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_15_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d1e/struct_option_def.html" target="_self">OptionDef</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_16_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d69/struct_option_group.html" target="_self">OptionGroup</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_17_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dd7/struct_option_group_def.html" target="_self">OptionGroupDef</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_18_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d4f/struct_option_group_list.html" target="_self">OptionGroupList</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/db5/struct_option_parse_context.html" target="_self">OptionParseContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_20_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d77/struct_options_context.html" target="_self">OptionsContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="de/df2/struct_output_file.html" target="_self">OutputFile</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_22_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d0f/struct_output_filter.html" target="_self">OutputFilter</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dde/struct_output_stream.html" target="_self">OutputStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_24_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/dee/struct_read_interval.html" target="_self">ReadInterval</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_25_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d11/structsection.html" target="_self">section</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_26_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/da5/struct_specifier_opt.html" target="_self">SpecifierOpt</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_27_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d60/struct_stream_map.html" target="_self">StreamMap</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_28_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d6d/structunit__value.html" target="_self">unit_value</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_29_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/dff/struct_writer.html" target="_self">Writer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_30_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/da2/struct_writer_context.html" target="_self">WriterContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_31_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/db2/struct_x_m_l_context.html" target="_self">XMLContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_5_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/dc9/struct_demuxer.html" target="_self">Demuxer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d6c/struct_demux_msg.html" target="_self">DemuxMsg</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_7_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dbb/struct_enc_stats.html" target="_self">EncStats</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d0c/struct_enc_stats_component.html" target="_self">EncStatsComponent</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_9_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d56/struct_enc_stats_file.html" target="_self">EncStatsFile</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d62/struct_fifo_elem.html" target="_self">FifoElem</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_11_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/de7/struct_filter_graph.html" target="_self">FilterGraph</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/db7/struct_flat_context.html" target="_self">FlatContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_13_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d60/struct_frame_data.html" target="_self">FrameData</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_14_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="de/dc7/struct_h_w_device.html" target="_self">HWDevice</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_15_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="da/d4f/struct_i_n_i_context.html" target="_self">INIContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_16_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/d99/struct_input_file.html" target="_self">InputFile</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_17_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d0c/struct_input_filter.html" target="_self">InputFilter</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_18_" class="even"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_18_" class="arrow" onclick="toggleFolder('18_')">▼</span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d6e/struct_input_stream.html" target="_self">InputStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_18_0_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/dfd/struct_input_stream_1_1sub2video.html" target="_self">sub2video</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_19_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d53/struct_j_s_o_n_context.html" target="_self">JSONContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_20_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/da2/struct_keyframe_force_ctx.html" target="_self">KeyframeForceCtx</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_21_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d16/struct_last_frame_duration.html" target="_self">LastFrameDuration</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_22_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/d15/struct_log_buffer.html" target="_self">LogBuffer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_23_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="de/d29/struct_muxer.html" target="_self">Muxer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_24_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d16/struct_mux_stream.html" target="_self">MuxStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_25_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d4/d62/struct_obj_pool.html" target="_self">ObjPool</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_26_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d3/d1d/struct_option.html" target="_self">Option</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_27_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/d1e/struct_option_def.html" target="_self">OptionDef</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_28_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/d69/struct_option_group.html" target="_self">OptionGroup</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_29_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dd7/struct_option_group_def.html" target="_self">OptionGroupDef</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_30_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/d4f/struct_option_group_list.html" target="_self">OptionGroupList</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_31_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/db5/struct_option_parse_context.html" target="_self">OptionParseContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_32_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="df/d77/struct_options_context.html" target="_self">OptionsContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_33_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="de/df2/struct_output_file.html" target="_self">OutputFile</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_34_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d0/d0f/struct_output_filter.html" target="_self">OutputFilter</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_35_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/dde/struct_output_stream.html" target="_self">OutputStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_36_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d8/dee/struct_read_interval.html" target="_self">ReadInterval</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_37_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d11/structsection.html" target="_self">section</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_38_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dd/da5/struct_specifier_opt.html" target="_self">SpecifierOpt</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_39_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="db/d60/struct_stream_map.html" target="_self">StreamMap</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_40_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d28/struct_sync_queue.html" target="_self">SyncQueue</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_41_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="dc/df8/union_sync_queue_frame.html" target="_self">SyncQueueFrame</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_42_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d2/d94/struct_sync_queue_stream.html" target="_self">SyncQueueStream</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_43_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/db4/struct_thread_queue.html" target="_self">ThreadQueue</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_44_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d9/d6d/structunit__value.html" target="_self">unit_value</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_45_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d6/dff/struct_writer.html" target="_self">Writer</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_46_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d1/da2/struct_writer_context.html" target="_self">WriterContext</a></td><td class="desc"></td></tr>
|
||||
<tr id="row_47_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="d7/db2/struct_x_m_l_context.html" target="_self">XMLContext</a></td><td class="desc"></td></tr>
|
||||
</table>
|
||||
</div><!-- directory -->
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 635 B |
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: Data Structure Index</title>
|
||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="menudata.js"></script>
|
||||
@@ -57,16 +57,23 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
<div class="headertitle"><div class="title">Data Structure Index</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_W">W</a> | <a class="qindex" href="#letter_X">X</a></div>
|
||||
<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_B">B</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_H">H</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_J">J</a> | <a class="qindex" href="#letter_K">K</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_O">O</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a> | <a class="qindex" href="#letter_W">W</a> | <a class="qindex" href="#letter_X">X</a></div>
|
||||
<div class="classindex">
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_A" name="letter_A">A</a></dt>
|
||||
@@ -79,31 +86,43 @@ $(function() {
|
||||
<dd><a class="el" href="d2/dc3/struct_callback_data.html">CallbackData</a></dd><dd><a class="el" href="d2/ddd/struct_compact_context.html">CompactContext</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_D" name="letter_D">D</a></dt>
|
||||
<dd><a class="el" href="d4/da0/struct_default_context.html">DefaultContext</a></dd></dl>
|
||||
<dd><a class="el" href="d4/da0/struct_default_context.html">DefaultContext</a></dd><dd><a class="el" href="d7/dc9/struct_demuxer.html">Demuxer</a></dd><dd><a class="el" href="d9/d6c/struct_demux_msg.html">DemuxMsg</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
|
||||
<dd><a class="el" href="d9/de7/struct_filter_graph.html">FilterGraph</a></dd><dd><a class="el" href="d3/db7/struct_flat_context.html">FlatContext</a></dd></dl>
|
||||
<dt class="alphachar"><a id="letter_E" name="letter_E">E</a></dt>
|
||||
<dd><a class="el" href="db/dbb/struct_enc_stats.html">EncStats</a></dd><dd><a class="el" href="dd/d0c/struct_enc_stats_component.html">EncStatsComponent</a></dd><dd><a class="el" href="da/d56/struct_enc_stats_file.html">EncStatsFile</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_F" name="letter_F">F</a></dt>
|
||||
<dd><a class="el" href="da/d62/struct_fifo_elem.html">FifoElem</a></dd><dd><a class="el" href="d9/de7/struct_filter_graph.html">FilterGraph</a></dd><dd><a class="el" href="d3/db7/struct_flat_context.html">FlatContext</a></dd><dd><a class="el" href="d7/d60/struct_frame_data.html">FrameData</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_H" name="letter_H">H</a></dt>
|
||||
<dd><a class="el" href="de/dc7/struct_h_w_device.html">HWDevice</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_I" name="letter_I">I</a></dt>
|
||||
<dd><a class="el" href="da/d4f/struct_i_n_i_context.html">INIContext</a></dd><dd><a class="el" href="d8/d99/struct_input_file.html">InputFile</a></dd><dd><a class="el" href="d7/d0c/struct_input_filter.html">InputFilter</a></dd><dd><a class="el" href="d3/d6e/struct_input_stream.html">InputStream</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_J" name="letter_J">J</a></dt>
|
||||
<dd><a class="el" href="d6/d53/struct_j_s_o_n_context.html">JSONContext</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_K" name="letter_K">K</a></dt>
|
||||
<dd><a class="el" href="d3/da2/struct_keyframe_force_ctx.html">KeyframeForceCtx</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_L" name="letter_L">L</a></dt>
|
||||
<dd><a class="el" href="dd/d15/struct_log_buffer.html">LogBuffer</a></dd></dl>
|
||||
<dd><a class="el" href="dc/d16/struct_last_frame_duration.html">LastFrameDuration</a></dd><dd><a class="el" href="dd/d15/struct_log_buffer.html">LogBuffer</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_O" name="letter_O">O</a></dt>
|
||||
<dd><a class="el" href="d3/d1d/struct_option.html">Option</a></dd><dd><a class="el" href="dc/d1e/struct_option_def.html">OptionDef</a></dd><dd><a class="el" href="d6/d69/struct_option_group.html">OptionGroup</a></dd><dd><a class="el" href="db/dd7/struct_option_group_def.html">OptionGroupDef</a></dd><dd><a class="el" href="d7/d4f/struct_option_group_list.html">OptionGroupList</a></dd><dd><a class="el" href="db/db5/struct_option_parse_context.html">OptionParseContext</a></dd><dd><a class="el" href="df/d77/struct_options_context.html">OptionsContext</a></dd><dd><a class="el" href="de/df2/struct_output_file.html">OutputFile</a></dd><dd><a class="el" href="d0/d0f/struct_output_filter.html">OutputFilter</a></dd><dd><a class="el" href="db/dde/struct_output_stream.html">OutputStream</a></dd></dl>
|
||||
<dt class="alphachar"><a id="letter_M" name="letter_M">M</a></dt>
|
||||
<dd><a class="el" href="de/d29/struct_muxer.html">Muxer</a></dd><dd><a class="el" href="d6/d16/struct_mux_stream.html">MuxStream</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_O" name="letter_O">O</a></dt>
|
||||
<dd><a class="el" href="d4/d62/struct_obj_pool.html">ObjPool</a></dd><dd><a class="el" href="d3/d1d/struct_option.html">Option</a></dd><dd><a class="el" href="dc/d1e/struct_option_def.html">OptionDef</a></dd><dd><a class="el" href="d6/d69/struct_option_group.html">OptionGroup</a></dd><dd><a class="el" href="db/dd7/struct_option_group_def.html">OptionGroupDef</a></dd><dd><a class="el" href="d7/d4f/struct_option_group_list.html">OptionGroupList</a></dd><dd><a class="el" href="db/db5/struct_option_parse_context.html">OptionParseContext</a></dd><dd><a class="el" href="df/d77/struct_options_context.html">OptionsContext</a></dd><dd><a class="el" href="de/df2/struct_output_file.html">OutputFile</a></dd><dd><a class="el" href="d0/d0f/struct_output_filter.html">OutputFilter</a></dd><dd><a class="el" href="db/dde/struct_output_stream.html">OutputStream</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
|
||||
<dd><a class="el" href="d8/dee/struct_read_interval.html">ReadInterval</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
|
||||
<dd><a class="el" href="d9/d11/structsection.html">section</a></dd><dd><a class="el" href="dd/da5/struct_specifier_opt.html">SpecifierOpt</a></dd><dd><a class="el" href="db/d60/struct_stream_map.html">StreamMap</a></dd><dd><a class="el" href="d4/dfd/struct_input_stream_1_1sub2video.html">InputStream::sub2video</a></dd></dl>
|
||||
<dd><a class="el" href="d9/d11/structsection.html">section</a></dd><dd><a class="el" href="dd/da5/struct_specifier_opt.html">SpecifierOpt</a></dd><dd><a class="el" href="db/d60/struct_stream_map.html">StreamMap</a></dd><dd><a class="el" href="d4/dfd/struct_input_stream_1_1sub2video.html">InputStream::sub2video</a></dd><dd><a class="el" href="d9/d28/struct_sync_queue.html">SyncQueue</a></dd><dd><a class="el" href="dc/df8/union_sync_queue_frame.html">SyncQueueFrame</a></dd><dd><a class="el" href="d2/d94/struct_sync_queue_stream.html">SyncQueueStream</a></dd></dl>
|
||||
<dl class="classindex odd">
|
||||
<dt class="alphachar"><a id="letter_T" name="letter_T">T</a></dt>
|
||||
<dd><a class="el" href="d9/db4/struct_thread_queue.html">ThreadQueue</a></dd></dl>
|
||||
<dl class="classindex even">
|
||||
<dt class="alphachar"><a id="letter_U" name="letter_U">U</a></dt>
|
||||
<dd><a class="el" href="d9/d6d/structunit__value.html">unit_value</a></dd></dl>
|
||||
@@ -117,7 +136,7 @@ $(function() {
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffmpegkit_abidetect.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -102,7 +109,7 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Macro Definition Documentation</h2>
|
||||
<a id="a8542ed76f69cc1f6905ec045deb67b19" name="a8542ed76f69cc1f6905ec045deb67b19"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8542ed76f69cc1f6905ec045deb67b19">◆ </a></span>ABI_ARM</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8542ed76f69cc1f6905ec045deb67b19">◆ </a></span>ABI_ARM</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -112,14 +119,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents armeabi ABI. </p>
|
||||
<p>Represents armeabi ABI. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00033">33</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aecf047197c8d184994bd8391c89dafd9" name="aecf047197c8d184994bd8391c89dafd9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aecf047197c8d184994bd8391c89dafd9">◆ </a></span>ABI_ARM64_V8A</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aecf047197c8d184994bd8391c89dafd9">◆ </a></span>ABI_ARM64_V8A</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -129,14 +136,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents arm64-v8a ABI. </p>
|
||||
<p>Represents arm64-v8a ABI. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00042">42</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af4bd943711a852348c6fe7a850c68d9c" name="af4bd943711a852348c6fe7a850c68d9c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af4bd943711a852348c6fe7a850c68d9c">◆ </a></span>ABI_ARMV7A</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af4bd943711a852348c6fe7a850c68d9c">◆ </a></span>ABI_ARMV7A</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -146,14 +153,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents armeabi-v7a ABI. </p>
|
||||
<p>Represents armeabi-v7a ABI. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00030">30</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa0528bb977fb058f35088a123f024040" name="aa0528bb977fb058f35088a123f024040"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa0528bb977fb058f35088a123f024040">◆ </a></span>ABI_ARMV7A_NEON</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa0528bb977fb058f35088a123f024040">◆ </a></span>ABI_ARMV7A_NEON</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -163,14 +170,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents armeabi-v7a ABI with NEON support. </p>
|
||||
<p>Represents armeabi-v7a ABI with NEON support. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00027">27</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae1ac408cde1fef8015e817132c82f90f" name="ae1ac408cde1fef8015e817132c82f90f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae1ac408cde1fef8015e817132c82f90f">◆ </a></span>ABI_UNKNOWN</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae1ac408cde1fef8015e817132c82f90f">◆ </a></span>ABI_UNKNOWN</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -180,14 +187,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents not supported ABIs. </p>
|
||||
<p>Represents not supported ABIs. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00045">45</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa8b590581b911e09a91165e1bfe1af4e" name="aa8b590581b911e09a91165e1bfe1af4e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8b590581b911e09a91165e1bfe1af4e">◆ </a></span>ABI_X86</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8b590581b911e09a91165e1bfe1af4e">◆ </a></span>ABI_X86</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -197,14 +204,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents x86 ABI. </p>
|
||||
<p>Represents x86 ABI. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00036">36</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a651b92d66b0514569b6c1e70ab56ccbd" name="a651b92d66b0514569b6c1e70ab56ccbd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a651b92d66b0514569b6c1e70ab56ccbd">◆ </a></span>ABI_X86_64</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a651b92d66b0514569b6c1e70ab56ccbd">◆ </a></span>ABI_X86_64</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -214,7 +221,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Represents x86_64 ABI. </p>
|
||||
<p>Represents x86_64 ABI. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html#l00039">39</a> of file <a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h_source.html">ffmpegkit_abidetect.h</a>.</p>
|
||||
|
||||
@@ -222,7 +229,7 @@ Functions</h2></td></tr>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ad6df138dfa7f0139d3bc00a128a3349f" name="ad6df138dfa7f0139d3bc00a128a3349f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad6df138dfa7f0139d3bc00a128a3349f">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad6df138dfa7f0139d3bc00a128a3349f">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -246,7 +253,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Returns loaded ABI name.</p>
|
||||
<p>Returns loaded ABI name.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -261,7 +268,7 @@ Functions</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7942b894172687b98c86668b49a37356" name="a7942b894172687b98c86668b49a37356"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7942b894172687b98c86668b49a37356">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7942b894172687b98c86668b49a37356">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -285,7 +292,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Returns build configuration for FFmpeg.</p>
|
||||
<p>Returns build configuration for FFmpeg.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -300,7 +307,7 @@ Functions</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="aae17a92df44b12fe7e39c93f88c3e6be" name="aae17a92df44b12fe7e39c93f88c3e6be"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aae17a92df44b12fe7e39c93f88c3e6be">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aae17a92df44b12fe7e39c93f88c3e6be">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -324,7 +331,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Returns ABI name of the running cpu.</p>
|
||||
<p>Returns ABI name of the running cpu.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -339,7 +346,7 @@ Functions</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a76872252b93761eeef4e67b9995e61b1" name="a76872252b93761eeef4e67b9995e61b1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a76872252b93761eeef4e67b9995e61b1">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a76872252b93761eeef4e67b9995e61b1">◆ </a></span>Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -363,8 +370,8 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Class: com_arthenica_ffmpegkit_AbiDetect Method: isNativeLTSBuild Signature: ()Z</p>
|
||||
<p >Returns whether FFmpegKit release is a long term release or not.</p>
|
||||
<p>Class: com_arthenica_ffmpegkit_AbiDetect Method: isNativeLTSBuild Signature: ()Z</p>
|
||||
<p>Returns whether FFmpegKit release is a long term release or not.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -381,7 +388,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffmpegkit_abidetect.h Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -130,14 +137,14 @@ $(function() {
|
||||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
|
||||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="preprocessor">#endif </span><span class="comment">/* FFMPEG_KIT_ABIDETECT_H */</span><span class="preprocessor"></span></div>
|
||||
<div class="ttc" id="affmpegkit_8h_html"><div class="ttname"><a href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_a76872252b93761eeef4e67b9995e61b1"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#a76872252b93761eeef4e67b9995e61b1">Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild</a></div><div class="ttdeci">JNIEXPORT jboolean JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00127">ffmpegkit_abidetect.c:127</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_a7942b894172687b98c86668b49a37356"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#a7942b894172687b98c86668b49a37356">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00142">ffmpegkit_abidetect.c:142</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_aae17a92df44b12fe7e39c93f88c3e6be"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#aae17a92df44b12fe7e39c93f88c3e6be">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00093">ffmpegkit_abidetect.c:93</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_ad6df138dfa7f0139d3bc00a128a3349f"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#ad6df138dfa7f0139d3bc00a128a3349f">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00070">ffmpegkit_abidetect.c:70</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_a76872252b93761eeef4e67b9995e61b1"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#a76872252b93761eeef4e67b9995e61b1">Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild</a></div><div class="ttdeci">JNIEXPORT jboolean JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00127">ffmpegkit_abidetect.c:127</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_a7942b894172687b98c86668b49a37356"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#a7942b894172687b98c86668b49a37356">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00142">ffmpegkit_abidetect.c:142</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_aae17a92df44b12fe7e39c93f88c3e6be"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#aae17a92df44b12fe7e39c93f88c3e6be">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00093">ffmpegkit_abidetect.c:93</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__abidetect_8h_html_ad6df138dfa7f0139d3bc00a128a3349f"><div class="ttname"><a href="../../d0/d07/ffmpegkit__abidetect_8h.html#ad6df138dfa7f0139d3bc00a128a3349f">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi</a></div><div class="ttdeci">JNIEXPORT jstring JNICALL Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi(JNIEnv *, jclass)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d94/ffmpegkit__abidetect_8c_source.html#l00070">ffmpegkit_abidetect.c:70</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:09 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: OutputFilter Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -106,10 +113,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00304">304</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00344">344</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="aaf75618d5c17545f762fa3af3f439340" name="aaf75618d5c17545f762fa3af3f439340"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf75618d5c17545f762fa3af3f439340">◆ </a></span>ch_layout</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf75618d5c17545f762fa3af3f439340">◆ </a></span>ch_layout</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -120,12 +127,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00319">319</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00359">359</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9ff26552ee22fefa55f8194768247a5c" name="a9ff26552ee22fefa55f8194768247a5c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9ff26552ee22fefa55f8194768247a5c">◆ </a></span>ch_layouts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9ff26552ee22fefa55f8194768247a5c">◆ </a></span>ch_layouts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -136,12 +143,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00324">324</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00364">364</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a52b3bac2e051f48e5eabbff6a227881c" name="a52b3bac2e051f48e5eabbff6a227881c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a52b3bac2e051f48e5eabbff6a227881c">◆ </a></span>filter</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a52b3bac2e051f48e5eabbff6a227881c">◆ </a></span>filter</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -152,12 +159,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00305">305</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00345">345</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeba350050d2035d755254154e6551c49" name="aeba350050d2035d755254154e6551c49"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeba350050d2035d755254154e6551c49">◆ </a></span>format</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeba350050d2035d755254154e6551c49">◆ </a></span>format</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -168,12 +175,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00317">317</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00357">357</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8bef5b1f7e6b00ab4128cfcabccd3c50" name="a8bef5b1f7e6b00ab4128cfcabccd3c50"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8bef5b1f7e6b00ab4128cfcabccd3c50">◆ </a></span>formats</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8bef5b1f7e6b00ab4128cfcabccd3c50">◆ </a></span>formats</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -184,12 +191,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00323">323</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00363">363</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad45013a89f85087d03166652a94d1453" name="ad45013a89f85087d03166652a94d1453"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad45013a89f85087d03166652a94d1453">◆ </a></span>frame_rate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad45013a89f85087d03166652a94d1453">◆ </a></span>frame_rate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -200,12 +207,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00316">316</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00356">356</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa1e455271d4a952bc771b9951beded8e" name="aa1e455271d4a952bc771b9951beded8e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa1e455271d4a952bc771b9951beded8e">◆ </a></span>graph</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa1e455271d4a952bc771b9951beded8e">◆ </a></span>graph</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -216,12 +223,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00307">307</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00347">347</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aaf9223843b6d814783f74c85b38de080" name="aaf9223843b6d814783f74c85b38de080"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf9223843b6d814783f74c85b38de080">◆ </a></span>height</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf9223843b6d814783f74c85b38de080">◆ </a></span>height</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -232,12 +239,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00315">315</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00355">355</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7713667d07c3f7605e6dd24f0ca19940" name="a7713667d07c3f7605e6dd24f0ca19940"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7713667d07c3f7605e6dd24f0ca19940">◆ </a></span>name</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7713667d07c3f7605e6dd24f0ca19940">◆ </a></span>name</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -248,12 +255,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00308">308</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00348">348</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2d283eee3e140f822b5eb381890ba035" name="a2d283eee3e140f822b5eb381890ba035"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2d283eee3e140f822b5eb381890ba035">◆ </a></span>ost</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2d283eee3e140f822b5eb381890ba035">◆ </a></span>ost</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -264,12 +271,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00306">306</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00346">346</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1571021ae59382241c925f7ee613cd7d" name="a1571021ae59382241c925f7ee613cd7d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1571021ae59382241c925f7ee613cd7d">◆ </a></span>out_tmp</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1571021ae59382241c925f7ee613cd7d">◆ </a></span>out_tmp</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -280,12 +287,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00311">311</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00351">351</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab0be1ec413ca98912667f1bf76fd2588" name="ab0be1ec413ca98912667f1bf76fd2588"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab0be1ec413ca98912667f1bf76fd2588">◆ </a></span>sample_rate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab0be1ec413ca98912667f1bf76fd2588">◆ </a></span>sample_rate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -296,12 +303,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00318">318</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00358">358</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aca41b2f858937cc98ab36b19e50f9251" name="aca41b2f858937cc98ab36b19e50f9251"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aca41b2f858937cc98ab36b19e50f9251">◆ </a></span>sample_rates</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aca41b2f858937cc98ab36b19e50f9251">◆ </a></span>sample_rates</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -312,12 +319,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00325">325</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00365">365</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aed4c46a5df26ff71f3f718a0056af294" name="aed4c46a5df26ff71f3f718a0056af294"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aed4c46a5df26ff71f3f718a0056af294">◆ </a></span>type</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aed4c46a5df26ff71f3f718a0056af294">◆ </a></span>type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -328,12 +335,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00312">312</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00352">352</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0a621d752f3ab33e67f0a8f22bee4118" name="a0a621d752f3ab33e67f0a8f22bee4118"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a621d752f3ab33e67f0a8f22bee4118">◆ </a></span>width</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a621d752f3ab33e67f0a8f22bee4118">◆ </a></span>width</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -344,7 +351,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00315">315</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00355">355</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -354,7 +361,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_fopen_utf8.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -78,7 +85,7 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a3eed39c4bd5135d3629a46f9f2c65b4b" name="a3eed39c4bd5135d3629a46f9f2c65b4b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3eed39c4bd5135d3629a46f9f2c65b4b">◆ </a></span>fopen_utf8()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3eed39c4bd5135d3629a46f9f2c65b4b">◆ </a></span>fopen_utf8()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -118,7 +125,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_fopen_utf8.h Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -145,11 +152,11 @@ $(function() {
|
||||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="preprocessor">#endif</span></div>
|
||||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
|
||||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="preprocessor">#endif </span><span class="comment">/* FFTOOLS_FOPEN_UTF8_H */</span><span class="preprocessor"></span></div>
|
||||
<div class="ttc" id="afftools__fopen__utf8_8h_html_a3eed39c4bd5135d3629a46f9f2c65b4b"><div class="ttname"><a href="../../d1/d9f/fftools__fopen__utf8_8h.html#a3eed39c4bd5135d3629a46f9f2c65b4b">fopen_utf8</a></div><div class="ttdeci">static FILE * fopen_utf8(const char *path, const char *mode)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/d9f/fftools__fopen__utf8_8h_source.html#l00073">fftools_fopen_utf8.h:73</a></div></div>
|
||||
<div class="ttc" id="afftools__fopen__utf8_8h_html_a3eed39c4bd5135d3629a46f9f2c65b4b"><div class="ttname"><a href="../../d1/d9f/fftools__fopen__utf8_8h.html#a3eed39c4bd5135d3629a46f9f2c65b4b">fopen_utf8</a></div><div class="ttdeci">static FILE * fopen_utf8(const char *path, const char *mode)</div><div class="ttdef"><b>Definition</b> <a href="../../d1/d9f/fftools__fopen__utf8_8h_source.html#l00073">fftools_fopen_utf8.h:73</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: WriterContext Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -72,13 +79,13 @@ $(function() {
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Data Fields</h2></td></tr>
|
||||
<tr class="memitem:a9a134275e24f0ed7ceb2108e144b031d"><td class="memItemLeft" align="right" valign="top">const AVClass * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a9a134275e24f0ed7ceb2108e144b031d">class</a></td></tr>
|
||||
<tr class="memdesc:a9a134275e24f0ed7ceb2108e144b031d"><td class="mdescLeft"> </td><td class="mdescRight">class of the writer <a href="../../d1/da2/struct_writer_context.html#a9a134275e24f0ed7ceb2108e144b031d">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a9a134275e24f0ed7ceb2108e144b031d"><td class="mdescLeft"> </td><td class="mdescRight">class of the writer <br /></td></tr>
|
||||
<tr class="separator:a9a134275e24f0ed7ceb2108e144b031d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae5665d3128f57b9024da5d5d029c83a4"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="../../d6/dff/struct_writer.html">Writer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#ae5665d3128f57b9024da5d5d029c83a4">writer</a></td></tr>
|
||||
<tr class="memdesc:ae5665d3128f57b9024da5d5d029c83a4"><td class="mdescLeft"> </td><td class="mdescRight">the <a class="el" href="../../d6/dff/struct_writer.html">Writer</a> of which this is an instance <a href="../../d1/da2/struct_writer_context.html#ae5665d3128f57b9024da5d5d029c83a4">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:ae5665d3128f57b9024da5d5d029c83a4"><td class="mdescLeft"> </td><td class="mdescRight">the <a class="el" href="../../d6/dff/struct_writer.html">Writer</a> of which this is an instance <br /></td></tr>
|
||||
<tr class="separator:ae5665d3128f57b9024da5d5d029c83a4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a74ab2aea4c4a559594862656adfbf607"><td class="memItemLeft" align="right" valign="top">AVIOContext * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a74ab2aea4c4a559594862656adfbf607">avio</a></td></tr>
|
||||
<tr class="memdesc:a74ab2aea4c4a559594862656adfbf607"><td class="mdescLeft"> </td><td class="mdescRight">the I/O context used to write <a href="../../d1/da2/struct_writer_context.html#a74ab2aea4c4a559594862656adfbf607">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a74ab2aea4c4a559594862656adfbf607"><td class="mdescLeft"> </td><td class="mdescRight">the I/O context used to write <br /></td></tr>
|
||||
<tr class="separator:a74ab2aea4c4a559594862656adfbf607"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a678b264a45a1e75928df93fcbe4f1b6d"><td class="memItemLeft" align="right" valign="top">void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a678b264a45a1e75928df93fcbe4f1b6d">writer_w8</a> )(<a class="el" href="../../d1/da2/struct_writer_context.html">WriterContext</a> *wctx, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> b)</td></tr>
|
||||
<tr class="separator:a678b264a45a1e75928df93fcbe4f1b6d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -87,19 +94,19 @@ Data Fields</h2></td></tr>
|
||||
<tr class="memitem:a76ac129335e9ad7a46a27d244b86d330"><td class="memItemLeft" align="right" valign="top">void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a76ac129335e9ad7a46a27d244b86d330">writer_printf</a> )(<a class="el" href="../../d1/da2/struct_writer_context.html">WriterContext</a> *wctx, const char *fmt,...)</td></tr>
|
||||
<tr class="separator:a76ac129335e9ad7a46a27d244b86d330"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a366a8bd11cf898f02beca2f14478ed97"><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a366a8bd11cf898f02beca2f14478ed97">name</a></td></tr>
|
||||
<tr class="memdesc:a366a8bd11cf898f02beca2f14478ed97"><td class="mdescLeft"> </td><td class="mdescRight">name of this writer instance <a href="../../d1/da2/struct_writer_context.html#a366a8bd11cf898f02beca2f14478ed97">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a366a8bd11cf898f02beca2f14478ed97"><td class="mdescLeft"> </td><td class="mdescRight">name of this writer instance <br /></td></tr>
|
||||
<tr class="separator:a366a8bd11cf898f02beca2f14478ed97"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5b071322a7adc4478ba1c381bdc68202"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a5b071322a7adc4478ba1c381bdc68202">priv</a></td></tr>
|
||||
<tr class="memdesc:a5b071322a7adc4478ba1c381bdc68202"><td class="mdescLeft"> </td><td class="mdescRight">private data for use by the filter <a href="../../d1/da2/struct_writer_context.html#a5b071322a7adc4478ba1c381bdc68202">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a5b071322a7adc4478ba1c381bdc68202"><td class="mdescLeft"> </td><td class="mdescRight">private data for use by the filter <br /></td></tr>
|
||||
<tr class="separator:a5b071322a7adc4478ba1c381bdc68202"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa7cd84605a2d2d861d6540e07fa8dd73"><td class="memItemLeft" align="right" valign="top">const struct <a class="el" href="../../d9/d11/structsection.html">section</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#aa7cd84605a2d2d861d6540e07fa8dd73">sections</a></td></tr>
|
||||
<tr class="memdesc:aa7cd84605a2d2d861d6540e07fa8dd73"><td class="mdescLeft"> </td><td class="mdescRight">array containing all sections <a href="../../d1/da2/struct_writer_context.html#aa7cd84605a2d2d861d6540e07fa8dd73">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:aa7cd84605a2d2d861d6540e07fa8dd73"><td class="mdescLeft"> </td><td class="mdescRight">array containing all sections <br /></td></tr>
|
||||
<tr class="separator:aa7cd84605a2d2d861d6540e07fa8dd73"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a802ea030a8d391905498183a514a7e0c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a802ea030a8d391905498183a514a7e0c">nb_sections</a></td></tr>
|
||||
<tr class="memdesc:a802ea030a8d391905498183a514a7e0c"><td class="mdescLeft"> </td><td class="mdescRight">number of sections <a href="../../d1/da2/struct_writer_context.html#a802ea030a8d391905498183a514a7e0c">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a802ea030a8d391905498183a514a7e0c"><td class="mdescLeft"> </td><td class="mdescRight">number of sections <br /></td></tr>
|
||||
<tr class="separator:a802ea030a8d391905498183a514a7e0c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a70f4367919173df339905042a73df0f4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a70f4367919173df339905042a73df0f4">level</a></td></tr>
|
||||
<tr class="memdesc:a70f4367919173df339905042a73df0f4"><td class="mdescLeft"> </td><td class="mdescRight">current level, starting from 0 <a href="../../d1/da2/struct_writer_context.html#a70f4367919173df339905042a73df0f4">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a70f4367919173df339905042a73df0f4"><td class="mdescLeft"> </td><td class="mdescRight">current level, starting from 0 <br /></td></tr>
|
||||
<tr class="separator:a70f4367919173df339905042a73df0f4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a146664adf19a884f214fe3729343dc1a"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a146664adf19a884f214fe3729343dc1a">nb_item</a> [<a class="el" href="../../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93">SECTION_MAX_NB_LEVELS</a>]</td></tr>
|
||||
<tr class="separator:a146664adf19a884f214fe3729343dc1a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -108,13 +115,13 @@ Data Fields</h2></td></tr>
|
||||
<tr class="memitem:a5c4e2da0240ebfea6358065cfc923e4e"><td class="memItemLeft" align="right" valign="top">AVBPrint </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a5c4e2da0240ebfea6358065cfc923e4e">section_pbuf</a> [<a class="el" href="../../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93">SECTION_MAX_NB_LEVELS</a>]</td></tr>
|
||||
<tr class="separator:a5c4e2da0240ebfea6358065cfc923e4e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a735c05fb40aac83eeaa72ec9f3bd9c8d"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a735c05fb40aac83eeaa72ec9f3bd9c8d">nb_section_packet</a></td></tr>
|
||||
<tr class="memdesc:a735c05fb40aac83eeaa72ec9f3bd9c8d"><td class="mdescLeft"> </td><td class="mdescRight">number of the packet section in case we are in "packets_and_frames" section <a href="../../d1/da2/struct_writer_context.html#a735c05fb40aac83eeaa72ec9f3bd9c8d">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a735c05fb40aac83eeaa72ec9f3bd9c8d"><td class="mdescLeft"> </td><td class="mdescRight">number of the packet section in case we are in "packets_and_frames" section <br /></td></tr>
|
||||
<tr class="separator:a735c05fb40aac83eeaa72ec9f3bd9c8d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0a6292cb0341b8c989f463d17c2b1c49"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a0a6292cb0341b8c989f463d17c2b1c49">nb_section_frame</a></td></tr>
|
||||
<tr class="memdesc:a0a6292cb0341b8c989f463d17c2b1c49"><td class="mdescLeft"> </td><td class="mdescRight">number of the frame section in case we are in "packets_and_frames" section <a href="../../d1/da2/struct_writer_context.html#a0a6292cb0341b8c989f463d17c2b1c49">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a0a6292cb0341b8c989f463d17c2b1c49"><td class="mdescLeft"> </td><td class="mdescRight">number of the frame section in case we are in "packets_and_frames" section <br /></td></tr>
|
||||
<tr class="separator:a0a6292cb0341b8c989f463d17c2b1c49"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a70cdd0ee0389abba9865de653aac4de1"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#a70cdd0ee0389abba9865de653aac4de1">nb_section_packet_frame</a></td></tr>
|
||||
<tr class="memdesc:a70cdd0ee0389abba9865de653aac4de1"><td class="mdescLeft"> </td><td class="mdescRight">nb_section_packet or nb_section_frame according if is_packets_and_frames <a href="../../d1/da2/struct_writer_context.html#a70cdd0ee0389abba9865de653aac4de1">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a70cdd0ee0389abba9865de653aac4de1"><td class="mdescLeft"> </td><td class="mdescRight">nb_section_packet or nb_section_frame according if is_packets_and_frames <br /></td></tr>
|
||||
<tr class="separator:a70cdd0ee0389abba9865de653aac4de1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae4d434ae00d70b9f03be447b7c8fc02b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/da2/struct_writer_context.html#ae4d434ae00d70b9f03be447b7c8fc02b">string_validation</a></td></tr>
|
||||
<tr class="separator:ae4d434ae00d70b9f03be447b7c8fc02b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -125,10 +132,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00493">493</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00506">506</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a74ab2aea4c4a559594862656adfbf607" name="a74ab2aea4c4a559594862656adfbf607"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a74ab2aea4c4a559594862656adfbf607">◆ </a></span>avio</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a74ab2aea4c4a559594862656adfbf607">◆ </a></span>avio</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -141,12 +148,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>the I/O context used to write </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00496">496</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00509">509</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9a134275e24f0ed7ceb2108e144b031d" name="a9a134275e24f0ed7ceb2108e144b031d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9a134275e24f0ed7ceb2108e144b031d">◆ </a></span>class</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9a134275e24f0ed7ceb2108e144b031d">◆ </a></span>class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -159,12 +166,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>class of the writer </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00494">494</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00507">507</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a70f4367919173df339905042a73df0f4" name="a70f4367919173df339905042a73df0f4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a70f4367919173df339905042a73df0f4">◆ </a></span>level</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a70f4367919173df339905042a73df0f4">◆ </a></span>level</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -177,12 +184,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>current level, starting from 0 </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00508">508</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00521">521</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a366a8bd11cf898f02beca2f14478ed97" name="a366a8bd11cf898f02beca2f14478ed97"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a366a8bd11cf898f02beca2f14478ed97">◆ </a></span>name</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a366a8bd11cf898f02beca2f14478ed97">◆ </a></span>name</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -195,12 +202,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>name of this writer instance </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00502">502</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00515">515</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a146664adf19a884f214fe3729343dc1a" name="a146664adf19a884f214fe3729343dc1a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a146664adf19a884f214fe3729343dc1a">◆ </a></span>nb_item</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a146664adf19a884f214fe3729343dc1a">◆ </a></span>nb_item</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -210,14 +217,14 @@ Data Fields</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >number of the item printed in the given section, starting from 0 </p>
|
||||
<p>number of the item printed in the given section, starting from 0 </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00511">511</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00524">524</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0a6292cb0341b8c989f463d17c2b1c49" name="a0a6292cb0341b8c989f463d17c2b1c49"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a6292cb0341b8c989f463d17c2b1c49">◆ </a></span>nb_section_frame</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0a6292cb0341b8c989f463d17c2b1c49">◆ </a></span>nb_section_frame</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -230,12 +237,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>number of the frame section in case we are in "packets_and_frames" section </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00519">519</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00532">532</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a735c05fb40aac83eeaa72ec9f3bd9c8d" name="a735c05fb40aac83eeaa72ec9f3bd9c8d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a735c05fb40aac83eeaa72ec9f3bd9c8d">◆ </a></span>nb_section_packet</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a735c05fb40aac83eeaa72ec9f3bd9c8d">◆ </a></span>nb_section_packet</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -248,12 +255,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>number of the packet section in case we are in "packets_and_frames" section </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00518">518</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00531">531</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a70cdd0ee0389abba9865de653aac4de1" name="a70cdd0ee0389abba9865de653aac4de1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a70cdd0ee0389abba9865de653aac4de1">◆ </a></span>nb_section_packet_frame</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a70cdd0ee0389abba9865de653aac4de1">◆ </a></span>nb_section_packet_frame</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -266,12 +273,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>nb_section_packet or nb_section_frame according if is_packets_and_frames </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00520">520</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00533">533</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a802ea030a8d391905498183a514a7e0c" name="a802ea030a8d391905498183a514a7e0c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a802ea030a8d391905498183a514a7e0c">◆ </a></span>nb_sections</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a802ea030a8d391905498183a514a7e0c">◆ </a></span>nb_sections</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -284,12 +291,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>number of sections </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00506">506</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00519">519</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5b071322a7adc4478ba1c381bdc68202" name="a5b071322a7adc4478ba1c381bdc68202"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5b071322a7adc4478ba1c381bdc68202">◆ </a></span>priv</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5b071322a7adc4478ba1c381bdc68202">◆ </a></span>priv</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -302,12 +309,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>private data for use by the filter </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00503">503</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00516">516</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1a3764eca79f01c7935f6b00fb703ae9" name="a1a3764eca79f01c7935f6b00fb703ae9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1a3764eca79f01c7935f6b00fb703ae9">◆ </a></span>section</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1a3764eca79f01c7935f6b00fb703ae9">◆ </a></span>section</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -317,14 +324,14 @@ Data Fields</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >section per each level </p>
|
||||
<p>section per each level </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00514">514</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00527">527</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5c4e2da0240ebfea6358065cfc923e4e" name="a5c4e2da0240ebfea6358065cfc923e4e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5c4e2da0240ebfea6358065cfc923e4e">◆ </a></span>section_pbuf</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5c4e2da0240ebfea6358065cfc923e4e">◆ </a></span>section_pbuf</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -334,14 +341,14 @@ Data Fields</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >generic print buffer dedicated to each section, used by various writers </p>
|
||||
<p>generic print buffer dedicated to each section, used by various writers </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00515">515</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00528">528</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa7cd84605a2d2d861d6540e07fa8dd73" name="aa7cd84605a2d2d861d6540e07fa8dd73"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa7cd84605a2d2d861d6540e07fa8dd73">◆ </a></span>sections</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa7cd84605a2d2d861d6540e07fa8dd73">◆ </a></span>sections</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -354,12 +361,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>array containing all sections </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00505">505</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00518">518</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae4d434ae00d70b9f03be447b7c8fc02b" name="ae4d434ae00d70b9f03be447b7c8fc02b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae4d434ae00d70b9f03be447b7c8fc02b">◆ </a></span>string_validation</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae4d434ae00d70b9f03be447b7c8fc02b">◆ </a></span>string_validation</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -370,12 +377,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00522">522</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00535">535</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a347ccaf7bdb45104accb665cab1b093f" name="a347ccaf7bdb45104accb665cab1b093f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a347ccaf7bdb45104accb665cab1b093f">◆ </a></span>string_validation_replacement</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a347ccaf7bdb45104accb665cab1b093f">◆ </a></span>string_validation_replacement</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -386,12 +393,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00523">523</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00536">536</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac2b79828ee0384f432182d1a03bf0083" name="ac2b79828ee0384f432182d1a03bf0083"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac2b79828ee0384f432182d1a03bf0083">◆ </a></span>string_validation_utf8_flags</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac2b79828ee0384f432182d1a03bf0083">◆ </a></span>string_validation_utf8_flags</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -402,12 +409,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00524">524</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00537">537</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae5665d3128f57b9024da5d5d029c83a4" name="ae5665d3128f57b9024da5d5d029c83a4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae5665d3128f57b9024da5d5d029c83a4">◆ </a></span>writer</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae5665d3128f57b9024da5d5d029c83a4">◆ </a></span>writer</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -420,12 +427,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>the <a class="el" href="../../d6/dff/struct_writer.html">Writer</a> of which this is an instance </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00495">495</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00508">508</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a76ac129335e9ad7a46a27d244b86d330" name="a76ac129335e9ad7a46a27d244b86d330"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a76ac129335e9ad7a46a27d244b86d330">◆ </a></span>writer_printf</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a76ac129335e9ad7a46a27d244b86d330">◆ </a></span>writer_printf</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -436,12 +443,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00500">500</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00513">513</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2fb73f8a9497e6bcc971cfacc81c5559" name="a2fb73f8a9497e6bcc971cfacc81c5559"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2fb73f8a9497e6bcc971cfacc81c5559">◆ </a></span>writer_put_str</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2fb73f8a9497e6bcc971cfacc81c5559">◆ </a></span>writer_put_str</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -452,12 +459,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00499">499</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00512">512</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a678b264a45a1e75928df93fcbe4f1b6d" name="a678b264a45a1e75928df93fcbe4f1b6d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a678b264a45a1e75928df93fcbe4f1b6d">◆ </a></span>writer_w8</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a678b264a45a1e75928df93fcbe4f1b6d">◆ </a></span>writer_w8</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -468,7 +475,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00498">498</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00511">511</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -478,7 +485,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_ffmpeg_hw.c File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -110,7 +117,7 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ac41be9b83ff337fa57579c8b804aad49" name="ac41be9b83ff337fa57579c8b804aad49"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac41be9b83ff337fa57579c8b804aad49">◆ </a></span>hw_device_add()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac41be9b83ff337fa57579c8b804aad49">◆ </a></span>hw_device_add()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -133,12 +140,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00072">72</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00079">79</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afd7a9c296e273f36897b0f4607b896a0" name="afd7a9c296e273f36897b0f4607b896a0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afd7a9c296e273f36897b0f4607b896a0">◆ </a></span>hw_device_default_name()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afd7a9c296e273f36897b0f4607b896a0">◆ </a></span>hw_device_default_name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -161,12 +168,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00087">87</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00094">94</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7b352c0afc44da703891d7538bbcf737" name="a7b352c0afc44da703891d7538bbcf737"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7b352c0afc44da703891d7538bbcf737">◆ </a></span>hw_device_free_all()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7b352c0afc44da703891d7538bbcf737">◆ </a></span>hw_device_free_all()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -181,12 +188,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00306">306</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00313">313</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a539c1a0fbb455ec027e6ecbabba11d3c" name="a539c1a0fbb455ec027e6ecbabba11d3c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a539c1a0fbb455ec027e6ecbabba11d3c">◆ </a></span>hw_device_get_by_name()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a539c1a0fbb455ec027e6ecbabba11d3c">◆ </a></span>hw_device_get_by_name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -201,12 +208,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00062">62</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00069">69</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a73e64183d7f408877039a977b84ab64d" name="a73e64183d7f408877039a977b84ab64d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a73e64183d7f408877039a977b84ab64d">◆ </a></span>hw_device_get_by_type()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a73e64183d7f408877039a977b84ab64d">◆ </a></span>hw_device_get_by_type()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -229,12 +236,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00048">48</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00055">55</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3fdd5667b2f22f69baa2f711b13537fb" name="a3fdd5667b2f22f69baa2f711b13537fb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3fdd5667b2f22f69baa2f711b13537fb">◆ </a></span>hw_device_init_from_string()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3fdd5667b2f22f69baa2f711b13537fb">◆ </a></span>hw_device_init_from_string()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -259,12 +266,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00112">112</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00119">119</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac2df78054133e8e90276b1d12af466da" name="ac2df78054133e8e90276b1d12af466da"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac2df78054133e8e90276b1d12af466da">◆ </a></span>hw_device_init_from_type()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac2df78054133e8e90276b1d12af466da">◆ </a></span>hw_device_init_from_type()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -303,12 +310,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00263">263</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00270">270</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aae07987d3556e3507f0bb2e6c451ec2a" name="aae07987d3556e3507f0bb2e6c451ec2a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aae07987d3556e3507f0bb2e6c451ec2a">◆ </a></span>hw_device_match_by_codec()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aae07987d3556e3507f0bb2e6c451ec2a">◆ </a></span>hw_device_match_by_codec()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -331,12 +338,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00318">318</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00325">325</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a77e8d12a4bdb9110a2d815b9aa5f8d02" name="a77e8d12a4bdb9110a2d815b9aa5f8d02"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a77e8d12a4bdb9110a2d815b9aa5f8d02">◆ </a></span>hw_device_setup_for_decode()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a77e8d12a4bdb9110a2d815b9aa5f8d02">◆ </a></span>hw_device_setup_for_decode()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -351,12 +358,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00335">335</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00342">342</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a01128ebf95f6a3b130f446b13b171c52" name="a01128ebf95f6a3b130f446b13b171c52"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a01128ebf95f6a3b130f446b13b171c52">◆ </a></span>hw_device_setup_for_encode()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a01128ebf95f6a3b130f446b13b171c52">◆ </a></span>hw_device_setup_for_encode()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -371,12 +378,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00463">463</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00470">470</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a801831a4517a8db980bbf18c6db58cad" name="a801831a4517a8db980bbf18c6db58cad"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a801831a4517a8db980bbf18c6db58cad">◆ </a></span>hw_device_setup_for_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a801831a4517a8db980bbf18c6db58cad">◆ </a></span>hw_device_setup_for_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -391,12 +398,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00569">569</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00576">576</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a518f7a9a1bd1b5544a39fdbd1d925663" name="a518f7a9a1bd1b5544a39fdbd1d925663"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a518f7a9a1bd1b5544a39fdbd1d925663">◆ </a></span>hwaccel_decode_init()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a518f7a9a1bd1b5544a39fdbd1d925663">◆ </a></span>hwaccel_decode_init()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -411,12 +418,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00560">560</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00567">567</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5a881e2fd908765c2df11400a6c0c7d9" name="a5a881e2fd908765c2df11400a6c0c7d9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5a881e2fd908765c2df11400a6c0c7d9">◆ </a></span>hwaccel_retrieve_data()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5a881e2fd908765c2df11400a6c0c7d9">◆ </a></span>hwaccel_retrieve_data()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -449,13 +456,13 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00518">518</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00525">525</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Variable Documentation</h2>
|
||||
<a id="ad66ab6371d9721a18af13707d8b2735c" name="ad66ab6371d9721a18af13707d8b2735c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad66ab6371d9721a18af13707d8b2735c">◆ </a></span>hw_devices</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad66ab6371d9721a18af13707d8b2735c">◆ </a></span>hw_devices</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -466,12 +473,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00046">46</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00053">53</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="acea1bac2a399307791945b15467b1f75" name="acea1bac2a399307791945b15467b1f75"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acea1bac2a399307791945b15467b1f75">◆ </a></span>nb_hw_devices</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acea1bac2a399307791945b15467b1f75">◆ </a></span>nb_hw_devices</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -482,14 +489,14 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00045">45</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html#l00052">52</a> of file <a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c_source.html">fftools_ffmpeg_hw.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffprobekit.c File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -94,7 +101,7 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a640b39ead30c29ab4caac1fc28140c15" name="a640b39ead30c29ab4caac1fc28140c15"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a640b39ead30c29ab4caac1fc28140c15">◆ </a></span>addSession()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a640b39ead30c29ab4caac1fc28140c15">◆ </a></span>addSession()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -108,7 +115,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Adds a session id to the session map.</p>
|
||||
<p>Adds a session id to the session map.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">id</td><td>session id </td></tr>
|
||||
@@ -121,7 +128,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4a459d7e4c3cfbf3e3d38eba042a8d53" name="a4a459d7e4c3cfbf3e3d38eba042a8d53"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4a459d7e4c3cfbf3e3d38eba042a8d53">◆ </a></span>ffprobe_execute()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4a459d7e4c3cfbf3e3d38eba042a8d53">◆ </a></span>ffprobe_execute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -145,14 +152,14 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Forward declaration for function defined in <a class="el" href="../../d8/d78/fftools__ffprobe_8c.html">fftools_ffprobe.c</a> </p>
|
||||
<p>Forward declaration for function defined in <a class="el" href="../../d8/d78/fftools__ffprobe_8c.html">fftools_ffprobe.c</a> </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l04050">4050</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l04096">4096</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1049ebb2099274feadd0cbf165e9c8ef" name="a1049ebb2099274feadd0cbf165e9c8ef"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1049ebb2099274feadd0cbf165e9c8ef">◆ </a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1049ebb2099274feadd0cbf165e9c8ef">◆ </a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -188,7 +195,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Synchronously executes FFprobe natively with arguments provided.</p>
|
||||
<p>Synchronously executes FFprobe natively with arguments provided.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -205,7 +212,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5f236f20079b407567c62072710656b5" name="a5f236f20079b407567c62072710656b5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5f236f20079b407567c62072710656b5">◆ </a></span>removeSession()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5f236f20079b407567c62072710656b5">◆ </a></span>removeSession()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -219,7 +226,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Removes a session id from the session map.</p>
|
||||
<p>Removes a session id from the session map.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">id</td><td>session id </td></tr>
|
||||
@@ -232,7 +239,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab2b13505798c32f04fd3334e399f3a2f" name="ab2b13505798c32f04fd3334e399f3a2f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab2b13505798c32f04fd3334e399f3a2f">◆ </a></span>resetMessagesInTransmit()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab2b13505798c32f04fd3334e399f3a2f">◆ </a></span>resetMessagesInTransmit()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -246,7 +253,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Resets the number of messages in transmit for this session.</p>
|
||||
<p>Resets the number of messages in transmit for this session.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">id</td><td>session id </td></tr>
|
||||
@@ -260,7 +267,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
<h2 class="groupheader">Variable Documentation</h2>
|
||||
<a id="aefb40225eb03b1329a1fe7931c312eb8" name="aefb40225eb03b1329a1fe7931c312eb8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aefb40225eb03b1329a1fe7931c312eb8">◆ </a></span>configuredLogLevel</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aefb40225eb03b1329a1fe7931c312eb8">◆ </a></span>configuredLogLevel</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -278,14 +285,14 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Holds the default log level </p>
|
||||
<p>Holds the default log level </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00112">112</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aab6fe9e0975fdbf6e289bf726424a6e0" name="aab6fe9e0975fdbf6e289bf726424a6e0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aab6fe9e0975fdbf6e289bf726424a6e0">◆ </a></span>globalSessionId</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aab6fe9e0975fdbf6e289bf726424a6e0">◆ </a></span>globalSessionId</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -303,7 +310,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Holds the id of the current session </p>
|
||||
<p>Holds the id of the current session </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00109">109</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
|
||||
|
||||
@@ -312,7 +319,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffprobekit.c Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -162,18 +169,18 @@ $(function() {
|
||||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordflow">return</span> returnCode;</div>
|
||||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span>}</div>
|
||||
<div class="ttc" id="affmpegkit_8h_html"><div class="ttname"><a href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a></div></div>
|
||||
<div class="ttc" id="affmpegkit_8h_html_a6e43beaa714b1bf01ce2271440786e38"><div class="ttname"><a href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a></div><div class="ttdeci">#define LIB_NAME</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/dee/ffmpegkit_8h_source.html#l00033">ffmpegkit.h:33</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a1049ebb2099274feadd0cbf165e9c8ef"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute(JNIEnv *env, jclass object, jlong id, jobjectArray stringArray)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/ddd/ffprobekit_8c_source.html#l00048">ffprobekit.c:48</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a4a459d7e4c3cfbf3e3d38eba042a8d53"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a></div><div class="ttdeci">int ffprobe_execute(int argc, char **argv)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l04050">fftools_ffprobe.c:4050</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a5f236f20079b407567c62072710656b5"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a5f236f20079b407567c62072710656b5">removeSession</a></div><div class="ttdeci">void removeSession(long sessionId)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00402">ffmpegkit.c:402</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a640b39ead30c29ab4caac1fc28140c15"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a640b39ead30c29ab4caac1fc28140c15">addSession</a></div><div class="ttdeci">void addSession(long sessionId)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00361">ffmpegkit.c:361</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_aab6fe9e0975fdbf6e289bf726424a6e0"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#aab6fe9e0975fdbf6e289bf726424a6e0">globalSessionId</a></div><div class="ttdeci">__thread long globalSessionId</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00109">ffmpegkit.c:109</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_ab2b13505798c32f04fd3334e399f3a2f"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#ab2b13505798c32f04fd3334e399f3a2f">resetMessagesInTransmit</a></div><div class="ttdeci">void resetMessagesInTransmit(long sessionId)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00434">ffmpegkit.c:434</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_aefb40225eb03b1329a1fe7931c312eb8"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a></div><div class="ttdeci">int configuredLogLevel</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00112">ffmpegkit.c:112</a></div></div>
|
||||
<div class="ttc" id="affmpegkit_8h_html_a6e43beaa714b1bf01ce2271440786e38"><div class="ttname"><a href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a></div><div class="ttdeci">#define LIB_NAME</div><div class="ttdef"><b>Definition</b> <a href="../../d8/dee/ffmpegkit_8h_source.html#l00033">ffmpegkit.h:33</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a1049ebb2099274feadd0cbf165e9c8ef"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute(JNIEnv *env, jclass object, jlong id, jobjectArray stringArray)</div><div class="ttdef"><b>Definition</b> <a href="../../d1/ddd/ffprobekit_8c_source.html#l00048">ffprobekit.c:48</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a4a459d7e4c3cfbf3e3d38eba042a8d53"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a></div><div class="ttdeci">int ffprobe_execute(int argc, char **argv)</div><div class="ttdef"><b>Definition</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l04096">fftools_ffprobe.c:4096</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a5f236f20079b407567c62072710656b5"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a5f236f20079b407567c62072710656b5">removeSession</a></div><div class="ttdeci">void removeSession(long sessionId)</div><div class="ttdef"><b>Definition</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00402">ffmpegkit.c:402</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_a640b39ead30c29ab4caac1fc28140c15"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a640b39ead30c29ab4caac1fc28140c15">addSession</a></div><div class="ttdeci">void addSession(long sessionId)</div><div class="ttdef"><b>Definition</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00361">ffmpegkit.c:361</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_aab6fe9e0975fdbf6e289bf726424a6e0"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#aab6fe9e0975fdbf6e289bf726424a6e0">globalSessionId</a></div><div class="ttdeci">__thread long globalSessionId</div><div class="ttdef"><b>Definition</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00109">ffmpegkit.c:109</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_ab2b13505798c32f04fd3334e399f3a2f"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#ab2b13505798c32f04fd3334e399f3a2f">resetMessagesInTransmit</a></div><div class="ttdeci">void resetMessagesInTransmit(long sessionId)</div><div class="ttdef"><b>Definition</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00434">ffmpegkit.c:434</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8c_html_aefb40225eb03b1329a1fe7931c312eb8"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a></div><div class="ttdeci">int configuredLogLevel</div><div class="ttdef"><b>Definition</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00112">ffmpegkit.c:112</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:09 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_ffmpeg_filter.c File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -86,8 +93,8 @@ Macros</h2></td></tr>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a27d07d834af2ac1187665f6cae829b66"><td class="memItemLeft" align="right" valign="top">static enum AVPixelFormat * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a27d07d834af2ac1187665f6cae829b66">get_compliance_normal_pix_fmts</a> (const AVCodec *codec, const enum AVPixelFormat default_formats[])</td></tr>
|
||||
<tr class="separator:a27d07d834af2ac1187665f6cae829b66"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a46fd7d3ff0e63394a14c329d0249e0d4"><td class="memItemLeft" align="right" valign="top">enum AVPixelFormat </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a46fd7d3ff0e63394a14c329d0249e0d4">choose_pixel_fmt</a> (AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target)</td></tr>
|
||||
<tr class="separator:a46fd7d3ff0e63394a14c329d0249e0d4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8b677b54c3fc1c7b57a6115bb5eab079"><td class="memItemLeft" align="right" valign="top">enum AVPixelFormat </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a8b677b54c3fc1c7b57a6115bb5eab079">choose_pixel_fmt</a> (const AVCodec *codec, enum AVPixelFormat target, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> strict_std_compliance)</td></tr>
|
||||
<tr class="separator:a8b677b54c3fc1c7b57a6115bb5eab079"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:adf20b1ffdd53d7fe610efc191764035d"><td class="memItemLeft" align="right" valign="top">static const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#adf20b1ffdd53d7fe610efc191764035d">choose_pix_fmts</a> (<a class="el" href="../../d0/d0f/struct_output_filter.html">OutputFilter</a> *ofilter, AVBPrint *bprint)</td></tr>
|
||||
<tr class="separator:adf20b1ffdd53d7fe610efc191764035d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aac5586382c09d11ae21736fae565e52f"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#aac5586382c09d11ae21736fae565e52f">DEF_CHOOSE_FORMAT</a> (sample_fmts, enum AVSampleFormat, format, formats, AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name) DEF_CHOOSE_FORMAT(<a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a12ee30995b3ac94a573f01870d1289e8">sample_rates</a></td></tr>
|
||||
@@ -100,6 +107,14 @@ Functions</h2></td></tr>
|
||||
<tr class="separator:aac51a809083360b36c142d55f9bb2f7b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a68aafc55c81956dab85081fbdc12dec6"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a68aafc55c81956dab85081fbdc12dec6">init_input_filter</a> (<a class="el" href="../../d9/de7/struct_filter_graph.html">FilterGraph</a> *fg, AVFilterInOut *in)</td></tr>
|
||||
<tr class="separator:a68aafc55c81956dab85081fbdc12dec6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abed7a0bd4bb4e49c36cf055fd64314ee"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#abed7a0bd4bb4e49c36cf055fd64314ee">read_binary</a> (const char *path, uint8_t **data, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> *len)</td></tr>
|
||||
<tr class="separator:abed7a0bd4bb4e49c36cf055fd64314ee"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abc092a1ce29979a16eb9ebc63684662d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#abc092a1ce29979a16eb9ebc63684662d">filter_opt_apply</a> (AVFilterContext *f, const char *key, const char *val)</td></tr>
|
||||
<tr class="separator:abc092a1ce29979a16eb9ebc63684662d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:af9a8465ef2f1e7aa1000ef05828c8501"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#af9a8465ef2f1e7aa1000ef05828c8501">graph_opts_apply</a> (AVFilterGraphSegment *seg)</td></tr>
|
||||
<tr class="separator:af9a8465ef2f1e7aa1000ef05828c8501"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:adfb0333b7585dd6e1931d86590755741"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#adfb0333b7585dd6e1931d86590755741">graph_parse</a> (AVFilterGraph *graph, const char *desc, AVFilterInOut **inputs, AVFilterInOut **outputs)</td></tr>
|
||||
<tr class="separator:adfb0333b7585dd6e1931d86590755741"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afdeaca7898e15c0cb645228fd5bb9184"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#afdeaca7898e15c0cb645228fd5bb9184">init_complex_filtergraph</a> (<a class="el" href="../../d9/de7/struct_filter_graph.html">FilterGraph</a> *fg)</td></tr>
|
||||
<tr class="separator:afdeaca7898e15c0cb645228fd5bb9184"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9464282dd90b2de622c38126485d1a80"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a9464282dd90b2de622c38126485d1a80">insert_trim</a> (int64_t start_time, int64_t duration, AVFilterContext **last_filter, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> *pad_idx, const char *filter_name)</td></tr>
|
||||
@@ -148,7 +163,7 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Macro Definition Documentation</h2>
|
||||
<a id="aba8e85f08c2269c623074c81f0e428d6" name="aba8e85f08c2269c623074c81f0e428d6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aba8e85f08c2269c623074c81f0e428d6">◆ </a></span>AUTO_INSERT_FILTER</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aba8e85f08c2269c623074c81f0e428d6">◆ </a></span>AUTO_INSERT_FILTER</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -188,11 +203,11 @@ Variables</h2></td></tr>
|
||||
<div class="line"> avfilter_get_by_name(filter_name), \</div>
|
||||
<div class="line"> filter_name, arg, NULL, fg->graph); \</div>
|
||||
<div class="line"> if (ret < 0) \</div>
|
||||
<div class="line"> goto fail; \</div>
|
||||
<div class="line"> <span class="keywordflow">goto</span> fail; \</div>
|
||||
<div class="line"> \</div>
|
||||
<div class="line"> ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \</div>
|
||||
<div class="line"> if (ret < 0) \</div>
|
||||
<div class="line"> goto fail; \</div>
|
||||
<div class="line"> <span class="keywordflow">goto</span> fail; \</div>
|
||||
<div class="line"> \</div>
|
||||
<div class="line"> last_filter = filt_ctx; \</div>
|
||||
<div class="line"> pad_idx = 0; \</div>
|
||||
@@ -201,7 +216,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9cf53e21bfb4178eefcce6b7dd20eca2" name="a9cf53e21bfb4178eefcce6b7dd20eca2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9cf53e21bfb4178eefcce6b7dd20eca2">◆ </a></span>AUTO_INSERT_FILTER_INPUT</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9cf53e21bfb4178eefcce6b7dd20eca2">◆ </a></span>AUTO_INSERT_FILTER_INPUT</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -243,11 +258,11 @@ Variables</h2></td></tr>
|
||||
<div class="line"> avfilter_get_by_name(filter_name), \</div>
|
||||
<div class="line"> name, arg, NULL, fg->graph); \</div>
|
||||
<div class="line"> if (ret < 0) \</div>
|
||||
<div class="line"> return ret; \</div>
|
||||
<div class="line"> <span class="keywordflow">return</span> ret; \</div>
|
||||
<div class="line"> \</div>
|
||||
<div class="line"> ret = avfilter_link(last_filter, 0, filt_ctx, 0); \</div>
|
||||
<div class="line"> if (ret < 0) \</div>
|
||||
<div class="line"> return ret; \</div>
|
||||
<div class="line"> <span class="keywordflow">return</span> ret; \</div>
|
||||
<div class="line"> \</div>
|
||||
<div class="line"> last_filter = filt_ctx; \</div>
|
||||
<div class="line">} <span class="keywordflow">while</span> (0)</div>
|
||||
@@ -255,7 +270,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="adf70c3c13bfce09e37627128b7603633" name="adf70c3c13bfce09e37627128b7603633"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adf70c3c13bfce09e37627128b7603633">◆ </a></span>DEF_CHOOSE_FORMAT</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adf70c3c13bfce09e37627128b7603633">◆ </a></span>DEF_CHOOSE_FORMAT</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -312,12 +327,12 @@ Variables</h2></td></tr>
|
||||
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> choose_ ## name (<a class="code hl_struct" href="../../d0/d0f/struct_output_filter.html">OutputFilter</a> *ofilter, AVBPrint *bprint) \</div>
|
||||
<div class="line">{ \</div>
|
||||
<div class="line"> if (ofilter->var == none && !ofilter->supported_list) \</div>
|
||||
<div class="line"> return; \</div>
|
||||
<div class="line"> <span class="keywordflow">return</span>; \</div>
|
||||
<div class="line"> av_bprintf(bprint, #name <span class="stringliteral">"="</span>); \</div>
|
||||
<div class="line"> if (ofilter->var != none) { \</div>
|
||||
<div class="line"> av_bprintf(bprint, printf_format, get_name(ofilter->var)); \</div>
|
||||
<div class="line"> } <span class="keywordflow">else</span> { \</div>
|
||||
<div class="line"> const type *p; \</div>
|
||||
<div class="line"> <span class="keyword">const</span> type *p; \</div>
|
||||
<div class="line"> \</div>
|
||||
<div class="line"> for (p = ofilter->supported_list; *p != none; p++) { \</div>
|
||||
<div class="line"> av_bprintf(bprint, printf_format <span class="stringliteral">"|"</span>, get_name(*p)); \</div>
|
||||
@@ -327,15 +342,15 @@ Variables</h2></td></tr>
|
||||
<div class="line"> } \</div>
|
||||
<div class="line"> av_bprint_chars(bprint, <span class="charliteral">':'</span>, 1); \</div>
|
||||
<div class="line">}</div>
|
||||
<div class="ttc" id="astruct_output_filter_html"><div class="ttname"><a href="../../d0/d0f/struct_output_filter.html">OutputFilter</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00304">fftools_ffmpeg.h:304</a></div></div>
|
||||
<div class="ttc" id="astruct_output_filter_html"><div class="ttname"><a href="../../d0/d0f/struct_output_filter.html">OutputFilter</a></div><div class="ttdef"><b>Definition</b> <a href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00344">fftools_ffmpeg.h:344</a></div></div>
|
||||
</div><!-- fragment -->
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00144">144</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00154">154</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ad7582860b219ad64ec003d5924747d20" name="ad7582860b219ad64ec003d5924747d20"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad7582860b219ad64ec003d5924747d20">◆ </a></span>check_filter_outputs()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad7582860b219ad64ec003d5924747d20">◆ </a></span>check_filter_outputs()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -350,12 +365,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00662">662</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00822">822</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af90a0015e3c8a69c63f294292701d6d9" name="af90a0015e3c8a69c63f294292701d6d9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af90a0015e3c8a69c63f294292701d6d9">◆ </a></span>choose_channel_layouts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af90a0015e3c8a69c63f294292701d6d9">◆ </a></span>choose_channel_layouts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -388,12 +403,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00173">173</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00183">183</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="adf20b1ffdd53d7fe610efc191764035d" name="adf20b1ffdd53d7fe610efc191764035d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adf20b1ffdd53d7fe610efc191764035d">◆ </a></span>choose_pix_fmts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adf20b1ffdd53d7fe610efc191764035d">◆ </a></span>choose_pix_fmts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -426,12 +441,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00106">106</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00114">114</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a46fd7d3ff0e63394a14c329d0249e0d4" name="a46fd7d3ff0e63394a14c329d0249e0d4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a46fd7d3ff0e63394a14c329d0249e0d4">◆ </a></span>choose_pixel_fmt()</h2>
|
||||
<a id="a8b677b54c3fc1c7b57a6115bb5eab079" name="a8b677b54c3fc1c7b57a6115bb5eab079"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8b677b54c3fc1c7b57a6115bb5eab079">◆ </a></span>choose_pixel_fmt()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -439,18 +454,6 @@ Variables</h2></td></tr>
|
||||
<tr>
|
||||
<td class="memname">enum AVPixelFormat choose_pixel_fmt </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVStream * </td>
|
||||
<td class="paramname"><em>st</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVCodecContext * </td>
|
||||
<td class="paramname"><em>enc_ctx</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const AVCodec * </td>
|
||||
<td class="paramname"><em>codec</em>, </td>
|
||||
</tr>
|
||||
@@ -458,7 +461,13 @@ Variables</h2></td></tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">enum AVPixelFormat </td>
|
||||
<td class="paramname"><em>target</em> </td>
|
||||
<td class="paramname"><em>target</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td>
|
||||
<td class="paramname"><em>strict_std_compliance</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
@@ -468,12 +477,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00072">72</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00080">80</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a027d310ab49f2b105fc3b980a6b6c340" name="a027d310ab49f2b105fc3b980a6b6c340"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a027d310ab49f2b105fc3b980a6b6c340">◆ </a></span>cleanup_filtergraph()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a027d310ab49f2b105fc3b980a6b6c340">◆ </a></span>cleanup_filtergraph()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -496,12 +505,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00976">976</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01102">1102</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="adfc4727f627c5abd0aa843206d046ec6" name="adfc4727f627c5abd0aa843206d046ec6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adfc4727f627c5abd0aa843206d046ec6">◆ </a></span>configure_filtergraph()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adfc4727f627c5abd0aa843206d046ec6">◆ </a></span>configure_filtergraph()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -516,12 +525,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01010">1010</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01136">1136</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abd040cc1f24edd0ee72c1bdfaa5599c2" name="abd040cc1f24edd0ee72c1bdfaa5599c2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abd040cc1f24edd0ee72c1bdfaa5599c2">◆ </a></span>configure_input_audio_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abd040cc1f24edd0ee72c1bdfaa5599c2">◆ </a></span>configure_input_audio_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -560,12 +569,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00849">849</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01009">1009</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8866c5d369968e1f79743e44ad4b8169" name="a8866c5d369968e1f79743e44ad4b8169"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8866c5d369968e1f79743e44ad4b8169">◆ </a></span>configure_input_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8866c5d369968e1f79743e44ad4b8169">◆ </a></span>configure_input_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -604,12 +613,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00960">960</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01086">1086</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9f383c04c76d00cb7fbe0c561fc54aba" name="a9f383c04c76d00cb7fbe0c561fc54aba"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9f383c04c76d00cb7fbe0c561fc54aba">◆ </a></span>configure_input_video_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9f383c04c76d00cb7fbe0c561fc54aba">◆ </a></span>configure_input_video_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -648,12 +657,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00724">724</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00884">884</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a57f643dc94cbbbb752e2943a7457a668" name="a57f643dc94cbbbb752e2943a7457a668"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a57f643dc94cbbbb752e2943a7457a668">◆ </a></span>configure_output_audio_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a57f643dc94cbbbb752e2943a7457a668">◆ </a></span>configure_output_audio_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -692,12 +701,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00538">538</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00696">696</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a045cee5da7d7a2926a5351a4938ef056" name="a045cee5da7d7a2926a5351a4938ef056"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a045cee5da7d7a2926a5351a4938ef056">◆ </a></span>configure_output_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a045cee5da7d7a2926a5351a4938ef056">◆ </a></span>configure_output_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -728,12 +737,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00647">647</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00807">807</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1aff0805d8ea5d89a1dbf1fb1e460113" name="a1aff0805d8ea5d89a1dbf1fb1e460113"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1aff0805d8ea5d89a1dbf1fb1e460113">◆ </a></span>configure_output_video_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1aff0805d8ea5d89a1dbf1fb1e460113">◆ </a></span>configure_output_video_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -772,12 +781,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00443">443</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00602">602</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aac5586382c09d11ae21736fae565e52f" name="aac5586382c09d11ae21736fae565e52f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aac5586382c09d11ae21736fae565e52f">◆ </a></span>DEF_CHOOSE_FORMAT()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aac5586382c09d11ae21736fae565e52f">◆ </a></span>DEF_CHOOSE_FORMAT()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -835,7 +844,7 @@ Variables</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="aac51a809083360b36c142d55f9bb2f7b" name="aac51a809083360b36c142d55f9bb2f7b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aac51a809083360b36c142d55f9bb2f7b">◆ </a></span>describe_filter_link()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aac51a809083360b36c142d55f9bb2f7b">◆ </a></span>describe_filter_link()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -874,12 +883,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00228">228</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00238">238</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7157960a2ffbb1abceac96cefb13da43" name="a7157960a2ffbb1abceac96cefb13da43"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7157960a2ffbb1abceac96cefb13da43">◆ </a></span>filter_is_buffersrc()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7157960a2ffbb1abceac96cefb13da43">◆ </a></span>filter_is_buffersrc()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -902,12 +911,56 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00986">986</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01112">1112</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abc092a1ce29979a16eb9ebc63684662d" name="abc092a1ce29979a16eb9ebc63684662d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abc092a1ce29979a16eb9ebc63684662d">◆ </a></span>filter_opt_apply()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> filter_opt_apply </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVFilterContext * </td>
|
||||
<td class="paramname"><em>f</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const char * </td>
|
||||
<td class="paramname"><em>key</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const char * </td>
|
||||
<td class="paramname"><em>val</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00387">387</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad60a50ce02efbab762effbbdd7eda05e" name="ad60a50ce02efbab762effbbdd7eda05e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad60a50ce02efbab762effbbdd7eda05e">◆ </a></span>filtergraph_is_simple()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad60a50ce02efbab762effbbdd7eda05e">◆ </a></span>filtergraph_is_simple()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -922,12 +975,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01218">1218</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01331">1331</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a27d07d834af2ac1187665f6cae829b66" name="a27d07d834af2ac1187665f6cae829b66"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a27d07d834af2ac1187665f6cae829b66">◆ </a></span>get_compliance_normal_pix_fmts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a27d07d834af2ac1187665f6cae829b66">◆ </a></span>get_compliance_normal_pix_fmts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -960,12 +1013,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00059">59</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00066">66</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac281a0a708b333e9a15963d70a069b3c" name="ac281a0a708b333e9a15963d70a069b3c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac281a0a708b333e9a15963d70a069b3c">◆ </a></span>graph_is_meta()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac281a0a708b333e9a15963d70a069b3c">◆ </a></span>graph_is_meta()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -988,12 +1041,90 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00993">993</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01119">1119</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af9a8465ef2f1e7aa1000ef05828c8501" name="af9a8465ef2f1e7aa1000ef05828c8501"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af9a8465ef2f1e7aa1000ef05828c8501">◆ </a></span>graph_opts_apply()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> graph_opts_apply </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVFilterGraphSegment * </td>
|
||||
<td class="paramname"><em>seg</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00442">442</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="adfb0333b7585dd6e1931d86590755741" name="adfb0333b7585dd6e1931d86590755741"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adfb0333b7585dd6e1931d86590755741">◆ </a></span>graph_parse()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> graph_parse </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVFilterGraph * </td>
|
||||
<td class="paramname"><em>graph</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">const char * </td>
|
||||
<td class="paramname"><em>desc</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVFilterInOut ** </td>
|
||||
<td class="paramname"><em>inputs</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVFilterInOut ** </td>
|
||||
<td class="paramname"><em>outputs</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00466">466</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0e8b6e753bb0f299b554d18f3589944a" name="a0e8b6e753bb0f299b554d18f3589944a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e8b6e753bb0f299b554d18f3589944a">◆ </a></span>ifilter_parameters_from_frame()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e8b6e753bb0f299b554d18f3589944a">◆ </a></span>ifilter_parameters_from_frame()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1018,12 +1149,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01186">1186</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l01299">1299</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afdeaca7898e15c0cb645228fd5bb9184" name="afdeaca7898e15c0cb645228fd5bb9184"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afdeaca7898e15c0cb645228fd5bb9184">◆ </a></span>init_complex_filtergraph()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afdeaca7898e15c0cb645228fd5bb9184">◆ </a></span>init_complex_filtergraph()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1038,12 +1169,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00332">332</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00491">491</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a68aafc55c81956dab85081fbdc12dec6" name="a68aafc55c81956dab85081fbdc12dec6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a68aafc55c81956dab85081fbdc12dec6">◆ </a></span>init_input_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a68aafc55c81956dab85081fbdc12dec6">◆ </a></span>init_input_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1076,12 +1207,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00245">245</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00255">255</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a82f6df78dc4d5a93f9708b27f16de2b5" name="a82f6df78dc4d5a93f9708b27f16de2b5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a82f6df78dc4d5a93f9708b27f16de2b5">◆ </a></span>init_simple_filtergraph()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a82f6df78dc4d5a93f9708b27f16de2b5">◆ </a></span>init_simple_filtergraph()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1106,12 +1237,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00193">193</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00203">203</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="add10aa9fae87dc2259bc821b29dee0f8" name="add10aa9fae87dc2259bc821b29dee0f8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#add10aa9fae87dc2259bc821b29dee0f8">◆ </a></span>insert_filter()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#add10aa9fae87dc2259bc821b29dee0f8">◆ </a></span>insert_filter()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1156,12 +1287,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00421">421</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00580">580</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9464282dd90b2de622c38126485d1a80" name="a9464282dd90b2de622c38126485d1a80"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9464282dd90b2de622c38126485d1a80">◆ </a></span>insert_trim()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9464282dd90b2de622c38126485d1a80">◆ </a></span>insert_trim()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1212,12 +1343,56 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00370">370</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00529">529</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abed7a0bd4bb4e49c36cf055fd64314ee" name="abed7a0bd4bb4e49c36cf055fd64314ee"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abed7a0bd4bb4e49c36cf055fd64314ee">◆ </a></span>read_binary()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> read_binary </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">const char * </td>
|
||||
<td class="paramname"><em>path</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">uint8_t ** </td>
|
||||
<td class="paramname"><em>data</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> * </td>
|
||||
<td class="paramname"><em>len</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00341">341</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a175b3d698e81a2781fddebdbf7209d8f" name="a175b3d698e81a2781fddebdbf7209d8f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a175b3d698e81a2781fddebdbf7209d8f">◆ </a></span>sub2video_prepare()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a175b3d698e81a2781fddebdbf7209d8f">◆ </a></span>sub2video_prepare()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1250,13 +1425,13 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00677">677</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00837">837</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Variable Documentation</h2>
|
||||
<a id="a1aabac6d068eef6a7bad3fdf50a05cc8" name="a1aabac6d068eef6a7bad3fdf50a05cc8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1aabac6d068eef6a7bad3fdf50a05cc8">◆ </a></span>d</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1aabac6d068eef6a7bad3fdf50a05cc8">◆ </a></span>d</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1267,12 +1442,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00171">171</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00181">181</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a61569f2965b7a369eb10b6d75d410d11" name="a61569f2965b7a369eb10b6d75d410d11"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a61569f2965b7a369eb10b6d75d410d11">◆ </a></span>int</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a61569f2965b7a369eb10b6d75d410d11">◆ </a></span>int</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1283,12 +1458,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00170">170</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00180">180</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9feef5270e0e54f103868362df0cd27a" name="a9feef5270e0e54f103868362df0cd27a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9feef5270e0e54f103868362df0cd27a">◆ </a></span>sample_rate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9feef5270e0e54f103868362df0cd27a">◆ </a></span>sample_rate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1299,12 +1474,12 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00170">170</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00180">180</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a12ee30995b3ac94a573f01870d1289e8" name="a12ee30995b3ac94a573f01870d1289e8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a12ee30995b3ac94a573f01870d1289e8">◆ </a></span>sample_rates</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a12ee30995b3ac94a573f01870d1289e8">◆ </a></span>sample_rates</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1315,14 +1490,14 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00170">170</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00180">180</a> of file <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html">fftools_ffmpeg_filter.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_opt_common.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -126,7 +133,7 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ac4662679a582ffa71ad420b2d52a2f1d" name="ac4662679a582ffa71ad420b2d52a2f1d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac4662679a582ffa71ad420b2d52a2f1d">◆ </a></span>init_report()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac4662679a582ffa71ad420b2d52a2f1d">◆ </a></span>init_report()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -151,12 +158,12 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01155">1155</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01162">1162</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8bc82376a974a97ef9384792d30b4cc4" name="a8bc82376a974a97ef9384792d30b4cc4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8bc82376a974a97ef9384792d30b4cc4">◆ </a></span>opt_cpucount()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8bc82376a974a97ef9384792d30b4cc4">◆ </a></span>opt_cpucount()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -186,14 +193,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Override the cpucount. </p>
|
||||
<p>Override the cpucount. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01081">1081</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01088">1088</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0bc08eaf2739c5b0977996228a81a129" name="a0bc08eaf2739c5b0977996228a81a129"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bc08eaf2739c5b0977996228a81a129">◆ </a></span>opt_cpuflags()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bc08eaf2739c5b0977996228a81a129">◆ </a></span>opt_cpuflags()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -223,14 +230,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Override the cpuflags. </p>
|
||||
<p>Override the cpuflags. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01069">1069</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01076">1076</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0655c99b1344272c17f0dc8eb480c598" name="a0655c99b1344272c17f0dc8eb480c598"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0655c99b1344272c17f0dc8eb480c598">◆ </a></span>opt_loglevel()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0655c99b1344272c17f0dc8eb480c598">◆ </a></span>opt_loglevel()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -260,14 +267,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Set the libav* libraries log level. </p>
|
||||
<p>Set the libav* libraries log level. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01256">1256</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01263">1263</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae2131affd4cd632364d24b0d0a809fc3" name="ae2131affd4cd632364d24b0d0a809fc3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae2131affd4cd632364d24b0d0a809fc3">◆ </a></span>opt_max_alloc()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae2131affd4cd632364d24b0d0a809fc3">◆ </a></span>opt_max_alloc()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -298,12 +305,12 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01242">1242</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01249">1249</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae83addf5abc14d1dd046f315499ed6bf" name="ae83addf5abc14d1dd046f315499ed6bf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae83addf5abc14d1dd046f315499ed6bf">◆ </a></span>opt_report()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae83addf5abc14d1dd046f315499ed6bf">◆ </a></span>opt_report()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -334,12 +341,12 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01237">1237</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01244">1244</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a53fb409434bc59eeabbfc52f67a1c641" name="a53fb409434bc59eeabbfc52f67a1c641"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a53fb409434bc59eeabbfc52f67a1c641">◆ </a></span>show_bsfs()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a53fb409434bc59eeabbfc52f67a1c641">◆ </a></span>show_bsfs()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -369,14 +376,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the bit stream filters supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the bit stream filters supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00799">799</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00806">806</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9f7a57bae796faca3c46ba0894f0b7bf" name="a9f7a57bae796faca3c46ba0894f0b7bf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9f7a57bae796faca3c46ba0894f0b7bf">◆ </a></span>show_buildconf()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9f7a57bae796faca3c46ba0894f0b7bf">◆ </a></span>show_buildconf()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -406,14 +413,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >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. </p>
|
||||
<p>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. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00274">274</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00281">281</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9d32ed47a0ec2bdf5a11b9ec477af632" name="a9d32ed47a0ec2bdf5a11b9ec477af632"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9d32ed47a0ec2bdf5a11b9ec477af632">◆ </a></span>show_codecs()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9d32ed47a0ec2bdf5a11b9ec477af632">◆ </a></span>show_codecs()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -443,14 +450,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the codecs supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the codecs supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00690">690</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00697">697</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aed7606e2d2a9218a50ecbbc75a76aab7" name="aed7606e2d2a9218a50ecbbc75a76aab7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aed7606e2d2a9218a50ecbbc75a76aab7">◆ </a></span>show_colors()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aed7606e2d2a9218a50ecbbc75a76aab7">◆ </a></span>show_colors()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -480,14 +487,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the color names and values recognized by the program. </p>
|
||||
<p>Print a listing containing all the color names and values recognized by the program. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00965">965</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00972">972</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a051c87d97a1dfd644a97f965dfaa18dc" name="a051c87d97a1dfd644a97f965dfaa18dc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a051c87d97a1dfd644a97f965dfaa18dc">◆ </a></span>show_decoders()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a051c87d97a1dfd644a97f965dfaa18dc">◆ </a></span>show_decoders()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -517,14 +524,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the decoders supported by the program. </p>
|
||||
<p>Print a listing containing all the decoders supported by the program. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00787">787</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00794">794</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af99b4b78c2355c81ff66ae146b92bc7b" name="af99b4b78c2355c81ff66ae146b92bc7b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af99b4b78c2355c81ff66ae146b92bc7b">◆ </a></span>show_demuxers()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af99b4b78c2355c81ff66ae146b92bc7b">◆ </a></span>show_demuxers()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -554,14 +561,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the demuxer supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the demuxer supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00940">940</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00947">947</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aaf26a4937c16d8b7cb22a6542ebb46a5" name="aaf26a4937c16d8b7cb22a6542ebb46a5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf26a4937c16d8b7cb22a6542ebb46a5">◆ </a></span>show_devices()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf26a4937c16d8b7cb22a6542ebb46a5">◆ </a></span>show_devices()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -591,14 +598,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the devices supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the devices supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00945">945</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00952">952</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6eac4715ae30d65e0638fb94d52aa1fe" name="a6eac4715ae30d65e0638fb94d52aa1fe"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6eac4715ae30d65e0638fb94d52aa1fe">◆ </a></span>show_dispositions()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6eac4715ae30d65e0638fb94d52aa1fe">◆ </a></span>show_dispositions()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -628,14 +635,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all supported stream dispositions. </p>
|
||||
<p>Print a listing containing all supported stream dispositions. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01059">1059</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01066">1066</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7271f609adb83bed31f8ef0eb8ee2b79" name="a7271f609adb83bed31f8ef0eb8ee2b79"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7271f609adb83bed31f8ef0eb8ee2b79">◆ </a></span>show_encoders()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7271f609adb83bed31f8ef0eb8ee2b79">◆ </a></span>show_encoders()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -665,14 +672,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the encoders supported by the program. </p>
|
||||
<p>Print a listing containing all the encoders supported by the program. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00793">793</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00800">800</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2cad88ee81ff905e2309375818c89020" name="a2cad88ee81ff905e2309375818c89020"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2cad88ee81ff905e2309375818c89020">◆ </a></span>show_filters()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2cad88ee81ff905e2309375818c89020">◆ </a></span>show_filters()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -702,14 +709,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the filters supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the filters supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00811">811</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00818">818</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac64f66a36c4ca887741fe28475a99b01" name="ac64f66a36c4ca887741fe28475a99b01"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac64f66a36c4ca887741fe28475a99b01">◆ </a></span>show_formats()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac64f66a36c4ca887741fe28475a99b01">◆ </a></span>show_formats()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -739,14 +746,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the formats supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the formats supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00930">930</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00937">937</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0ff9db0d178a0397441c0269cea9e48a" name="a0ff9db0d178a0397441c0269cea9e48a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0ff9db0d178a0397441c0269cea9e48a">◆ </a></span>show_help()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0ff9db0d178a0397441c0269cea9e48a">◆ </a></span>show_help()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -776,14 +783,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Generic -h handler common to all fftools. </p>
|
||||
<p>Generic -h handler common to all fftools. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00590">590</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00597">597</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6fea7aab2873df1439a71f12e0f1afd8" name="a6fea7aab2873df1439a71f12e0f1afd8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6fea7aab2873df1439a71f12e0f1afd8">◆ </a></span>show_layouts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6fea7aab2873df1439a71f12e0f1afd8">◆ </a></span>show_layouts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -813,14 +820,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the standard channel layouts supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the standard channel layouts supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01017">1017</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01024">1024</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9ac5f2397cd42cd32e4b3cb199739b35" name="a9ac5f2397cd42cd32e4b3cb199739b35"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9ac5f2397cd42cd32e4b3cb199739b35">◆ </a></span>show_license()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9ac5f2397cd42cd32e4b3cb199739b35">◆ </a></span>show_license()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -850,14 +857,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >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. </p>
|
||||
<p>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. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00094">94</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00101">101</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4c35b5b42d01e850824bc0af1016e71f" name="a4c35b5b42d01e850824bc0af1016e71f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4c35b5b42d01e850824bc0af1016e71f">◆ </a></span>show_muxers()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4c35b5b42d01e850824bc0af1016e71f">◆ </a></span>show_muxers()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -887,14 +894,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the muxers supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the muxers supported by the program (including devices). This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00935">935</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00942">942</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af34c982b84b7c76d45edc5a7715a4fed" name="af34c982b84b7c76d45edc5a7715a4fed"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af34c982b84b7c76d45edc5a7715a4fed">◆ </a></span>show_pix_fmts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af34c982b84b7c76d45edc5a7715a4fed">◆ </a></span>show_pix_fmts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -924,14 +931,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the pixel formats supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the pixel formats supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00979">979</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00986">986</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="addb6306dc020aa290075bed9b1f42a3a" name="addb6306dc020aa290075bed9b1f42a3a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#addb6306dc020aa290075bed9b1f42a3a">◆ </a></span>show_protocols()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#addb6306dc020aa290075bed9b1f42a3a">◆ </a></span>show_protocols()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -961,14 +968,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the protocols supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
<p>Print a listing containing all the protocols supported by the program. This option processing function does not utilize the arguments. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00950">950</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00957">957</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3359dc295afcfd0ee6f592dd37f03080" name="a3359dc295afcfd0ee6f592dd37f03080"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3359dc295afcfd0ee6f592dd37f03080">◆ </a></span>show_sample_fmts()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3359dc295afcfd0ee6f592dd37f03080">◆ </a></span>show_sample_fmts()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -998,14 +1005,14 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Print a listing containing all the sample formats supported by the program. </p>
|
||||
<p>Print a listing containing all the sample formats supported by the program. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01050">1050</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l01057">1057</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a79c0ae205603f7f83f15171ba3413f26" name="a79c0ae205603f7f83f15171ba3413f26"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a79c0ae205603f7f83f15171ba3413f26">◆ </a></span>show_version()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a79c0ae205603f7f83f15171ba3413f26">◆ </a></span>show_version()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1035,16 +1042,16 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >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. </p>
|
||||
<p>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. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00266">266</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html#l00273">273</a> of file <a class="el" href="../../da/d2c/fftools__opt__common_8c_source.html">fftools_opt_common.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_opt_common.h Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -68,7 +75,7 @@ $(function() {
|
||||
<div class="contents">
|
||||
<a href="../../d2/d50/fftools__opt__common_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
|
||||
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * Option handlers shared between the tools.</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * copyright (c) 2022 Taner Sener ( tanersener gmail com )</span></div>
|
||||
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * Copyright (c) 2022 Taner Sener</span></div>
|
||||
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *</span></div>
|
||||
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * This file is part of FFmpeg.</span></div>
|
||||
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> *</span></div>
|
||||
@@ -164,35 +171,35 @@ $(function() {
|
||||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
|
||||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="preprocessor">#endif </span><span class="comment">/* FFTOOLS_OPT_COMMON_H */</span><span class="preprocessor"></span></div>
|
||||
<div class="ttc" id="afftools__cmdutils_8h_html"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html">fftools_cmdutils.h</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a051c87d97a1dfd644a97f965dfaa18dc"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a051c87d97a1dfd644a97f965dfaa18dc">show_decoders</a></div><div class="ttdeci">int show_decoders(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00787">fftools_opt_common.c:787</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0655c99b1344272c17f0dc8eb480c598"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0655c99b1344272c17f0dc8eb480c598">opt_loglevel</a></div><div class="ttdeci">int opt_loglevel(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01256">fftools_opt_common.c:1256</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0bc08eaf2739c5b0977996228a81a129"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0bc08eaf2739c5b0977996228a81a129">opt_cpuflags</a></div><div class="ttdeci">int opt_cpuflags(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01069">fftools_opt_common.c:1069</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0ff9db0d178a0397441c0269cea9e48a"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0ff9db0d178a0397441c0269cea9e48a">show_help</a></div><div class="ttdeci">int show_help(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00590">fftools_opt_common.c:590</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a2cad88ee81ff905e2309375818c89020"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a2cad88ee81ff905e2309375818c89020">show_filters</a></div><div class="ttdeci">int show_filters(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00811">fftools_opt_common.c:811</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a3359dc295afcfd0ee6f592dd37f03080"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a3359dc295afcfd0ee6f592dd37f03080">show_sample_fmts</a></div><div class="ttdeci">int show_sample_fmts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01050">fftools_opt_common.c:1050</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a4c35b5b42d01e850824bc0af1016e71f"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a4c35b5b42d01e850824bc0af1016e71f">show_muxers</a></div><div class="ttdeci">int show_muxers(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00935">fftools_opt_common.c:935</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a53fb409434bc59eeabbfc52f67a1c641"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a53fb409434bc59eeabbfc52f67a1c641">show_bsfs</a></div><div class="ttdeci">int show_bsfs(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00799">fftools_opt_common.c:799</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a6eac4715ae30d65e0638fb94d52aa1fe"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a6eac4715ae30d65e0638fb94d52aa1fe">show_dispositions</a></div><div class="ttdeci">int show_dispositions(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01059">fftools_opt_common.c:1059</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a6fea7aab2873df1439a71f12e0f1afd8"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a6fea7aab2873df1439a71f12e0f1afd8">show_layouts</a></div><div class="ttdeci">int show_layouts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01017">fftools_opt_common.c:1017</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a7271f609adb83bed31f8ef0eb8ee2b79"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79">show_encoders</a></div><div class="ttdeci">int show_encoders(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00793">fftools_opt_common.c:793</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a79c0ae205603f7f83f15171ba3413f26"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a79c0ae205603f7f83f15171ba3413f26">show_version</a></div><div class="ttdeci">int show_version(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00266">fftools_opt_common.c:266</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a8bc82376a974a97ef9384792d30b4cc4"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a8bc82376a974a97ef9384792d30b4cc4">opt_cpucount</a></div><div class="ttdeci">int opt_cpucount(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01081">fftools_opt_common.c:1081</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9ac5f2397cd42cd32e4b3cb199739b35"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35">show_license</a></div><div class="ttdeci">int show_license(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00094">fftools_opt_common.c:94</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9d32ed47a0ec2bdf5a11b9ec477af632"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632">show_codecs</a></div><div class="ttdeci">int show_codecs(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00690">fftools_opt_common.c:690</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9f7a57bae796faca3c46ba0894f0b7bf"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf">show_buildconf</a></div><div class="ttdeci">int show_buildconf(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00274">fftools_opt_common.c:274</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_aaf26a4937c16d8b7cb22a6542ebb46a5"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5">show_devices</a></div><div class="ttdeci">int show_devices(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00945">fftools_opt_common.c:945</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ac4662679a582ffa71ad420b2d52a2f1d"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ac4662679a582ffa71ad420b2d52a2f1d">init_report</a></div><div class="ttdeci">int init_report(const char *env, FILE **file)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01155">fftools_opt_common.c:1155</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ac64f66a36c4ca887741fe28475a99b01"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ac64f66a36c4ca887741fe28475a99b01">show_formats</a></div><div class="ttdeci">int show_formats(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00930">fftools_opt_common.c:930</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_addb6306dc020aa290075bed9b1f42a3a"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#addb6306dc020aa290075bed9b1f42a3a">show_protocols</a></div><div class="ttdeci">int show_protocols(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00950">fftools_opt_common.c:950</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ae2131affd4cd632364d24b0d0a809fc3"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ae2131affd4cd632364d24b0d0a809fc3">opt_max_alloc</a></div><div class="ttdeci">int opt_max_alloc(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01242">fftools_opt_common.c:1242</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ae83addf5abc14d1dd046f315499ed6bf"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ae83addf5abc14d1dd046f315499ed6bf">opt_report</a></div><div class="ttdeci">int opt_report(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01237">fftools_opt_common.c:1237</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_aed7606e2d2a9218a50ecbbc75a76aab7"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7">show_colors</a></div><div class="ttdeci">int show_colors(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00965">fftools_opt_common.c:965</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_af34c982b84b7c76d45edc5a7715a4fed"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#af34c982b84b7c76d45edc5a7715a4fed">show_pix_fmts</a></div><div class="ttdeci">int show_pix_fmts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00979">fftools_opt_common.c:979</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_af99b4b78c2355c81ff66ae146b92bc7b"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#af99b4b78c2355c81ff66ae146b92bc7b">show_demuxers</a></div><div class="ttdeci">int show_demuxers(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00940">fftools_opt_common.c:940</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a051c87d97a1dfd644a97f965dfaa18dc"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a051c87d97a1dfd644a97f965dfaa18dc">show_decoders</a></div><div class="ttdeci">int show_decoders(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00794">fftools_opt_common.c:794</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0655c99b1344272c17f0dc8eb480c598"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0655c99b1344272c17f0dc8eb480c598">opt_loglevel</a></div><div class="ttdeci">int opt_loglevel(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01263">fftools_opt_common.c:1263</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0bc08eaf2739c5b0977996228a81a129"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0bc08eaf2739c5b0977996228a81a129">opt_cpuflags</a></div><div class="ttdeci">int opt_cpuflags(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01076">fftools_opt_common.c:1076</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a0ff9db0d178a0397441c0269cea9e48a"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a0ff9db0d178a0397441c0269cea9e48a">show_help</a></div><div class="ttdeci">int show_help(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00597">fftools_opt_common.c:597</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a2cad88ee81ff905e2309375818c89020"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a2cad88ee81ff905e2309375818c89020">show_filters</a></div><div class="ttdeci">int show_filters(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00818">fftools_opt_common.c:818</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a3359dc295afcfd0ee6f592dd37f03080"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a3359dc295afcfd0ee6f592dd37f03080">show_sample_fmts</a></div><div class="ttdeci">int show_sample_fmts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01057">fftools_opt_common.c:1057</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a4c35b5b42d01e850824bc0af1016e71f"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a4c35b5b42d01e850824bc0af1016e71f">show_muxers</a></div><div class="ttdeci">int show_muxers(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00942">fftools_opt_common.c:942</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a53fb409434bc59eeabbfc52f67a1c641"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a53fb409434bc59eeabbfc52f67a1c641">show_bsfs</a></div><div class="ttdeci">int show_bsfs(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00806">fftools_opt_common.c:806</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a6eac4715ae30d65e0638fb94d52aa1fe"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a6eac4715ae30d65e0638fb94d52aa1fe">show_dispositions</a></div><div class="ttdeci">int show_dispositions(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01066">fftools_opt_common.c:1066</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a6fea7aab2873df1439a71f12e0f1afd8"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a6fea7aab2873df1439a71f12e0f1afd8">show_layouts</a></div><div class="ttdeci">int show_layouts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01024">fftools_opt_common.c:1024</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a7271f609adb83bed31f8ef0eb8ee2b79"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79">show_encoders</a></div><div class="ttdeci">int show_encoders(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00800">fftools_opt_common.c:800</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a79c0ae205603f7f83f15171ba3413f26"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a79c0ae205603f7f83f15171ba3413f26">show_version</a></div><div class="ttdeci">int show_version(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00273">fftools_opt_common.c:273</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a8bc82376a974a97ef9384792d30b4cc4"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a8bc82376a974a97ef9384792d30b4cc4">opt_cpucount</a></div><div class="ttdeci">int opt_cpucount(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01088">fftools_opt_common.c:1088</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9ac5f2397cd42cd32e4b3cb199739b35"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35">show_license</a></div><div class="ttdeci">int show_license(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00101">fftools_opt_common.c:101</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9d32ed47a0ec2bdf5a11b9ec477af632"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632">show_codecs</a></div><div class="ttdeci">int show_codecs(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00697">fftools_opt_common.c:697</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_a9f7a57bae796faca3c46ba0894f0b7bf"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf">show_buildconf</a></div><div class="ttdeci">int show_buildconf(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00281">fftools_opt_common.c:281</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_aaf26a4937c16d8b7cb22a6542ebb46a5"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5">show_devices</a></div><div class="ttdeci">int show_devices(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00952">fftools_opt_common.c:952</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ac4662679a582ffa71ad420b2d52a2f1d"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ac4662679a582ffa71ad420b2d52a2f1d">init_report</a></div><div class="ttdeci">int init_report(const char *env, FILE **file)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01162">fftools_opt_common.c:1162</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ac64f66a36c4ca887741fe28475a99b01"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ac64f66a36c4ca887741fe28475a99b01">show_formats</a></div><div class="ttdeci">int show_formats(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00937">fftools_opt_common.c:937</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_addb6306dc020aa290075bed9b1f42a3a"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#addb6306dc020aa290075bed9b1f42a3a">show_protocols</a></div><div class="ttdeci">int show_protocols(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00957">fftools_opt_common.c:957</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ae2131affd4cd632364d24b0d0a809fc3"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ae2131affd4cd632364d24b0d0a809fc3">opt_max_alloc</a></div><div class="ttdeci">int opt_max_alloc(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01249">fftools_opt_common.c:1249</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_ae83addf5abc14d1dd046f315499ed6bf"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#ae83addf5abc14d1dd046f315499ed6bf">opt_report</a></div><div class="ttdeci">int opt_report(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l01244">fftools_opt_common.c:1244</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_aed7606e2d2a9218a50ecbbc75a76aab7"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7">show_colors</a></div><div class="ttdeci">int show_colors(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00972">fftools_opt_common.c:972</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_af34c982b84b7c76d45edc5a7715a4fed"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#af34c982b84b7c76d45edc5a7715a4fed">show_pix_fmts</a></div><div class="ttdeci">int show_pix_fmts(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00986">fftools_opt_common.c:986</a></div></div>
|
||||
<div class="ttc" id="afftools__opt__common_8h_html_af99b4b78c2355c81ff66ae146b92bc7b"><div class="ttname"><a href="../../d2/d50/fftools__opt__common_8h.html#af99b4b78c2355c81ff66ae146b92bc7b">show_demuxers</a></div><div class="ttdeci">int show_demuxers(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition</b> <a href="../../da/d2c/fftools__opt__common_8c_source.html#l00947">fftools_opt_common.c:947</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,221 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: SyncQueueStream Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../jquery.js"></script>
|
||||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-attribs">Data Fields</a> </div>
|
||||
<div class="headertitle"><div class="title">SyncQueueStream Struct Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Data Fields</h2></td></tr>
|
||||
<tr class="memitem:aa3aa5fc3137f9f222d45a0dcb5d031f8"><td class="memItemLeft" align="right" valign="top">AVFifo * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#aa3aa5fc3137f9f222d45a0dcb5d031f8">fifo</a></td></tr>
|
||||
<tr class="separator:aa3aa5fc3137f9f222d45a0dcb5d031f8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a215a25282f85265e765035089c7197f9"><td class="memItemLeft" align="right" valign="top">AVRational </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#a215a25282f85265e765035089c7197f9">tb</a></td></tr>
|
||||
<tr class="separator:a215a25282f85265e765035089c7197f9"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afa8c97ba87d308f5760f61c229a8fead"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#afa8c97ba87d308f5760f61c229a8fead">head_ts</a></td></tr>
|
||||
<tr class="separator:afa8c97ba87d308f5760f61c229a8fead"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a24abe05decc9a6825a890be5cddcb740"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#a24abe05decc9a6825a890be5cddcb740">limiting</a></td></tr>
|
||||
<tr class="separator:a24abe05decc9a6825a890be5cddcb740"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9780b2194bcb4f34802ad6c8119f4fe5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#a9780b2194bcb4f34802ad6c8119f4fe5">finished</a></td></tr>
|
||||
<tr class="separator:a9780b2194bcb4f34802ad6c8119f4fe5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab20fc7999548152df14069363152e431"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#ab20fc7999548152df14069363152e431">frames_sent</a></td></tr>
|
||||
<tr class="separator:ab20fc7999548152df14069363152e431"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad2651b7a252f02dcb05098760d0b9a4e"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/d94/struct_sync_queue_stream.html#ad2651b7a252f02dcb05098760d0b9a4e">frames_max</a></td></tr>
|
||||
<tr class="separator:ad2651b7a252f02dcb05098760d0b9a4e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00045">45</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="aa3aa5fc3137f9f222d45a0dcb5d031f8" name="aa3aa5fc3137f9f222d45a0dcb5d031f8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa3aa5fc3137f9f222d45a0dcb5d031f8">◆ </a></span>fifo</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">AVFifo* SyncQueueStream::fifo</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00046">46</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9780b2194bcb4f34802ad6c8119f4fe5" name="a9780b2194bcb4f34802ad6c8119f4fe5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9780b2194bcb4f34802ad6c8119f4fe5">◆ </a></span>finished</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> SyncQueueStream::finished</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00053">53</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad2651b7a252f02dcb05098760d0b9a4e" name="ad2651b7a252f02dcb05098760d0b9a4e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad2651b7a252f02dcb05098760d0b9a4e">◆ </a></span>frames_max</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">uint64_t SyncQueueStream::frames_max</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00056">56</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab20fc7999548152df14069363152e431" name="ab20fc7999548152df14069363152e431"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab20fc7999548152df14069363152e431">◆ </a></span>frames_sent</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">uint64_t SyncQueueStream::frames_sent</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00055">55</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afa8c97ba87d308f5760f61c229a8fead" name="afa8c97ba87d308f5760f61c229a8fead"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afa8c97ba87d308f5760f61c229a8fead">◆ </a></span>head_ts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int64_t SyncQueueStream::head_ts</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00050">50</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a24abe05decc9a6825a890be5cddcb740" name="a24abe05decc9a6825a890be5cddcb740"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a24abe05decc9a6825a890be5cddcb740">◆ </a></span>limiting</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> SyncQueueStream::limiting</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00051">51</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a215a25282f85265e765035089c7197f9" name="a215a25282f85265e765035089c7197f9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a215a25282f85265e765035089c7197f9">◆ </a></span>tb</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">AVRational SyncQueueStream::tb</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html#l00047">47</a> of file <a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li><a class="el" href="../../df/dbb/fftools__sync__queue_8c_source.html">fftools_sync_queue.c</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffprobekit.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -78,7 +85,7 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a22b43bda480738857bff636161c61a58" name="a22b43bda480738857bff636161c61a58"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a22b43bda480738857bff636161c61a58">◆ </a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a22b43bda480738857bff636161c61a58">◆ </a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -114,7 +121,7 @@ Functions</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Synchronously executes FFprobe natively with arguments provided.</p>
|
||||
<p>Synchronously executes FFprobe natively with arguments provided.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">env</td><td>pointer to native method interface </td></tr>
|
||||
@@ -133,7 +140,7 @@ Functions</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffprobekit.h Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -98,11 +105,11 @@ $(function() {
|
||||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span>JNIEXPORT jint JNICALL <a class="code hl_function" href="../../d2/dbf/ffprobekit_8h.html#a22b43bda480738857bff636161c61a58">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a>(JNIEnv *, jclass, jlong, jobjectArray);</div>
|
||||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
|
||||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#endif </span><span class="comment">/* FFPROBE_KIT_H */</span><span class="preprocessor"></span></div>
|
||||
<div class="ttc" id="affprobekit_8h_html_a22b43bda480738857bff636161c61a58"><div class="ttname"><a href="../../d2/dbf/ffprobekit_8h.html#a22b43bda480738857bff636161c61a58">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute(JNIEnv *, jclass, jlong, jobjectArray)</div><div class="ttdef"><b>Definition:</b> <a href="../../d1/ddd/ffprobekit_8c_source.html#l00048">ffprobekit.c:48</a></div></div>
|
||||
<div class="ttc" id="affprobekit_8h_html_a22b43bda480738857bff636161c61a58"><div class="ttname"><a href="../../d2/dbf/ffprobekit_8h.html#a22b43bda480738857bff636161c61a58">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a></div><div class="ttdeci">JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute(JNIEnv *, jclass, jlong, jobjectArray)</div><div class="ttdef"><b>Definition</b> <a href="../../d1/ddd/ffprobekit_8c_source.html#l00048">ffprobekit.c:48</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:09 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: CallbackData Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -87,8 +94,8 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:a0eba672f8309ce08c41eeb63c48091af"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aee6855bc657b56db6c8a32656b3018c4"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#aee6855bc657b56db6c8a32656b3018c4">statisticsSize</a></td></tr>
|
||||
<tr class="separator:aee6855bc657b56db6c8a32656b3018c4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abe4eff38e39d603bd966c554e9e5afc8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#abe4eff38e39d603bd966c554e9e5afc8">statisticsTime</a></td></tr>
|
||||
<tr class="separator:abe4eff38e39d603bd966c554e9e5afc8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a10bb5b2136f3ecf818079cd0b4632c2b"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#a10bb5b2136f3ecf818079cd0b4632c2b">statisticsTime</a></td></tr>
|
||||
<tr class="separator:a10bb5b2136f3ecf818079cd0b4632c2b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0e02eb985ed5c68bdf82a3445c0b4514"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#a0e02eb985ed5c68bdf82a3445c0b4514">statisticsBitrate</a></td></tr>
|
||||
<tr class="separator:a0e02eb985ed5c68bdf82a3445c0b4514"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a577a99dc4c2767d1946ac174f7a0c69e"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#a577a99dc4c2767d1946ac174f7a0c69e">statisticsSpeed</a></td></tr>
|
||||
@@ -97,12 +104,12 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:a2e5d0fd0859aca2c5a304b4823b86ccd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >Callback data structure </p>
|
||||
<div class="textblock"><p>Callback data structure </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00037">37</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="ae7661f79a95fe7d0eaa118264431f9c2" name="ae7661f79a95fe7d0eaa118264431f9c2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae7661f79a95fe7d0eaa118264431f9c2">◆ </a></span>logData</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae7661f79a95fe7d0eaa118264431f9c2">◆ </a></span>logData</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -118,7 +125,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0108648839b77d246e659a7eefdde4fb" name="a0108648839b77d246e659a7eefdde4fb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0108648839b77d246e659a7eefdde4fb">◆ </a></span>logLevel</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0108648839b77d246e659a7eefdde4fb">◆ </a></span>logLevel</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -134,7 +141,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2e5d0fd0859aca2c5a304b4823b86ccd" name="a2e5d0fd0859aca2c5a304b4823b86ccd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2e5d0fd0859aca2c5a304b4823b86ccd">◆ </a></span>next</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2e5d0fd0859aca2c5a304b4823b86ccd">◆ </a></span>next</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -150,7 +157,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad8af170b5f3057c34dc1221a65a8c4af" name="ad8af170b5f3057c34dc1221a65a8c4af"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad8af170b5f3057c34dc1221a65a8c4af">◆ </a></span>sessionId</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad8af170b5f3057c34dc1221a65a8c4af">◆ </a></span>sessionId</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -166,7 +173,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0e02eb985ed5c68bdf82a3445c0b4514" name="a0e02eb985ed5c68bdf82a3445c0b4514"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e02eb985ed5c68bdf82a3445c0b4514">◆ </a></span>statisticsBitrate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e02eb985ed5c68bdf82a3445c0b4514">◆ </a></span>statisticsBitrate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -182,7 +189,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad4ef14e9625fe915267d644480e9410f" name="ad4ef14e9625fe915267d644480e9410f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad4ef14e9625fe915267d644480e9410f">◆ </a></span>statisticsFps</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad4ef14e9625fe915267d644480e9410f">◆ </a></span>statisticsFps</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -198,7 +205,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6ea1c5fbcf7ad64a04687d738a9c6559" name="a6ea1c5fbcf7ad64a04687d738a9c6559"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6ea1c5fbcf7ad64a04687d738a9c6559">◆ </a></span>statisticsFrameNumber</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6ea1c5fbcf7ad64a04687d738a9c6559">◆ </a></span>statisticsFrameNumber</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -214,7 +221,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0eba672f8309ce08c41eeb63c48091af" name="a0eba672f8309ce08c41eeb63c48091af"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0eba672f8309ce08c41eeb63c48091af">◆ </a></span>statisticsQuality</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0eba672f8309ce08c41eeb63c48091af">◆ </a></span>statisticsQuality</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -230,7 +237,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="aee6855bc657b56db6c8a32656b3018c4" name="aee6855bc657b56db6c8a32656b3018c4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee6855bc657b56db6c8a32656b3018c4">◆ </a></span>statisticsSize</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee6855bc657b56db6c8a32656b3018c4">◆ </a></span>statisticsSize</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -246,7 +253,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a577a99dc4c2767d1946ac174f7a0c69e" name="a577a99dc4c2767d1946ac174f7a0c69e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a577a99dc4c2767d1946ac174f7a0c69e">◆ </a></span>statisticsSpeed</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a577a99dc4c2767d1946ac174f7a0c69e">◆ </a></span>statisticsSpeed</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -261,14 +268,14 @@ Data Fields</h2></td></tr>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abe4eff38e39d603bd966c554e9e5afc8" name="abe4eff38e39d603bd966c554e9e5afc8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abe4eff38e39d603bd966c554e9e5afc8">◆ </a></span>statisticsTime</h2>
|
||||
<a id="a10bb5b2136f3ecf818079cd0b4632c2b" name="a10bb5b2136f3ecf818079cd0b4632c2b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a10bb5b2136f3ecf818079cd0b4632c2b">◆ </a></span>statisticsTime</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> CallbackData::statisticsTime</td>
|
||||
<td class="memname">double CallbackData::statisticsTime</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
@@ -278,7 +285,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a24877dd94bec8b5bad7a0ed6893f7c28" name="a24877dd94bec8b5bad7a0ed6893f7c28"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a24877dd94bec8b5bad7a0ed6893f7c28">◆ </a></span>type</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a24877dd94bec8b5bad7a0ed6893f7c28">◆ </a></span>type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -299,7 +306,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: CompactContext Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -94,10 +101,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01181">1181</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01195">1195</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a8e0108669bebe76f67bb8ae4869f4843" name="a8e0108669bebe76f67bb8ae4869f4843"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8e0108669bebe76f67bb8ae4869f4843">◆ </a></span>class</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8e0108669bebe76f67bb8ae4869f4843">◆ </a></span>class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -108,12 +115,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01182">1182</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01196">1196</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad9d56249a5965a5ec47f3a1241ce6b1e" name="ad9d56249a5965a5ec47f3a1241ce6b1e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad9d56249a5965a5ec47f3a1241ce6b1e">◆ </a></span>escape_mode_str</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad9d56249a5965a5ec47f3a1241ce6b1e">◆ </a></span>escape_mode_str</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -124,12 +131,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01187">1187</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01201">1201</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a75a85295a2f8026ff95330866cf563aa" name="a75a85295a2f8026ff95330866cf563aa"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a75a85295a2f8026ff95330866cf563aa">◆ </a></span>escape_str</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a75a85295a2f8026ff95330866cf563aa">◆ </a></span>escape_str</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -140,12 +147,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01188">1188</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01202">1202</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2384aee850920cabfaece87e4c368931" name="a2384aee850920cabfaece87e4c368931"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2384aee850920cabfaece87e4c368931">◆ </a></span>has_nested_elems</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2384aee850920cabfaece87e4c368931">◆ </a></span>has_nested_elems</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -156,12 +163,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01190">1190</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01204">1204</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a803eb26c6bc39957c885f8f58dfee861" name="a803eb26c6bc39957c885f8f58dfee861"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a803eb26c6bc39957c885f8f58dfee861">◆ </a></span>item_sep</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a803eb26c6bc39957c885f8f58dfee861">◆ </a></span>item_sep</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -172,12 +179,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01184">1184</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01198">1198</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab69db67b807887e2e11247ff28f0482c" name="ab69db67b807887e2e11247ff28f0482c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab69db67b807887e2e11247ff28f0482c">◆ </a></span>item_sep_str</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab69db67b807887e2e11247ff28f0482c">◆ </a></span>item_sep_str</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -188,12 +195,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01183">1183</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01197">1197</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2b8d470952d1051c0fd6b89b13a35e1e" name="a2b8d470952d1051c0fd6b89b13a35e1e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2b8d470952d1051c0fd6b89b13a35e1e">◆ </a></span>nested_section</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2b8d470952d1051c0fd6b89b13a35e1e">◆ </a></span>nested_section</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -204,12 +211,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01189">1189</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01203">1203</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4d211d2b2ba9c83a0613ec9c79af1f71" name="a4d211d2b2ba9c83a0613ec9c79af1f71"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4d211d2b2ba9c83a0613ec9c79af1f71">◆ </a></span>nokey</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4d211d2b2ba9c83a0613ec9c79af1f71">◆ </a></span>nokey</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -220,12 +227,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01185">1185</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01199">1199</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af0b37847b18bd84f3d786c7e824356ee" name="af0b37847b18bd84f3d786c7e824356ee"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af0b37847b18bd84f3d786c7e824356ee">◆ </a></span>print_section</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af0b37847b18bd84f3d786c7e824356ee">◆ </a></span>print_section</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -236,12 +243,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01186">1186</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01200">1200</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a14c571b1a684a9d550b5649fcbaa93f8" name="a14c571b1a684a9d550b5649fcbaa93f8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a14c571b1a684a9d550b5649fcbaa93f8">◆ </a></span>terminate_line</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a14c571b1a684a9d550b5649fcbaa93f8">◆ </a></span>terminate_line</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -252,7 +259,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01191">1191</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01205">1205</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -262,7 +269,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: Option Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -81,12 +88,12 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:a4dc04a99a38324c37ad89101d720e236"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock"><p >An option extracted from the commandline. Cannot use AVDictionary because of options like -map which can be used multiple times. </p>
|
||||
<div class="textblock"><p>An option extracted from the commandline. Cannot use AVDictionary because of options like -map which can be used multiple times. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00265">265</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00278">278</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a16d977bce49a6da603426937ff7b6617" name="a16d977bce49a6da603426937ff7b6617"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a16d977bce49a6da603426937ff7b6617">◆ </a></span>key</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a16d977bce49a6da603426937ff7b6617">◆ </a></span>key</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -97,12 +104,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00267">267</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00280">280</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3b25df629d81a005daeb930f12560edc" name="a3b25df629d81a005daeb930f12560edc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3b25df629d81a005daeb930f12560edc">◆ </a></span>opt</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3b25df629d81a005daeb930f12560edc">◆ </a></span>opt</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -113,12 +120,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00266">266</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00279">279</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4dc04a99a38324c37ad89101d720e236" name="a4dc04a99a38324c37ad89101d720e236"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4dc04a99a38324c37ad89101d720e236">◆ </a></span>val</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4dc04a99a38324c37ad89101d720e236">◆ </a></span>val</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -129,7 +136,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00268">268</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00281">281</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -139,7 +146,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: InputStream Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -91,6 +98,10 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:ac9fc51324b931c1db5c5c1445fe70c3b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6c98acd7bffcebe0d9e13f9d845845e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a6c98acd7bffcebe0d9e13f9d845845e7">processing_needed</a></td></tr>
|
||||
<tr class="separator:a6c98acd7bffcebe0d9e13f9d845845e7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3df48bcac32b134bb20d3943759ac2fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a3df48bcac32b134bb20d3943759ac2fb">want_frame_data</a></td></tr>
|
||||
<tr class="separator:a3df48bcac32b134bb20d3943759ac2fb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8815cc7a53aea25fa0aee7004a3202c3"><td class="memItemLeft" align="right" valign="top">AVCodecParameters * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a8815cc7a53aea25fa0aee7004a3202c3">par</a></td></tr>
|
||||
<tr class="separator:a8815cc7a53aea25fa0aee7004a3202c3"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a550ceee60cb995b284b52962dcba6597"><td class="memItemLeft" align="right" valign="top">AVCodecContext * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a550ceee60cb995b284b52962dcba6597">dec_ctx</a></td></tr>
|
||||
<tr class="separator:a550ceee60cb995b284b52962dcba6597"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aec71efef67656157f493555fddbbc1c9"><td class="memItemLeft" align="right" valign="top">const AVCodec * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aec71efef67656157f493555fddbbc1c9">dec</a></td></tr>
|
||||
@@ -99,6 +110,8 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:a1492e008c195bbd4e2c84bccbc5ee216"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9d7d1e08713e8fb98d18d1ef6367e8e6"><td class="memItemLeft" align="right" valign="top">AVPacket * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a9d7d1e08713e8fb98d18d1ef6367e8e6">pkt</a></td></tr>
|
||||
<tr class="separator:a9d7d1e08713e8fb98d18d1ef6367e8e6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae52558c47e51e5d92451dc4731b66d1d"><td class="memItemLeft" align="right" valign="top">AVRational </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ae52558c47e51e5d92451dc4731b66d1d">framerate_guessed</a></td></tr>
|
||||
<tr class="separator:ae52558c47e51e5d92451dc4731b66d1d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae6c0680d4f8c5173937451d79efef0bf"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ae6c0680d4f8c5173937451d79efef0bf">prev_pkt_pts</a></td></tr>
|
||||
<tr class="separator:ae6c0680d4f8c5173937451d79efef0bf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6718f5f7b2206b2848af5e35ae3a9186"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a6718f5f7b2206b2848af5e35ae3a9186">start</a></td></tr>
|
||||
@@ -106,19 +119,21 @@ Data Fields</h2></td></tr>
|
||||
<tr class="memitem:a8026af86b300d31432bc1bf74910aea5"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a8026af86b300d31432bc1bf74910aea5">next_dts</a></td></tr>
|
||||
<tr class="separator:a8026af86b300d31432bc1bf74910aea5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa4918133b75f0447192deea8c21f822e"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aa4918133b75f0447192deea8c21f822e">first_dts</a></td></tr>
|
||||
<tr class="memdesc:aa4918133b75f0447192deea8c21f822e"><td class="mdescLeft"> </td><td class="mdescRight">dts of the first packet read for this stream (in AV_TIME_BASE units) <a href="../../d3/d6e/struct_input_stream.html#aa4918133b75f0447192deea8c21f822e">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:aa4918133b75f0447192deea8c21f822e"><td class="mdescLeft"> </td><td class="mdescRight">dts of the first packet read for this stream (in AV_TIME_BASE units) <br /></td></tr>
|
||||
<tr class="separator:aa4918133b75f0447192deea8c21f822e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a1e7893cdf661d9ad7c24fdccc60fa05e">dts</a></td></tr>
|
||||
<tr class="memdesc:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="mdescLeft"> </td><td class="mdescRight">dts of the last packet read for this stream (in AV_TIME_BASE units) <a href="../../d3/d6e/struct_input_stream.html#a1e7893cdf661d9ad7c24fdccc60fa05e">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="mdescLeft"> </td><td class="mdescRight">dts of the last packet read for this stream (in AV_TIME_BASE units) <br /></td></tr>
|
||||
<tr class="separator:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab14ac8d1cdb5c1dd6472dd4c13867368"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ab14ac8d1cdb5c1dd6472dd4c13867368">next_pts</a></td></tr>
|
||||
<tr class="memdesc:ab14ac8d1cdb5c1dd6472dd4c13867368"><td class="mdescLeft"> </td><td class="mdescRight">synthetic pts for the next decode frame (in AV_TIME_BASE units) <a href="../../d3/d6e/struct_input_stream.html#ab14ac8d1cdb5c1dd6472dd4c13867368">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:ab14ac8d1cdb5c1dd6472dd4c13867368"><td class="mdescLeft"> </td><td class="mdescRight">synthetic pts for the next decode frame (in AV_TIME_BASE units) <br /></td></tr>
|
||||
<tr class="separator:ab14ac8d1cdb5c1dd6472dd4c13867368"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5e77505bdc5afbc6ab5cf613894925b4"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a5e77505bdc5afbc6ab5cf613894925b4">pts</a></td></tr>
|
||||
<tr class="memdesc:a5e77505bdc5afbc6ab5cf613894925b4"><td class="mdescLeft"> </td><td class="mdescRight">current pts of the decoded frame (in AV_TIME_BASE units) <a href="../../d3/d6e/struct_input_stream.html#a5e77505bdc5afbc6ab5cf613894925b4">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a5e77505bdc5afbc6ab5cf613894925b4"><td class="mdescLeft"> </td><td class="mdescRight">current pts of the decoded frame (in AV_TIME_BASE units) <br /></td></tr>
|
||||
<tr class="separator:a5e77505bdc5afbc6ab5cf613894925b4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8ee44633b600f2b31541b213f0a4b322"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a8ee44633b600f2b31541b213f0a4b322">wrap_correction_done</a></td></tr>
|
||||
<tr class="separator:a8ee44633b600f2b31541b213f0a4b322"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa8f3a07669847da56cd65bd95329d7a4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aa8f3a07669847da56cd65bd95329d7a4">last_pkt_repeat_pict</a></td></tr>
|
||||
<tr class="separator:aa8f3a07669847da56cd65bd95329d7a4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a7ff433fc7a48e7b58a4b91e8ff05cf25"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a7ff433fc7a48e7b58a4b91e8ff05cf25">filter_in_rescale_delta_last</a></td></tr>
|
||||
<tr class="separator:a7ff433fc7a48e7b58a4b91e8ff05cf25"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aeb79819841b6d172faf8c108db4ffbd0"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aeb79819841b6d172faf8c108db4ffbd0">min_pts</a></td></tr>
|
||||
@@ -145,15 +160,16 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:abcb8222561f1ee84a2f7a2157bed356c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1ed159d9bc9d71428699968505629b38"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a1ed159d9bc9d71428699968505629b38">fix_sub_duration</a></td></tr>
|
||||
<tr class="separator:a1ed159d9bc9d71428699968505629b38"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a620e4a8547e0bedc99f562539fc30421"><td class="memItemLeft" >struct {</td></tr>
|
||||
<tr class="memitem:aad79c358d15e2c9af9ecfe08de8bf19d"><td class="memItemLeft" >   <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>   <a class="el" href="../../d3/d6e/struct_input_stream.html#a408a0502c42d26b196c524812d70a7e8">got_output</a></td></tr>
|
||||
<tr class="separator:aad79c358d15e2c9af9ecfe08de8bf19d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a26040c4e9ce36924b8cdad3c0b0b324c"><td class="memItemLeft" >   <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>   <a class="el" href="../../d3/d6e/struct_input_stream.html#a6ae65382f22317b94b7ccfe00024d31a">ret</a></td></tr>
|
||||
<tr class="separator:a26040c4e9ce36924b8cdad3c0b0b324c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a2cbe4d705c7f3ccade0c5f3caad4db2b"><td class="memItemLeft" >   AVSubtitle   <a class="el" href="../../d3/d6e/struct_input_stream.html#ae37fb0410a65c6b2e5a38614f4481f07">subtitle</a></td></tr>
|
||||
<tr class="separator:a2cbe4d705c7f3ccade0c5f3caad4db2b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a620e4a8547e0bedc99f562539fc30421"><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a620e4a8547e0bedc99f562539fc30421">prev_sub</a></td></tr>
|
||||
<tr class="separator:a620e4a8547e0bedc99f562539fc30421"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abfb2fd782cfdeec429963f4a9b378a15"><td class="memItemLeft" >struct { </td><td class="memItemRight" valign="bottom"></td></tr>
|
||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:adf4a2ef75c7bef625d60aad657335d18"><td class="memItemLeft" >   <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>   <a class="el" href="../../d3/d6e/struct_input_stream.html#a408a0502c42d26b196c524812d70a7e8">got_output</a> </td><td class="memItemRight" valign="bottom"></td></tr>
|
||||
<tr class="separator:adf4a2ef75c7bef625d60aad657335d18"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a973dada2a0b2631bae7f87a229e8a332"><td class="memItemLeft" >   <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>   <a class="el" href="../../d3/d6e/struct_input_stream.html#a6ae65382f22317b94b7ccfe00024d31a">ret</a> </td><td class="memItemRight" valign="bottom"></td></tr>
|
||||
<tr class="separator:a973dada2a0b2631bae7f87a229e8a332"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a09a23912b6caddf3270aa96db79db091"><td class="memItemLeft" >   AVSubtitle   <a class="el" href="../../d3/d6e/struct_input_stream.html#ae37fb0410a65c6b2e5a38614f4481f07">subtitle</a> </td><td class="memItemRight" valign="bottom"></td></tr>
|
||||
<tr class="separator:a09a23912b6caddf3270aa96db79db091"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:abfb2fd782cfdeec429963f4a9b378a15"><td class="memItemLeft" valign="top">} </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#abfb2fd782cfdeec429963f4a9b378a15">prev_sub</a> </td><td class="memItemRight" valign="bottom"></td></tr>
|
||||
<tr class="separator:abfb2fd782cfdeec429963f4a9b378a15"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:acc9fee6e45ff302a2c1a06a053cbaa22"><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html">InputStream::sub2video</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#acc9fee6e45ff302a2c1a06a053cbaa22">sub2video</a></td></tr>
|
||||
<tr class="separator:acc9fee6e45ff302a2c1a06a053cbaa22"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad76700001c97c3ce465539f0c698e6bc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/d0c/struct_input_filter.html">InputFilter</a> ** </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ad76700001c97c3ce465539f0c698e6bc">filters</a></td></tr>
|
||||
@@ -170,16 +186,10 @@ Data Fields</h2></td></tr>
|
||||
<tr class="separator:ae48685e82826c6b5922014d47e2cb6bb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a252184ceda81f2d65f63f0470b877bd4"><td class="memItemLeft" align="right" valign="top">enum AVPixelFormat </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a252184ceda81f2d65f63f0470b877bd4">hwaccel_output_format</a></td></tr>
|
||||
<tr class="separator:a252184ceda81f2d65f63f0470b877bd4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa455c67610467c0d79f42b9c2e620d9f"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aa455c67610467c0d79f42b9c2e620d9f">hwaccel_ctx</a></td></tr>
|
||||
<tr class="separator:aa455c67610467c0d79f42b9c2e620d9f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a45c7ee6dae692d19ff3d275032aeea94"><td class="memItemLeft" align="right" valign="top">void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a45c7ee6dae692d19ff3d275032aeea94">hwaccel_uninit</a> )(AVCodecContext *s)</td></tr>
|
||||
<tr class="separator:a45c7ee6dae692d19ff3d275032aeea94"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad983487b3e7c29f53bb3336190f14051"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ad983487b3e7c29f53bb3336190f14051">hwaccel_retrieve_data</a> )(AVCodecContext *s, AVFrame *frame)</td></tr>
|
||||
<tr class="separator:ad983487b3e7c29f53bb3336190f14051"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a05769ba0518105626a6d64386795b48f"><td class="memItemLeft" align="right" valign="top">enum AVPixelFormat </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a05769ba0518105626a6d64386795b48f">hwaccel_pix_fmt</a></td></tr>
|
||||
<tr class="separator:a05769ba0518105626a6d64386795b48f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a91c6f154cc61c348f644987044423e57"><td class="memItemLeft" align="right" valign="top">enum AVPixelFormat </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a91c6f154cc61c348f644987044423e57">hwaccel_retrieved_pix_fmt</a></td></tr>
|
||||
<tr class="separator:a91c6f154cc61c348f644987044423e57"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6f49309998ba92804b9d16761817811e"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a6f49309998ba92804b9d16761817811e">data_size</a></td></tr>
|
||||
<tr class="separator:a6f49309998ba92804b9d16761817811e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ade4b46981af499da120e4e2b30517bef"><td class="memItemLeft" align="right" valign="top">uint64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ade4b46981af499da120e4e2b30517bef">nb_packets</a></td></tr>
|
||||
@@ -195,10 +205,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00344">344</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00384">384</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="abcb8222561f1ee84a2f7a2157bed356c" name="abcb8222561f1ee84a2f7a2157bed356c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abcb8222561f1ee84a2f7a2157bed356c">◆ </a></span>autorotate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abcb8222561f1ee84a2f7a2157bed356c">◆ </a></span>autorotate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -209,12 +219,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00389">389</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00445">445</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3a0034bb2959a06111810d2813975b24" name="a3a0034bb2959a06111810d2813975b24"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3a0034bb2959a06111810d2813975b24">◆ </a></span>cfr_next_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3a0034bb2959a06111810d2813975b24">◆ </a></span>cfr_next_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -225,12 +235,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00378">378</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00434">434</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6f49309998ba92804b9d16761817811e" name="a6f49309998ba92804b9d16761817811e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6f49309998ba92804b9d16761817811e">◆ </a></span>data_size</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6f49309998ba92804b9d16761817811e">◆ </a></span>data_size</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -241,12 +251,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00429">429</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00481">481</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aec71efef67656157f493555fddbbc1c9" name="aec71efef67656157f493555fddbbc1c9"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aec71efef67656157f493555fddbbc1c9">◆ </a></span>dec</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aec71efef67656157f493555fddbbc1c9">◆ </a></span>dec</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -257,12 +267,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00355">355</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00403">403</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a550ceee60cb995b284b52962dcba6597" name="a550ceee60cb995b284b52962dcba6597"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a550ceee60cb995b284b52962dcba6597">◆ </a></span>dec_ctx</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a550ceee60cb995b284b52962dcba6597">◆ </a></span>dec_ctx</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -273,12 +283,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00354">354</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00402">402</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1492e008c195bbd4e2c84bccbc5ee216" name="a1492e008c195bbd4e2c84bccbc5ee216"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1492e008c195bbd4e2c84bccbc5ee216">◆ </a></span>decoded_frame</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1492e008c195bbd4e2c84bccbc5ee216">◆ </a></span>decoded_frame</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -289,12 +299,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00356">356</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00404">404</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae73dddf18b49b6660263bc3a73a44290" name="ae73dddf18b49b6660263bc3a73a44290"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae73dddf18b49b6660263bc3a73a44290">◆ </a></span>decoder_opts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae73dddf18b49b6660263bc3a73a44290">◆ </a></span>decoder_opts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -305,12 +315,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00384">384</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00440">440</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac9fc51324b931c1db5c5c1445fe70c3b" name="ac9fc51324b931c1db5c5c1445fe70c3b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac9fc51324b931c1db5c5c1445fe70c3b">◆ </a></span>decoding_needed</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac9fc51324b931c1db5c5c1445fe70c3b">◆ </a></span>decoding_needed</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -321,12 +331,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00349">349</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00389">389</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac39249a26eeec2ed084fcc433ec9825e" name="ac39249a26eeec2ed084fcc433ec9825e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac39249a26eeec2ed084fcc433ec9825e">◆ </a></span>discard</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac39249a26eeec2ed084fcc433ec9825e">◆ </a></span>discard</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -337,12 +347,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00347">347</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00387">387</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1e7893cdf661d9ad7c24fdccc60fa05e" name="a1e7893cdf661d9ad7c24fdccc60fa05e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1e7893cdf661d9ad7c24fdccc60fa05e">◆ </a></span>dts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1e7893cdf661d9ad7c24fdccc60fa05e">◆ </a></span>dts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -355,12 +365,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>dts of the last packet read for this stream (in AV_TIME_BASE units) </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00365">365</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00415">415</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1690691cd9bdc598717be8aa911b01ad" name="a1690691cd9bdc598717be8aa911b01ad"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1690691cd9bdc598717be8aa911b01ad">◆ </a></span>dts_buffer</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1690691cd9bdc598717be8aa911b01ad">◆ </a></span>dts_buffer</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -371,12 +381,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00436">436</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00488">488</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad47d834630eee2dca258aa449fb1df47" name="ad47d834630eee2dca258aa449fb1df47"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad47d834630eee2dca258aa449fb1df47">◆ </a></span>file_index</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad47d834630eee2dca258aa449fb1df47">◆ </a></span>file_index</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -387,12 +397,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00345">345</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00385">385</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7ff433fc7a48e7b58a4b91e8ff05cf25" name="a7ff433fc7a48e7b58a4b91e8ff05cf25"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7ff433fc7a48e7b58a4b91e8ff05cf25">◆ </a></span>filter_in_rescale_delta_last</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7ff433fc7a48e7b58a4b91e8ff05cf25">◆ </a></span>filter_in_rescale_delta_last</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -403,12 +413,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00371">371</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00427">427</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad76700001c97c3ce465539f0c698e6bc" name="ad76700001c97c3ce465539f0c698e6bc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad76700001c97c3ce465539f0c698e6bc">◆ </a></span>filters</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad76700001c97c3ce465539f0c698e6bc">◆ </a></span>filters</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -419,12 +429,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00409">409</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00465">465</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa4918133b75f0447192deea8c21f822e" name="aa4918133b75f0447192deea8c21f822e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4918133b75f0447192deea8c21f822e">◆ </a></span>first_dts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4918133b75f0447192deea8c21f822e">◆ </a></span>first_dts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -437,12 +447,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>dts of the first packet read for this stream (in AV_TIME_BASE units) </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00364">364</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00414">414</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1ed159d9bc9d71428699968505629b38" name="a1ed159d9bc9d71428699968505629b38"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1ed159d9bc9d71428699968505629b38">◆ </a></span>fix_sub_duration</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1ed159d9bc9d71428699968505629b38">◆ </a></span>fix_sub_duration</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -453,12 +463,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00391">391</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00447">447</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afbaeaac6e0b1fc3095bb90f17d58621d" name="afbaeaac6e0b1fc3095bb90f17d58621d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afbaeaac6e0b1fc3095bb90f17d58621d">◆ </a></span>framerate</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afbaeaac6e0b1fc3095bb90f17d58621d">◆ </a></span>framerate</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -469,12 +479,28 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00385">385</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00441">441</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae52558c47e51e5d92451dc4731b66d1d" name="ae52558c47e51e5d92451dc4731b66d1d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae52558c47e51e5d92451dc4731b66d1d">◆ </a></span>framerate_guessed</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">AVRational InputStream::framerate_guessed</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00407">407</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac61e0f854402b58a64e676bdcfa75dfd" name="ac61e0f854402b58a64e676bdcfa75dfd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac61e0f854402b58a64e676bdcfa75dfd">◆ </a></span>frames_decoded</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac61e0f854402b58a64e676bdcfa75dfd">◆ </a></span>frames_decoded</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -485,12 +511,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00433">433</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00485">485</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a408a0502c42d26b196c524812d70a7e8" name="a408a0502c42d26b196c524812d70a7e8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a408a0502c42d26b196c524812d70a7e8">◆ </a></span>got_output</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a408a0502c42d26b196c524812d70a7e8">◆ </a></span>got_output</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -501,12 +527,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00393">393</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00449">449</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a99e6bf56ec091f8af11744e4b0499327" name="a99e6bf56ec091f8af11744e4b0499327"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a99e6bf56ec091f8af11744e4b0499327">◆ </a></span>guess_layout_max</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a99e6bf56ec091f8af11744e4b0499327">◆ </a></span>guess_layout_max</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -517,28 +543,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00387">387</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa455c67610467c0d79f42b9c2e620d9f" name="aa455c67610467c0d79f42b9c2e620d9f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa455c67610467c0d79f42b9c2e620d9f">◆ </a></span>hwaccel_ctx</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void* InputStream::hwaccel_ctx</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00421">421</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00443">443</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae48685e82826c6b5922014d47e2cb6bb" name="ae48685e82826c6b5922014d47e2cb6bb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae48685e82826c6b5922014d47e2cb6bb">◆ </a></span>hwaccel_device</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae48685e82826c6b5922014d47e2cb6bb">◆ </a></span>hwaccel_device</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -549,12 +559,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00417">417</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00473">473</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af577e45cb148e174ef437f3cbaa8b628" name="af577e45cb148e174ef437f3cbaa8b628"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af577e45cb148e174ef437f3cbaa8b628">◆ </a></span>hwaccel_device_type</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af577e45cb148e174ef437f3cbaa8b628">◆ </a></span>hwaccel_device_type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -565,12 +575,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00416">416</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00472">472</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6c3473c28e30500adb3fa7886e6d7c3e" name="a6c3473c28e30500adb3fa7886e6d7c3e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6c3473c28e30500adb3fa7886e6d7c3e">◆ </a></span>hwaccel_id</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6c3473c28e30500adb3fa7886e6d7c3e">◆ </a></span>hwaccel_id</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -581,12 +591,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00415">415</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00471">471</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a252184ceda81f2d65f63f0470b877bd4" name="a252184ceda81f2d65f63f0470b877bd4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a252184ceda81f2d65f63f0470b877bd4">◆ </a></span>hwaccel_output_format</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a252184ceda81f2d65f63f0470b877bd4">◆ </a></span>hwaccel_output_format</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -597,12 +607,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00418">418</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00474">474</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a05769ba0518105626a6d64386795b48f" name="a05769ba0518105626a6d64386795b48f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a05769ba0518105626a6d64386795b48f">◆ </a></span>hwaccel_pix_fmt</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a05769ba0518105626a6d64386795b48f">◆ </a></span>hwaccel_pix_fmt</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -613,12 +623,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00424">424</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00477">477</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad983487b3e7c29f53bb3336190f14051" name="ad983487b3e7c29f53bb3336190f14051"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad983487b3e7c29f53bb3336190f14051">◆ </a></span>hwaccel_retrieve_data</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad983487b3e7c29f53bb3336190f14051">◆ </a></span>hwaccel_retrieve_data</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -629,44 +639,28 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00423">423</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00476">476</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a91c6f154cc61c348f644987044423e57" name="a91c6f154cc61c348f644987044423e57"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a91c6f154cc61c348f644987044423e57">◆ </a></span>hwaccel_retrieved_pix_fmt</h2>
|
||||
<a id="aa8f3a07669847da56cd65bd95329d7a4" name="aa8f3a07669847da56cd65bd95329d7a4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8f3a07669847da56cd65bd95329d7a4">◆ </a></span>last_pkt_repeat_pict</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">enum AVPixelFormat InputStream::hwaccel_retrieved_pix_fmt</td>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> InputStream::last_pkt_repeat_pict</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00425">425</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a45c7ee6dae692d19ff3d275032aeea94" name="a45c7ee6dae692d19ff3d275032aeea94"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a45c7ee6dae692d19ff3d275032aeea94">◆ </a></span>hwaccel_uninit</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void(* InputStream::hwaccel_uninit) (AVCodecContext *s)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00422">422</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a911d752902aa8d4666ccefd8c912c91e" name="a911d752902aa8d4666ccefd8c912c91e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a911d752902aa8d4666ccefd8c912c91e">◆ </a></span>max_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a911d752902aa8d4666ccefd8c912c91e">◆ </a></span>max_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -677,12 +671,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00374">374</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00430">430</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeb79819841b6d172faf8c108db4ffbd0" name="aeb79819841b6d172faf8c108db4ffbd0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeb79819841b6d172faf8c108db4ffbd0">◆ </a></span>min_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeb79819841b6d172faf8c108db4ffbd0">◆ </a></span>min_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -693,12 +687,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00373">373</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00429">429</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4b6db5d0fb15c8262b1ba543495fe628" name="a4b6db5d0fb15c8262b1ba543495fe628"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4b6db5d0fb15c8262b1ba543495fe628">◆ </a></span>nb_dts_buffer</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4b6db5d0fb15c8262b1ba543495fe628">◆ </a></span>nb_dts_buffer</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -709,12 +703,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00437">437</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00489">489</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7c2c9b58a4db2101414f2d106f4244b0" name="a7c2c9b58a4db2101414f2d106f4244b0"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7c2c9b58a4db2101414f2d106f4244b0">◆ </a></span>nb_filters</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7c2c9b58a4db2101414f2d106f4244b0">◆ </a></span>nb_filters</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -725,12 +719,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00410">410</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00466">466</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ade4b46981af499da120e4e2b30517bef" name="ade4b46981af499da120e4e2b30517bef"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ade4b46981af499da120e4e2b30517bef">◆ </a></span>nb_packets</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ade4b46981af499da120e4e2b30517bef">◆ </a></span>nb_packets</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -741,12 +735,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00431">431</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00483">483</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="af76c7165931c721b63008034c94d9275" name="af76c7165931c721b63008034c94d9275"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af76c7165931c721b63008034c94d9275">◆ </a></span>nb_samples</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#af76c7165931c721b63008034c94d9275">◆ </a></span>nb_samples</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -757,12 +751,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00380">380</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00436">436</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8026af86b300d31432bc1bf74910aea5" name="a8026af86b300d31432bc1bf74910aea5"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8026af86b300d31432bc1bf74910aea5">◆ </a></span>next_dts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8026af86b300d31432bc1bf74910aea5">◆ </a></span>next_dts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -773,12 +767,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00363">363</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00413">413</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab14ac8d1cdb5c1dd6472dd4c13867368" name="ab14ac8d1cdb5c1dd6472dd4c13867368"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab14ac8d1cdb5c1dd6472dd4c13867368">◆ </a></span>next_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab14ac8d1cdb5c1dd6472dd4c13867368">◆ </a></span>next_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -791,12 +785,29 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>synthetic pts for the next decode frame (in AV_TIME_BASE units) </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00367">367</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00417">417</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8815cc7a53aea25fa0aee7004a3202c3" name="a8815cc7a53aea25fa0aee7004a3202c3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8815cc7a53aea25fa0aee7004a3202c3">◆ </a></span>par</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">AVCodecParameters* InputStream::par</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p>Codec parameters - to be used by the decoding/streamcopy code. st->codecpar should not be accessed, because it may be modified concurrently by the demuxing thread. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00401">401</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9d7d1e08713e8fb98d18d1ef6367e8e6" name="a9d7d1e08713e8fb98d18d1ef6367e8e6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9d7d1e08713e8fb98d18d1ef6367e8e6">◆ </a></span>pkt</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9d7d1e08713e8fb98d18d1ef6367e8e6">◆ </a></span>pkt</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -807,12 +818,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00357">357</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00405">405</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae6c0680d4f8c5173937451d79efef0bf" name="ae6c0680d4f8c5173937451d79efef0bf"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae6c0680d4f8c5173937451d79efef0bf">◆ </a></span>prev_pkt_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae6c0680d4f8c5173937451d79efef0bf">◆ </a></span>prev_pkt_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -823,12 +834,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00359">359</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00409">409</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a620e4a8547e0bedc99f562539fc30421" name="a620e4a8547e0bedc99f562539fc30421"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a620e4a8547e0bedc99f562539fc30421">◆ </a></span></h2>
|
||||
<a id="abfb2fd782cfdeec429963f4a9b378a15" name="abfb2fd782cfdeec429963f4a9b378a15"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abfb2fd782cfdeec429963f4a9b378a15">◆ </a></span>[struct]</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -842,7 +853,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6c98acd7bffcebe0d9e13f9d845845e7" name="a6c98acd7bffcebe0d9e13f9d845845e7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6c98acd7bffcebe0d9e13f9d845845e7">◆ </a></span>processing_needed</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6c98acd7bffcebe0d9e13f9d845845e7">◆ </a></span>processing_needed</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -853,12 +864,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00352">352</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00392">392</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5e77505bdc5afbc6ab5cf613894925b4" name="a5e77505bdc5afbc6ab5cf613894925b4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5e77505bdc5afbc6ab5cf613894925b4">◆ </a></span>pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5e77505bdc5afbc6ab5cf613894925b4">◆ </a></span>pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -871,12 +882,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>current pts of the decoded frame (in AV_TIME_BASE units) </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00368">368</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00418">418</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a809d93e64e76fe2f142102e58dc82a1e" name="a809d93e64e76fe2f142102e58dc82a1e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a809d93e64e76fe2f142102e58dc82a1e">◆ </a></span>reinit_filters</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a809d93e64e76fe2f142102e58dc82a1e">◆ </a></span>reinit_filters</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -887,12 +898,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00412">412</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00468">468</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6ae65382f22317b94b7ccfe00024d31a" name="a6ae65382f22317b94b7ccfe00024d31a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6ae65382f22317b94b7ccfe00024d31a">◆ </a></span>ret</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6ae65382f22317b94b7ccfe00024d31a">◆ </a></span>ret</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -903,12 +914,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00394">394</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00450">450</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa8aa609acb39eb21da43f02cdfb036eb" name="aa8aa609acb39eb21da43f02cdfb036eb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8aa609acb39eb21da43f02cdfb036eb">◆ </a></span>samples_decoded</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa8aa609acb39eb21da43f02cdfb036eb">◆ </a></span>samples_decoded</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -919,12 +930,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00434">434</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00486">486</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a09d78f4795c4ff17dd54204450f2d394" name="a09d78f4795c4ff17dd54204450f2d394"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a09d78f4795c4ff17dd54204450f2d394">◆ </a></span>saw_first_ts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a09d78f4795c4ff17dd54204450f2d394">◆ </a></span>saw_first_ts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -935,12 +946,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00383">383</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00439">439</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="acf438e2a33238676cb3f68b39ae18049" name="acf438e2a33238676cb3f68b39ae18049"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acf438e2a33238676cb3f68b39ae18049">◆ </a></span>st</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acf438e2a33238676cb3f68b39ae18049">◆ </a></span>st</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -951,12 +962,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00346">346</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00386">386</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6718f5f7b2206b2848af5e35ae3a9186" name="a6718f5f7b2206b2848af5e35ae3a9186"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6718f5f7b2206b2848af5e35ae3a9186">◆ </a></span>start</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6718f5f7b2206b2848af5e35ae3a9186">◆ </a></span>start</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -967,12 +978,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00360">360</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00410">410</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="acc9fee6e45ff302a2c1a06a053cbaa22" name="acc9fee6e45ff302a2c1a06a053cbaa22"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acc9fee6e45ff302a2c1a06a053cbaa22">◆ </a></span>sub2video</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acc9fee6e45ff302a2c1a06a053cbaa22">◆ </a></span>sub2video</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -986,7 +997,7 @@ Data Fields</h2></td></tr>
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae37fb0410a65c6b2e5a38614f4481f07" name="ae37fb0410a65c6b2e5a38614f4481f07"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae37fb0410a65c6b2e5a38614f4481f07">◆ </a></span>subtitle</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae37fb0410a65c6b2e5a38614f4481f07">◆ </a></span>subtitle</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -997,12 +1008,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00395">395</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00451">451</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="abc71c343e0ade7e102adb45badfc6243" name="abc71c343e0ade7e102adb45badfc6243"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abc71c343e0ade7e102adb45badfc6243">◆ </a></span>top_field_first</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#abc71c343e0ade7e102adb45badfc6243">◆ </a></span>top_field_first</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1013,12 +1024,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00386">386</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00442">442</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0dae26daa277d99147113de4ea449bc1" name="a0dae26daa277d99147113de4ea449bc1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0dae26daa277d99147113de4ea449bc1">◆ </a></span>ts_scale</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0dae26daa277d99147113de4ea449bc1">◆ </a></span>ts_scale</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1029,12 +1040,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00382">382</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00438">438</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a86b730f87f0f8ebd088f94af51d91b96" name="a86b730f87f0f8ebd088f94af51d91b96"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a86b730f87f0f8ebd088f94af51d91b96">◆ </a></span>user_set_discard</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a86b730f87f0f8ebd088f94af51d91b96">◆ </a></span>user_set_discard</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1045,12 +1056,28 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00348">348</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00388">388</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3df48bcac32b134bb20d3943759ac2fb" name="a3df48bcac32b134bb20d3943759ac2fb"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3df48bcac32b134bb20d3943759ac2fb">◆ </a></span>want_frame_data</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> InputStream::want_frame_data</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00394">394</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8ee44633b600f2b31541b213f0a4b322" name="a8ee44633b600f2b31541b213f0a4b322"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8ee44633b600f2b31541b213f0a4b322">◆ </a></span>wrap_correction_done</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8ee44633b600f2b31541b213f0a4b322">◆ </a></span>wrap_correction_done</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -1061,7 +1088,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00369">369</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00419">419</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -1072,7 +1099,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,241 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: KeyframeForceCtx Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../jquery.js"></script>
|
||||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-attribs">Data Fields</a> </div>
|
||||
<div class="headertitle"><div class="title">KeyframeForceCtx Struct Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><code>#include <<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>></code></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Data Fields</h2></td></tr>
|
||||
<tr class="memitem:addb12bcf31cc12b09a5f57cad628a41a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#addb12bcf31cc12b09a5f57cad628a41a">type</a></td></tr>
|
||||
<tr class="separator:addb12bcf31cc12b09a5f57cad628a41a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a1f880ee515007075c37e454285ea9a83"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#a1f880ee515007075c37e454285ea9a83">ref_pts</a></td></tr>
|
||||
<tr class="separator:a1f880ee515007075c37e454285ea9a83"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a10dc082c5f386bb0656c57ad00c8d5c4"><td class="memItemLeft" align="right" valign="top">int64_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#a10dc082c5f386bb0656c57ad00c8d5c4">pts</a></td></tr>
|
||||
<tr class="separator:a10dc082c5f386bb0656c57ad00c8d5c4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:adf798befc0a80e66b7f90fd8f17349ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#adf798befc0a80e66b7f90fd8f17349ea">nb_pts</a></td></tr>
|
||||
<tr class="separator:adf798befc0a80e66b7f90fd8f17349ea"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa6ccff7aa390582351eee47745ed9c89"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#aa6ccff7aa390582351eee47745ed9c89">index</a></td></tr>
|
||||
<tr class="separator:aa6ccff7aa390582351eee47745ed9c89"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aaf699d1e164f7faf3df4f2f5e769aa75"><td class="memItemLeft" align="right" valign="top">AVExpr * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#aaf699d1e164f7faf3df4f2f5e769aa75">pexpr</a></td></tr>
|
||||
<tr class="separator:aaf699d1e164f7faf3df4f2f5e769aa75"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a27d7c4a8b7db90f94076ca6d5be8ad3a"><td class="memItemLeft" align="right" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#a27d7c4a8b7db90f94076ca6d5be8ad3a">expr_const_values</a> [<a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a433ef01f7e501e6a6afbee4980a80ab1">FKF_NB</a>]</td></tr>
|
||||
<tr class="separator:a27d7c4a8b7db90f94076ca6d5be8ad3a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aaf1736d785fade32649e301ce55df55b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/da2/struct_keyframe_force_ctx.html#aaf1736d785fade32649e301ce55df55b">dropped_keyframe</a></td></tr>
|
||||
<tr class="separator:aaf1736d785fade32649e301ce55df55b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00595">595</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="aaf1736d785fade32649e301ce55df55b" name="aaf1736d785fade32649e301ce55df55b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf1736d785fade32649e301ce55df55b">◆ </a></span>dropped_keyframe</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> KeyframeForceCtx::dropped_keyframe</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00608">608</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a27d7c4a8b7db90f94076ca6d5be8ad3a" name="a27d7c4a8b7db90f94076ca6d5be8ad3a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a27d7c4a8b7db90f94076ca6d5be8ad3a">◆ </a></span>expr_const_values</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">double KeyframeForceCtx::expr_const_values[<a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#aa21f6f0cd9174b2bb6223cbd15b83508a433ef01f7e501e6a6afbee4980a80ab1">FKF_NB</a>]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00606">606</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa6ccff7aa390582351eee47745ed9c89" name="aa6ccff7aa390582351eee47745ed9c89"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa6ccff7aa390582351eee47745ed9c89">◆ </a></span>index</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> KeyframeForceCtx::index</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00603">603</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="adf798befc0a80e66b7f90fd8f17349ea" name="adf798befc0a80e66b7f90fd8f17349ea"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#adf798befc0a80e66b7f90fd8f17349ea">◆ </a></span>nb_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> KeyframeForceCtx::nb_pts</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00602">602</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aaf699d1e164f7faf3df4f2f5e769aa75" name="aaf699d1e164f7faf3df4f2f5e769aa75"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf699d1e164f7faf3df4f2f5e769aa75">◆ </a></span>pexpr</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">AVExpr* KeyframeForceCtx::pexpr</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00605">605</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a10dc082c5f386bb0656c57ad00c8d5c4" name="a10dc082c5f386bb0656c57ad00c8d5c4"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a10dc082c5f386bb0656c57ad00c8d5c4">◆ </a></span>pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int64_t* KeyframeForceCtx::pts</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00601">601</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a1f880ee515007075c37e454285ea9a83" name="a1f880ee515007075c37e454285ea9a83"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a1f880ee515007075c37e454285ea9a83">◆ </a></span>ref_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">int64_t KeyframeForceCtx::ref_pts</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00598">598</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="addb12bcf31cc12b09a5f57cad628a41a" name="addb12bcf31cc12b09a5f57cad628a41a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#addb12bcf31cc12b09a5f57cad628a41a">◆ </a></span>type</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> KeyframeForceCtx::type</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00596">596</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li><a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffmpegkit_exception.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -78,7 +85,7 @@ Variables</h2></td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Variable Documentation</h2>
|
||||
<a id="a602bfc62417fcbda9f5e3e6604917b3c" name="a602bfc62417fcbda9f5e3e6604917b3c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a602bfc62417fcbda9f5e3e6604917b3c">◆ </a></span>ex_buf__</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a602bfc62417fcbda9f5e3e6604917b3c">◆ </a></span>ex_buf__</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -96,7 +103,7 @@ Variables</h2></td></tr>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
<p >Holds information to implement exception handling. </p>
|
||||
<p>Holds information to implement exception handling. </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d9/d56/ffmpegkit__exception_8c_source.html#l00023">23</a> of file <a class="el" href="../../d9/d56/ffmpegkit__exception_8c_source.html">ffmpegkit_exception.c</a>.</p>
|
||||
|
||||
@@ -105,7 +112,7 @@ Variables</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ffmpegkit_exception.h Source File</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -57,9 +57,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="header">
|
||||
@@ -94,11 +101,11 @@ $(function() {
|
||||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="keyword">extern</span> __thread jmp_buf <a class="code hl_variable" href="../../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c">ex_buf__</a>;</div>
|
||||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
|
||||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#endif </span><span class="comment">// FFMPEG_KIT_EXCEPTION_H</span></div>
|
||||
<div class="ttc" id="affmpegkit__exception_8h_html_a602bfc62417fcbda9f5e3e6604917b3c"><div class="ttname"><a href="../../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c">ex_buf__</a></div><div class="ttdeci">__thread jmp_buf ex_buf__</div><div class="ttdef"><b>Definition:</b> <a href="../../d9/d56/ffmpegkit__exception_8c_source.html#l00023">ffmpegkit_exception.c:23</a></div></div>
|
||||
<div class="ttc" id="affmpegkit__exception_8h_html_a602bfc62417fcbda9f5e3e6604917b3c"><div class="ttname"><a href="../../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c">ex_buf__</a></div><div class="ttdeci">__thread jmp_buf ex_buf__</div><div class="ttdef"><b>Definition</b> <a href="../../d9/d56/ffmpegkit__exception_8c_source.html#l00023">ffmpegkit_exception.c:23</a></div></div>
|
||||
</div><!-- fragment --></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:09 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: FlatContext Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -82,10 +89,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01343">1343</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01357">1357</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="acad059863d0d81b605f384b447e49734" name="acad059863d0d81b605f384b447e49734"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acad059863d0d81b605f384b447e49734">◆ </a></span>class</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#acad059863d0d81b605f384b447e49734">◆ </a></span>class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -96,12 +103,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01344">1344</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01358">1358</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aba2cac86faa289090af7543ff4ffcdcc" name="aba2cac86faa289090af7543ff4ffcdcc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aba2cac86faa289090af7543ff4ffcdcc">◆ </a></span>hierarchical</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aba2cac86faa289090af7543ff4ffcdcc">◆ </a></span>hierarchical</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -112,12 +119,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01347">1347</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01361">1361</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a529baa5a1cba47d2eb62f49b0a4fd03b" name="a529baa5a1cba47d2eb62f49b0a4fd03b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a529baa5a1cba47d2eb62f49b0a4fd03b">◆ </a></span>sep</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a529baa5a1cba47d2eb62f49b0a4fd03b">◆ </a></span>sep</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -128,12 +135,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01346">1346</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01360">1360</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a509af19cca73c04f13342034fee165c7" name="a509af19cca73c04f13342034fee165c7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a509af19cca73c04f13342034fee165c7">◆ </a></span>sep_str</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a509af19cca73c04f13342034fee165c7">◆ </a></span>sep_str</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -144,7 +151,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01345">1345</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01359">1359</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -154,7 +161,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: ObjPool Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../jquery.js"></script>
|
||||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#pub-attribs">Data Fields</a> </div>
|
||||
<div class="headertitle"><div class="title">ObjPool Struct Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
|
||||
Data Fields</h2></td></tr>
|
||||
<tr class="memitem:ab342c9ac56f3fc47292cdbd546c6b2bd"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d62/struct_obj_pool.html#ab342c9ac56f3fc47292cdbd546c6b2bd">pool</a> [32]</td></tr>
|
||||
<tr class="separator:ab342c9ac56f3fc47292cdbd546c6b2bd"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5af7de4b62443f1cab5cd4d6d8a55cc2"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d62/struct_obj_pool.html#a5af7de4b62443f1cab5cd4d6d8a55cc2">pool_count</a></td></tr>
|
||||
<tr class="separator:a5af7de4b62443f1cab5cd4d6d8a55cc2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a12072478fa85f969fbf362ff4007db72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a278e923ca4660a44531c958fb7444b55">ObjPoolCBAlloc</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d62/struct_obj_pool.html#a12072478fa85f969fbf362ff4007db72">alloc</a></td></tr>
|
||||
<tr class="separator:a12072478fa85f969fbf362ff4007db72"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3d6ad08534eee68a2bf333a81720f3ca"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a9cd63c894cb5bdb83c8f98a944f73f87">ObjPoolCBReset</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d62/struct_obj_pool.html#a3d6ad08534eee68a2bf333a81720f3ca">reset</a></td></tr>
|
||||
<tr class="separator:a3d6ad08534eee68a2bf333a81720f3ca"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a79329d72f2b20c4b2b5a0734ba1d281f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a5c2ce6b4dfa9698db080e2577aee2759">ObjPoolCBFree</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d62/struct_obj_pool.html#a79329d72f2b20c4b2b5a0734ba1d281f">free</a></td></tr>
|
||||
<tr class="separator:a79329d72f2b20c4b2b5a0734ba1d281f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00044">44</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a12072478fa85f969fbf362ff4007db72" name="a12072478fa85f969fbf362ff4007db72"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a12072478fa85f969fbf362ff4007db72">◆ </a></span>alloc</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a278e923ca4660a44531c958fb7444b55">ObjPoolCBAlloc</a> ObjPool::alloc</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00048">48</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a79329d72f2b20c4b2b5a0734ba1d281f" name="a79329d72f2b20c4b2b5a0734ba1d281f"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a79329d72f2b20c4b2b5a0734ba1d281f">◆ </a></span>free</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a5c2ce6b4dfa9698db080e2577aee2759">ObjPoolCBFree</a> ObjPool::free</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00050">50</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab342c9ac56f3fc47292cdbd546c6b2bd" name="ab342c9ac56f3fc47292cdbd546c6b2bd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab342c9ac56f3fc47292cdbd546c6b2bd">◆ </a></span>pool</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void* ObjPool::pool[32]</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00045">45</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5af7de4b62443f1cab5cd4d6d8a55cc2" name="a5af7de4b62443f1cab5cd4d6d8a55cc2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5af7de4b62443f1cab5cd4d6d8a55cc2">◆ </a></span>pool_count</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> ObjPool::pool_count</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00046">46</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3d6ad08534eee68a2bf333a81720f3ca" name="a3d6ad08534eee68a2bf333a81720f3ca"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3d6ad08534eee68a2bf333a81720f3ca">◆ </a></span>reset</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a9cd63c894cb5bdb83c8f98a944f73f87">ObjPoolCBReset</a> ObjPool::reset</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00049">49</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this struct was generated from the following file:<ul>
|
||||
<li><a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a></li>
|
||||
</ul>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: DefaultContext Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -82,10 +89,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01033">1033</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01047">1047</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="afa8e41a1d7f3eb5e48102d58da4c7db3" name="afa8e41a1d7f3eb5e48102d58da4c7db3"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afa8e41a1d7f3eb5e48102d58da4c7db3">◆ </a></span>class</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afa8e41a1d7f3eb5e48102d58da4c7db3">◆ </a></span>class</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -96,12 +103,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01034">1034</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01048">1048</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a98cfc785481b62077206b991234b0f9e" name="a98cfc785481b62077206b991234b0f9e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a98cfc785481b62077206b991234b0f9e">◆ </a></span>nested_section</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a98cfc785481b62077206b991234b0f9e">◆ </a></span>nested_section</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -112,12 +119,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01037">1037</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01051">1051</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa4fb1e189f6e2788e6ccc23e65dc3d98" name="aa4fb1e189f6e2788e6ccc23e65dc3d98"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4fb1e189f6e2788e6ccc23e65dc3d98">◆ </a></span>nokey</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa4fb1e189f6e2788e6ccc23e65dc3d98">◆ </a></span>nokey</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -128,12 +135,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01035">1035</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01049">1049</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a7cae04407b25e67940bc2ff2c70496dd" name="a7cae04407b25e67940bc2ff2c70496dd"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7cae04407b25e67940bc2ff2c70496dd">◆ </a></span>noprint_wrappers</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a7cae04407b25e67940bc2ff2c70496dd">◆ </a></span>noprint_wrappers</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -144,7 +151,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01036">1036</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01050">1050</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -154,7 +161,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: InputStream::sub2video Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="nav-path" class="navpath">
|
||||
@@ -82,7 +89,7 @@ Data Fields</h2></td></tr>
|
||||
<tr class="memitem:aaf500e3a36c6e6a6920a8e18c6478a8e"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#aaf500e3a36c6e6a6920a8e18c6478a8e">end_pts</a></td></tr>
|
||||
<tr class="separator:aaf500e3a36c6e6a6920a8e18c6478a8e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a509d9d1872ee8969a6769ce138da3fb2"><td class="memItemLeft" align="right" valign="top">AVFifo * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a509d9d1872ee8969a6769ce138da3fb2">sub_queue</a></td></tr>
|
||||
<tr class="memdesc:a509d9d1872ee8969a6769ce138da3fb2"><td class="mdescLeft"> </td><td class="mdescRight">queue of AVSubtitle* before filter init <a href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a509d9d1872ee8969a6769ce138da3fb2">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a509d9d1872ee8969a6769ce138da3fb2"><td class="mdescLeft"> </td><td class="mdescRight">queue of AVSubtitle* before filter init <br /></td></tr>
|
||||
<tr class="separator:a509d9d1872ee8969a6769ce138da3fb2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a0e7ca3e0eebc5db360ae15f2dac3d622"><td class="memItemLeft" align="right" valign="top">AVFrame * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a0e7ca3e0eebc5db360ae15f2dac3d622">frame</a></td></tr>
|
||||
<tr class="separator:a0e7ca3e0eebc5db360ae15f2dac3d622"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
@@ -91,15 +98,15 @@ Data Fields</h2></td></tr>
|
||||
<tr class="memitem:aeecdbc3f86c3bcbf9c42ac7a867e91db"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#aeecdbc3f86c3bcbf9c42ac7a867e91db">h</a></td></tr>
|
||||
<tr class="separator:aeecdbc3f86c3bcbf9c42ac7a867e91db"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a15e606590596931e88ebd0b4626bfe97"><td class="memItemLeft" align="right" valign="top">unsigned <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a15e606590596931e88ebd0b4626bfe97">initialize</a></td></tr>
|
||||
<tr class="memdesc:a15e606590596931e88ebd0b4626bfe97"><td class="mdescLeft"> </td><td class="mdescRight">marks if sub2video_update should force an initialization <a href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a15e606590596931e88ebd0b4626bfe97">More...</a><br /></td></tr>
|
||||
<tr class="memdesc:a15e606590596931e88ebd0b4626bfe97"><td class="mdescLeft"> </td><td class="mdescRight">marks if sub2video_update should force an initialization <br /></td></tr>
|
||||
<tr class="separator:a15e606590596931e88ebd0b4626bfe97"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00398">398</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00454">454</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="aaf500e3a36c6e6a6920a8e18c6478a8e" name="aaf500e3a36c6e6a6920a8e18c6478a8e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf500e3a36c6e6a6920a8e18c6478a8e">◆ </a></span>end_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aaf500e3a36c6e6a6920a8e18c6478a8e">◆ </a></span>end_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -110,12 +117,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00400">400</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00456">456</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0e7ca3e0eebc5db360ae15f2dac3d622" name="a0e7ca3e0eebc5db360ae15f2dac3d622"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e7ca3e0eebc5db360ae15f2dac3d622">◆ </a></span>frame</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0e7ca3e0eebc5db360ae15f2dac3d622">◆ </a></span>frame</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -126,12 +133,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00402">402</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00458">458</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeecdbc3f86c3bcbf9c42ac7a867e91db" name="aeecdbc3f86c3bcbf9c42ac7a867e91db"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeecdbc3f86c3bcbf9c42ac7a867e91db">◆ </a></span>h</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeecdbc3f86c3bcbf9c42ac7a867e91db">◆ </a></span>h</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -142,12 +149,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00403">403</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00459">459</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a15e606590596931e88ebd0b4626bfe97" name="a15e606590596931e88ebd0b4626bfe97"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a15e606590596931e88ebd0b4626bfe97">◆ </a></span>initialize</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a15e606590596931e88ebd0b4626bfe97">◆ </a></span>initialize</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -160,12 +167,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>marks if sub2video_update should force an initialization </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00404">404</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00460">460</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a992c9fe5de3acf5dce388cffda4fdce8" name="a992c9fe5de3acf5dce388cffda4fdce8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a992c9fe5de3acf5dce388cffda4fdce8">◆ </a></span>last_pts</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a992c9fe5de3acf5dce388cffda4fdce8">◆ </a></span>last_pts</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -176,12 +183,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00399">399</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00455">455</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a509d9d1872ee8969a6769ce138da3fb2" name="a509d9d1872ee8969a6769ce138da3fb2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a509d9d1872ee8969a6769ce138da3fb2">◆ </a></span>sub_queue</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a509d9d1872ee8969a6769ce138da3fb2">◆ </a></span>sub_queue</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -194,12 +201,12 @@ Data Fields</h2></td></tr>
|
||||
|
||||
<p>queue of AVSubtitle* before filter init </p>
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00401">401</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00457">457</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a0bd83c4ad9f5301d63e49a9f94b8cf7d" name="a0bd83c4ad9f5301d63e49a9f94b8cf7d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bd83c4ad9f5301d63e49a9f94b8cf7d">◆ </a></span>w</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a0bd83c4ad9f5301d63e49a9f94b8cf7d">◆ </a></span>w</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -210,7 +217,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00403">403</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00459">459</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -220,7 +227,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: BenchmarkTimeStamps Struct Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,9 +56,16 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
@@ -80,10 +87,10 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||
<div class="textblock">
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00176">176</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00187">187</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
</div><h2 class="groupheader">Field Documentation</h2>
|
||||
<a id="a8639f0bbe9044fc765f4ec5b3968a488" name="a8639f0bbe9044fc765f4ec5b3968a488"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8639f0bbe9044fc765f4ec5b3968a488">◆ </a></span>real_usec</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8639f0bbe9044fc765f4ec5b3968a488">◆ </a></span>real_usec</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -94,12 +101,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00177">177</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00188">188</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a06a44cae9b837e8481ba86a648cbcc95" name="a06a44cae9b837e8481ba86a648cbcc95"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a06a44cae9b837e8481ba86a648cbcc95">◆ </a></span>sys_usec</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a06a44cae9b837e8481ba86a648cbcc95">◆ </a></span>sys_usec</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -110,12 +117,12 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00179">179</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00190">190</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad0f18c644b145f2ef6c7bd37c22d7cd6" name="ad0f18c644b145f2ef6c7bd37c22d7cd6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad0f18c644b145f2ef6c7bd37c22d7cd6">◆ </a></span>user_usec</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad0f18c644b145f2ef6c7bd37c22d7cd6">◆ </a></span>user_usec</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -126,7 +133,7 @@ Data Fields</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00178">178</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00189">189</a> of file <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html">fftools_ffmpeg.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -136,7 +143,7 @@ Data Fields</h2></td></tr>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.4"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_ffmpeg_mux.c File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
@@ -22,7 +22,7 @@
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 5.1</span>
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -30,10 +30,10 @@
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.4 -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search",'Search','.html');
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
@@ -56,15 +56,23 @@ $(function() {
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<iframe src="javascript:void(0)" frameborder="0"
|
||||
name="MSearchResults" id="MSearchResults">
|
||||
</iframe>
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<a href="#func-members">Functions</a> |
|
||||
<a href="#var-members">Variables</a> </div>
|
||||
<div class="headertitle"><div class="title">fftools_ffmpeg_mux.c File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
@@ -73,22 +81,61 @@ $(function() {
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:ac237321f98a7041c9f6004d2ce8a425c"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ac237321f98a7041c9f6004d2ce8a425c">close_all_output_streams</a> (<a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, <a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31">OSTFinished</a> this_stream, <a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31">OSTFinished</a> others)</td></tr>
|
||||
<tr class="separator:ac237321f98a7041c9f6004d2ce8a425c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aea0554f44067721a9066e82c8f5fc847"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aea0554f44067721a9066e82c8f5fc847">of_write_packet</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of, AVPacket *pkt, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> unqueue)</td></tr>
|
||||
<tr class="separator:aea0554f44067721a9066e82c8f5fc847"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae83a6b9dd35a60f10d79371fb8d1c469"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d6/d16/struct_mux_stream.html">MuxStream</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ae83a6b9dd35a60f10d79371fb8d1c469">ms_from_ost</a> (<a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost)</td></tr>
|
||||
<tr class="separator:ae83a6b9dd35a60f10d79371fb8d1c469"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a26dcef2b6f9acc114d07755777eb1974"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a26dcef2b6f9acc114d07755777eb1974">mux_from_of</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of)</td></tr>
|
||||
<tr class="separator:a26dcef2b6f9acc114d07755777eb1974"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a036baf3fb518cc0d7dcc1e91758141a8"><td class="memItemLeft" align="right" valign="top">static int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a036baf3fb518cc0d7dcc1e91758141a8">filesize</a> (AVIOContext *pb)</td></tr>
|
||||
<tr class="separator:a036baf3fb518cc0d7dcc1e91758141a8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afef236e146a038c9ca2e40297044238d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#afef236e146a038c9ca2e40297044238d">write_packet</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, AVPacket *pkt)</td></tr>
|
||||
<tr class="separator:afef236e146a038c9ca2e40297044238d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9485345078d3bad91b3fd12071e41f50"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a9485345078d3bad91b3fd12071e41f50">sync_queue_process</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, AVPacket *pkt, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> *stream_eof)</td></tr>
|
||||
<tr class="separator:a9485345078d3bad91b3fd12071e41f50"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a91f1e0862fd8c633a06819a942a71fe7"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a91f1e0862fd8c633a06819a942a71fe7">thread_set_name</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of)</td></tr>
|
||||
<tr class="separator:a91f1e0862fd8c633a06819a942a71fe7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aee717b0de03a034174434f2297ccad89"><td class="memItemLeft" align="right" valign="top">static void * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aee717b0de03a034174434f2297ccad89">muxer_thread</a> (void *arg)</td></tr>
|
||||
<tr class="separator:aee717b0de03a034174434f2297ccad89"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ad54b783ddce1362bc44dc91ff0ca9e7a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ad54b783ddce1362bc44dc91ff0ca9e7a">thread_submit_packet</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, AVPacket *pkt)</td></tr>
|
||||
<tr class="separator:ad54b783ddce1362bc44dc91ff0ca9e7a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab552a82e1c941a2555ce8fbae7881438"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ab552a82e1c941a2555ce8fbae7881438">queue_packet</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, AVPacket *pkt)</td></tr>
|
||||
<tr class="separator:ab552a82e1c941a2555ce8fbae7881438"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:afa883d20893269bd8d5ff3cc06060c1c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#afa883d20893269bd8d5ff3cc06060c1c">submit_packet</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux, AVPacket *pkt, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost)</td></tr>
|
||||
<tr class="separator:afa883d20893269bd8d5ff3cc06060c1c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a617ff0bc3d1f3d46ad57fd6c1957b6f8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a617ff0bc3d1f3d46ad57fd6c1957b6f8">of_output_packet</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of, AVPacket *pkt, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost, <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> eof)</td></tr>
|
||||
<tr class="separator:a617ff0bc3d1f3d46ad57fd6c1957b6f8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae477282b15330fa74ee96b8b3ba3a51b"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ae477282b15330fa74ee96b8b3ba3a51b">thread_stop</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux)</td></tr>
|
||||
<tr class="separator:ae477282b15330fa74ee96b8b3ba3a51b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae7015a1e34988b04946b1949fecd0ff8"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ae7015a1e34988b04946b1949fecd0ff8">pkt_move</a> (void *dst, void *src)</td></tr>
|
||||
<tr class="separator:ae7015a1e34988b04946b1949fecd0ff8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aebcb3bc88ffef930ca3e1fa159d7b4b6"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aebcb3bc88ffef930ca3e1fa159d7b4b6">thread_start</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux)</td></tr>
|
||||
<tr class="separator:aebcb3bc88ffef930ca3e1fa159d7b4b6"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ae7e4c98861cf63306a9211c4b056f757"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ae7e4c98861cf63306a9211c4b056f757">print_sdp</a> (void)</td></tr>
|
||||
<tr class="separator:ae7e4c98861cf63306a9211c4b056f757"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a6397eeb0856f5070264449b7a24c438a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a6397eeb0856f5070264449b7a24c438a">of_check_init</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of)</td></tr>
|
||||
<tr class="separator:a6397eeb0856f5070264449b7a24c438a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ab2d70d28711fd0ab3e019e2d1eafd938"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#ab2d70d28711fd0ab3e019e2d1eafd938">mux_check_init</a> (<a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> *mux)</td></tr>
|
||||
<tr class="separator:ab2d70d28711fd0ab3e019e2d1eafd938"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a163e7f4ab7e6ac7d75a43b8ec8a16a0c"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a163e7f4ab7e6ac7d75a43b8ec8a16a0c">bsf_init</a> (<a class="el" href="../../d6/d16/struct_mux_stream.html">MuxStream</a> *ms)</td></tr>
|
||||
<tr class="separator:a163e7f4ab7e6ac7d75a43b8ec8a16a0c"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aa2cad7aba1fe8d5eda6ad974e376480e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aa2cad7aba1fe8d5eda6ad974e376480e">of_stream_init</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of, <a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost)</td></tr>
|
||||
<tr class="separator:aa2cad7aba1fe8d5eda6ad974e376480e"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a8ee6bbffc4d71793d225e162b4e05600"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a8ee6bbffc4d71793d225e162b4e05600">of_write_trailer</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of)</td></tr>
|
||||
<tr class="separator:a8ee6bbffc4d71793d225e162b4e05600"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:aeae3687ef95ce442e5cf4a13acf8b61a"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aeae3687ef95ce442e5cf4a13acf8b61a">ost_free</a> (<a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> **post)</td></tr>
|
||||
<tr class="separator:aeae3687ef95ce442e5cf4a13acf8b61a"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a06a623c7c169b8a8c835e20e1cd9c41b"><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a06a623c7c169b8a8c835e20e1cd9c41b">fc_close</a> (AVFormatContext **pfc)</td></tr>
|
||||
<tr class="separator:a06a623c7c169b8a8c835e20e1cd9c41b"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a148f8b518ba854ce09c277c7acdc2cb7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a148f8b518ba854ce09c277c7acdc2cb7">of_close</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> **pof)</td></tr>
|
||||
<tr class="separator:a148f8b518ba854ce09c277c7acdc2cb7"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a164526686b908ef10824442ec35cf9dc"><td class="memItemLeft" align="right" valign="top">int64_t </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#a164526686b908ef10824442ec35cf9dc">of_filesize</a> (<a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> *of)</td></tr>
|
||||
<tr class="separator:a164526686b908ef10824442ec35cf9dc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
|
||||
Variables</h2></td></tr>
|
||||
<tr class="memitem:aee22300aab0a785e62da0d08de0c20d2"><td class="memItemLeft" align="right" valign="top">__thread <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c.html#aee22300aab0a785e62da0d08de0c20d2">want_sdp</a> = 1</td></tr>
|
||||
<tr class="separator:aee22300aab0a785e62da0d08de0c20d2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="ac237321f98a7041c9f6004d2ce8a425c" name="ac237321f98a7041c9f6004d2ce8a425c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac237321f98a7041c9f6004d2ce8a425c">◆ </a></span>close_all_output_streams()</h2>
|
||||
<a id="a163e7f4ab7e6ac7d75a43b8ec8a16a0c" name="a163e7f4ab7e6ac7d75a43b8ec8a16a0c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a163e7f4ab7e6ac7d75a43b8ec8a16a0c">◆ </a></span>bsf_init()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -97,27 +144,11 @@ Functions</h2></td></tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void close_all_output_streams </td>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> bsf_init </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td class="paramtype"><a class="el" href="../../d6/d16/struct_mux_stream.html">MuxStream</a> * </td>
|
||||
<td class="paramname"><em>ms</em></td><td>)</td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31">OSTFinished</a> </td>
|
||||
<td class="paramname"><em>this_stream</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d7/db3/fftools__ffmpeg_8h.html#a54e97364f74d8bf15062a8ea185f1c31">OSTFinished</a> </td>
|
||||
<td class="paramname"><em>others</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
@@ -127,32 +158,164 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00049">49</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00583">583</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a6397eeb0856f5070264449b7a24c438a" name="a6397eeb0856f5070264449b7a24c438a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a6397eeb0856f5070264449b7a24c438a">◆ </a></span>of_check_init()</h2>
|
||||
<a id="a06a623c7c169b8a8c835e20e1cd9c41b" name="a06a623c7c169b8a8c835e20e1cd9c41b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a06a623c7c169b8a8c835e20e1cd9c41b">◆ </a></span>fc_close()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void fc_close </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVFormatContext ** </td>
|
||||
<td class="paramname"><em>pfc</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00736">736</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a036baf3fb518cc0d7dcc1e91758141a8" name="a036baf3fb518cc0d7dcc1e91758141a8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a036baf3fb518cc0d7dcc1e91758141a8">◆ </a></span>filesize()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static int64_t filesize </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">AVIOContext * </td>
|
||||
<td class="paramname"><em>pb</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00078">78</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae83a6b9dd35a60f10d79371fb8d1c469" name="ae83a6b9dd35a60f10d79371fb8d1c469"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae83a6b9dd35a60f10d79371fb8d1c469">◆ </a></span>ms_from_ost()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> of_check_init </td>
|
||||
<td class="memname"><a class="el" href="../../d6/d16/struct_mux_stream.html">MuxStream</a> * ms_from_ost </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00068">68</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab2d70d28711fd0ab3e019e2d1eafd938" name="ab2d70d28711fd0ab3e019e2d1eafd938"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab2d70d28711fd0ab3e019e2d1eafd938">◆ </a></span>mux_check_init()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> mux_check_init </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00536">536</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a26dcef2b6f9acc114d07755777eb1974" name="a26dcef2b6f9acc114d07755777eb1974"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a26dcef2b6f9acc114d07755777eb1974">◆ </a></span>mux_from_of()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * mux_from_of </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> * </td>
|
||||
<td class="paramname"><em>of</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00244">244</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00073">73</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aee717b0de03a034174434f2297ccad89" name="aee717b0de03a034174434f2297ccad89"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee717b0de03a034174434f2297ccad89">◆ </a></span>muxer_thread()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void * muxer_thread </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">void * </td>
|
||||
<td class="paramname"><em>arg</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00228">228</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a148f8b518ba854ce09c277c7acdc2cb7" name="a148f8b518ba854ce09c277c7acdc2cb7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a148f8b518ba854ce09c277c7acdc2cb7">◆ </a></span>of_close()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a148f8b518ba854ce09c277c7acdc2cb7">◆ </a></span>of_close()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -167,18 +330,38 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00316">316</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00750">750</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aea0554f44067721a9066e82c8f5fc847" name="aea0554f44067721a9066e82c8f5fc847"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aea0554f44067721a9066e82c8f5fc847">◆ </a></span>of_write_packet()</h2>
|
||||
<a id="a164526686b908ef10824442ec35cf9dc" name="a164526686b908ef10824442ec35cf9dc"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a164526686b908ef10824442ec35cf9dc">◆ </a></span>of_filesize()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void of_write_packet </td>
|
||||
<td class="memname">int64_t of_filesize </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> * </td>
|
||||
<td class="paramname"><em>of</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00777">777</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a617ff0bc3d1f3d46ad57fd6c1957b6f8" name="a617ff0bc3d1f3d46ad57fd6c1957b6f8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a617ff0bc3d1f3d46ad57fd6c1957b6f8">◆ </a></span>of_output_packet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void of_output_packet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> * </td>
|
||||
<td class="paramname"><em>of</em>, </td>
|
||||
@@ -199,7 +382,7 @@ Functions</h2></td></tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td>
|
||||
<td class="paramname"><em>unqueue</em> </td>
|
||||
<td class="paramname"><em>eof</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
@@ -209,12 +392,42 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00058">58</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00359">359</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aa2cad7aba1fe8d5eda6ad974e376480e" name="aa2cad7aba1fe8d5eda6ad974e376480e"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aa2cad7aba1fe8d5eda6ad974e376480e">◆ </a></span>of_stream_init()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> of_stream_init </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> * </td>
|
||||
<td class="paramname"><em>of</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00613">613</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a8ee6bbffc4d71793d225e162b4e05600" name="a8ee6bbffc4d71793d225e162b4e05600"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8ee6bbffc4d71793d225e162b4e05600">◆ </a></span>of_write_trailer()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a8ee6bbffc4d71793d225e162b4e05600">◆ </a></span>of_write_trailer()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -229,12 +442,78 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00295">295</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00634">634</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aeae3687ef95ce442e5cf4a13acf8b61a" name="aeae3687ef95ce442e5cf4a13acf8b61a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aeae3687ef95ce442e5cf4a13acf8b61a">◆ </a></span>ost_free()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void ost_free </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> ** </td>
|
||||
<td class="paramname"><em>post</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00670">670</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae7015a1e34988b04946b1949fecd0ff8" name="ae7015a1e34988b04946b1949fecd0ff8"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae7015a1e34988b04946b1949fecd0ff8">◆ </a></span>pkt_move()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void pkt_move </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">void * </td>
|
||||
<td class="paramname"><em>dst</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">void * </td>
|
||||
<td class="paramname"><em>src</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00429">429</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae7e4c98861cf63306a9211c4b056f757" name="ae7e4c98861cf63306a9211c4b056f757"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae7e4c98861cf63306a9211c4b056f757">◆ </a></span>print_sdp()</h2>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae7e4c98861cf63306a9211c4b056f757">◆ </a></span>print_sdp()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
@@ -257,14 +536,341 @@ Functions</h2></td></tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00190">190</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00480">480</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ab552a82e1c941a2555ce8fbae7881438" name="ab552a82e1c941a2555ce8fbae7881438"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ab552a82e1c941a2555ce8fbae7881438">◆ </a></span>queue_packet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> queue_packet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVPacket * </td>
|
||||
<td class="paramname"><em>pkt</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00298">298</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afa883d20893269bd8d5ff3cc06060c1c" name="afa883d20893269bd8d5ff3cc06060c1c"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afa883d20893269bd8d5ff3cc06060c1c">◆ </a></span>submit_packet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> submit_packet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVPacket * </td>
|
||||
<td class="paramname"><em>pkt</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00340">340</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9485345078d3bad91b3fd12071e41f50" name="a9485345078d3bad91b3fd12071e41f50"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9485345078d3bad91b3fd12071e41f50">◆ </a></span>sync_queue_process()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> sync_queue_process </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVPacket * </td>
|
||||
<td class="paramname"><em>pkt</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> * </td>
|
||||
<td class="paramname"><em>stream_eof</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00192">192</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a91f1e0862fd8c633a06819a942a71fe7" name="a91f1e0862fd8c633a06819a942a71fe7"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a91f1e0862fd8c633a06819a942a71fe7">◆ </a></span>thread_set_name()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static void thread_set_name </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/df2/struct_output_file.html">OutputFile</a> * </td>
|
||||
<td class="paramname"><em>of</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00221">221</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="aebcb3bc88ffef930ca3e1fa159d7b4b6" name="aebcb3bc88ffef930ca3e1fa159d7b4b6"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aebcb3bc88ffef930ca3e1fa159d7b4b6">◆ </a></span>thread_start()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> thread_start </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00434">434</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ae477282b15330fa74ee96b8b3ba3a51b" name="ae477282b15330fa74ee96b8b3ba3a51b"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ae477282b15330fa74ee96b8b3ba3a51b">◆ </a></span>thread_stop()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> thread_stop </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00412">412</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ad54b783ddce1362bc44dc91ff0ca9e7a" name="ad54b783ddce1362bc44dc91ff0ca9e7a"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ad54b783ddce1362bc44dc91ff0ca9e7a">◆ </a></span>thread_submit_packet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> thread_submit_packet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVPacket * </td>
|
||||
<td class="paramname"><em>pkt</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00276">276</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="afef236e146a038c9ca2e40297044238d" name="afef236e146a038c9ca2e40297044238d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#afef236e146a038c9ca2e40297044238d">◆ </a></span>write_packet()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="mlabels">
|
||||
<tr>
|
||||
<td class="mlabels-left">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> write_packet </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../de/d29/struct_muxer.html">Muxer</a> * </td>
|
||||
<td class="paramname"><em>mux</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> * </td>
|
||||
<td class="paramname"><em>ost</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">AVPacket * </td>
|
||||
<td class="paramname"><em>pkt</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td class="mlabels-right">
|
||||
<span class="mlabels"><span class="mlabel">static</span></span> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00091">91</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Variable Documentation</h2>
|
||||
<a id="aee22300aab0a785e62da0d08de0c20d2" name="aee22300aab0a785e62da0d08de0c20d2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#aee22300aab0a785e62da0d08de0c20d2">◆ </a></span>want_sdp</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">__thread <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> want_sdp = 1</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html#l00066">66</a> of file <a class="el" href="../../d5/d94/fftools__ffmpeg__mux_8c_source.html">fftools_ffmpeg_mux.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Sat Sep 17 2022 18:38:10 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.4
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,336 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||||
<meta name="generator" content="Doxygen 1.9.7"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
<title>FFmpegKit Android API: fftools_objpool.h File Reference</title>
|
||||
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../jquery.js"></script>
|
||||
<script type="text/javascript" src="../../dynsections.js"></script>
|
||||
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
|
||||
<script type="text/javascript" src="../../search/searchdata.js"></script>
|
||||
<script type="text/javascript" src="../../search/search.js"></script>
|
||||
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
<div id="titlearea">
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tbody>
|
||||
<tr id="projectrow">
|
||||
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
|
||||
<td id="projectalign">
|
||||
<div id="projectname">FFmpegKit Android API<span id="projectnumber"> 6.0</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- end header part -->
|
||||
<!-- Generated by Doxygen 1.9.7 -->
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
|
||||
/* @license-end */
|
||||
</script>
|
||||
<script type="text/javascript" src="../../menudata.js"></script>
|
||||
<script type="text/javascript" src="../../menu.js"></script>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
||||
$(function() {
|
||||
initMenu('../../',true,false,'search.php','Search');
|
||||
$(document).ready(function() { init_search(); });
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div id="main-nav"></div>
|
||||
<!-- window showing the filter options -->
|
||||
<div id="MSearchSelectWindow"
|
||||
onmouseover="return searchBox.OnSearchSelectShow()"
|
||||
onmouseout="return searchBox.OnSearchSelectHide()"
|
||||
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
||||
</div>
|
||||
|
||||
<!-- iframe showing the search results (closed by default) -->
|
||||
<div id="MSearchResultsWindow">
|
||||
<div id="MSearchResults">
|
||||
<div class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div id="SRResults"></div>
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- top -->
|
||||
<div class="header">
|
||||
<div class="summary">
|
||||
<a href="#typedef-members">Typedefs</a> |
|
||||
<a href="#func-members">Functions</a> </div>
|
||||
<div class="headertitle"><div class="title">fftools_objpool.h File Reference</div></div>
|
||||
</div><!--header-->
|
||||
<div class="contents">
|
||||
|
||||
<p><a href="../../d5/df5/fftools__objpool_8h_source.html">Go to the source code of this file.</a></p>
|
||||
<table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
|
||||
Typedefs</h2></td></tr>
|
||||
<tr class="memitem:a48b7ab21b9b6f7e73ed6990850e47e44"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a48b7ab21b9b6f7e73ed6990850e47e44">ObjPool</a></td></tr>
|
||||
<tr class="separator:a48b7ab21b9b6f7e73ed6990850e47e44"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a278e923ca4660a44531c958fb7444b55"><td class="memItemLeft" align="right" valign="top">typedef void *(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a278e923ca4660a44531c958fb7444b55">ObjPoolCBAlloc</a>) (void)</td></tr>
|
||||
<tr class="separator:a278e923ca4660a44531c958fb7444b55"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a9cd63c894cb5bdb83c8f98a944f73f87"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a9cd63c894cb5bdb83c8f98a944f73f87">ObjPoolCBReset</a>) (void *)</td></tr>
|
||||
<tr class="separator:a9cd63c894cb5bdb83c8f98a944f73f87"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5c2ce6b4dfa9698db080e2577aee2759"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a5c2ce6b4dfa9698db080e2577aee2759">ObjPoolCBFree</a>) (void **)</td></tr>
|
||||
<tr class="separator:a5c2ce6b4dfa9698db080e2577aee2759"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table><table class="memberdecls">
|
||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
|
||||
Functions</h2></td></tr>
|
||||
<tr class="memitem:a2d9a257952612a05253244ac621d45d1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a2d9a257952612a05253244ac621d45d1">objpool_free</a> (<a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> **op)</td></tr>
|
||||
<tr class="separator:a2d9a257952612a05253244ac621d45d1"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a73689af606aa1531df7509200bd86bda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a73689af606aa1531df7509200bd86bda">objpool_alloc</a> (<a class="el" href="../../d5/df5/fftools__objpool_8h.html#a278e923ca4660a44531c958fb7444b55">ObjPoolCBAlloc</a> cb_alloc, <a class="el" href="../../d5/df5/fftools__objpool_8h.html#a9cd63c894cb5bdb83c8f98a944f73f87">ObjPoolCBReset</a> cb_reset, <a class="el" href="../../d5/df5/fftools__objpool_8h.html#a5c2ce6b4dfa9698db080e2577aee2759">ObjPoolCBFree</a> cb_free)</td></tr>
|
||||
<tr class="separator:a73689af606aa1531df7509200bd86bda"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a11bd14295b9fa65567206b9848f54234"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a11bd14295b9fa65567206b9848f54234">objpool_alloc_packets</a> (void)</td></tr>
|
||||
<tr class="separator:a11bd14295b9fa65567206b9848f54234"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a3d2cc90dad36a8b49533bbc1f30b0c3d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a3d2cc90dad36a8b49533bbc1f30b0c3d">objpool_alloc_frames</a> (void)</td></tr>
|
||||
<tr class="separator:a3d2cc90dad36a8b49533bbc1f30b0c3d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:ac1d7df6827c7b36c79c17a660a96c7f2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#ac1d7df6827c7b36c79c17a660a96c7f2">objpool_get</a> (<a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> *op, void **obj)</td></tr>
|
||||
<tr class="separator:ac1d7df6827c7b36c79c17a660a96c7f2"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4da002d4bc3bf48ba22633a96d20bb88"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a4da002d4bc3bf48ba22633a96d20bb88">objpool_release</a> (<a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> *op, void **obj)</td></tr>
|
||||
<tr class="separator:a4da002d4bc3bf48ba22633a96d20bb88"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Typedef Documentation</h2>
|
||||
<a id="a48b7ab21b9b6f7e73ed6990850e47e44" name="a48b7ab21b9b6f7e73ed6990850e47e44"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a48b7ab21b9b6f7e73ed6990850e47e44">◆ </a></span>ObjPool</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">typedef struct <a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> <a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html#l00035">35</a> of file <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html">fftools_objpool.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a278e923ca4660a44531c958fb7444b55" name="a278e923ca4660a44531c958fb7444b55"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a278e923ca4660a44531c958fb7444b55">◆ </a></span>ObjPoolCBAlloc</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">typedef void *(* ObjPoolCBAlloc) (void)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html#l00037">37</a> of file <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html">fftools_objpool.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a5c2ce6b4dfa9698db080e2577aee2759" name="a5c2ce6b4dfa9698db080e2577aee2759"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5c2ce6b4dfa9698db080e2577aee2759">◆ </a></span>ObjPoolCBFree</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">typedef void(* ObjPoolCBFree) (void **)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html#l00039">39</a> of file <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html">fftools_objpool.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a9cd63c894cb5bdb83c8f98a944f73f87" name="a9cd63c894cb5bdb83c8f98a944f73f87"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a9cd63c894cb5bdb83c8f98a944f73f87">◆ </a></span>ObjPoolCBReset</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">typedef void(* ObjPoolCBReset) (void *)</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html#l00038">38</a> of file <a class="el" href="../../d5/df5/fftools__objpool_8h_source.html">fftools_objpool.h</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="groupheader">Function Documentation</h2>
|
||||
<a id="a73689af606aa1531df7509200bd86bda" name="a73689af606aa1531df7509200bd86bda"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a73689af606aa1531df7509200bd86bda">◆ </a></span>objpool_alloc()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * objpool_alloc </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a278e923ca4660a44531c958fb7444b55">ObjPoolCBAlloc</a> </td>
|
||||
<td class="paramname"><em>cb_alloc</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a9cd63c894cb5bdb83c8f98a944f73f87">ObjPoolCBReset</a> </td>
|
||||
<td class="paramname"><em>cb_reset</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype"><a class="el" href="../../d5/df5/fftools__objpool_8h.html#a5c2ce6b4dfa9698db080e2577aee2759">ObjPoolCBFree</a> </td>
|
||||
<td class="paramname"><em>cb_free</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00053">53</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a3d2cc90dad36a8b49533bbc1f30b0c3d" name="a3d2cc90dad36a8b49533bbc1f30b0c3d"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a3d2cc90dad36a8b49533bbc1f30b0c3d">◆ </a></span>objpool_alloc_frames()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * objpool_alloc_frames </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">void </td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00142">142</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a11bd14295b9fa65567206b9848f54234" name="a11bd14295b9fa65567206b9848f54234"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a11bd14295b9fa65567206b9848f54234">◆ </a></span>objpool_alloc_packets()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * objpool_alloc_packets </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">void </td>
|
||||
<td class="paramname"></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00138">138</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a2d9a257952612a05253244ac621d45d1" name="a2d9a257952612a05253244ac621d45d1"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a2d9a257952612a05253244ac621d45d1">◆ </a></span>objpool_free()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void objpool_free </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> ** </td>
|
||||
<td class="paramname"><em>op</em></td><td>)</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00068">68</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="ac1d7df6827c7b36c79c17a660a96c7f2" name="ac1d7df6827c7b36c79c17a660a96c7f2"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#ac1d7df6827c7b36c79c17a660a96c7f2">◆ </a></span>objpool_get()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> objpool_get </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * </td>
|
||||
<td class="paramname"><em>op</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">void ** </td>
|
||||
<td class="paramname"><em>obj</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00081">81</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a id="a4da002d4bc3bf48ba22633a96d20bb88" name="a4da002d4bc3bf48ba22633a96d20bb88"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a4da002d4bc3bf48ba22633a96d20bb88">◆ </a></span>objpool_release()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void objpool_release </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype"><a class="el" href="../../d4/d62/struct_obj_pool.html">ObjPool</a> * </td>
|
||||
<td class="paramname"><em>op</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">void ** </td>
|
||||
<td class="paramname"><em>obj</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p class="definition">Definition at line <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html#l00092">92</a> of file <a class="el" href="../../d7/dd8/fftools__objpool_8c_source.html">fftools_objpool.c</a>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Generated on Tue Aug 22 2023 01:26:55 for FFmpegKit Android API by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7
|
||||
</small></address>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user