Merge pull request #161 from tanersener/development

merge v4.5 to main
pull/169/head
Taner Şener 4 years ago committed by GitHub
commit 5d11e79fc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      .github/ISSUE_TEMPLATE/bug_report.md
  2. 121
      .github/workflows/android-build-scripts.yml
  3. 47
      .github/workflows/ios-build-scripts.yml
  4. 47
      .github/workflows/macos-build-scripts.yml
  5. 30
      .github/workflows/stale.yml
  6. 47
      .github/workflows/tvos-build-scripts.yml
  7. 44
      README.md
  8. 47
      android.sh
  9. 21
      android/README.md
  10. 2
      android/build.gradle
  11. 2
      android/ffmpeg-kit-android-lib/Doxyfile
  12. 9
      android/ffmpeg-kit-android-lib/build.gradle
  13. 24
      android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.c
  14. 2
      android/ffmpeg-kit-android-lib/src/main/cpp/ffmpegkit.h
  15. 12
      android/ffmpeg-kit-android-lib/src/main/cpp/ffprobekit.c
  16. 85
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_cmdutils.c
  17. 11
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_cmdutils.h
  18. 428
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.c
  19. 18
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg.h
  20. 169
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg_filter.c
  21. 12
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg_hw.c
  22. 144
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffmpeg_opt.c
  23. 181
      android/ffmpeg-kit-android-lib/src/main/cpp/fftools_ffprobe.c
  24. 139
      android/ffmpeg-kit-android-lib/src/main/cpp/saf_wrapper.c
  25. 46
      android/ffmpeg-kit-android-lib/src/main/cpp/saf_wrapper.h
  26. 4
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/AbstractSession.java
  27. 90
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKit.java
  28. 139
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegKitConfig.java
  29. 4
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFmpegSession.java
  30. 14
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeKit.java
  31. 2
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/FFprobeSession.java
  32. 2
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/MediaInformationSession.java
  33. 8
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/NativeLoader.java
  34. 2
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/Packages.java
  35. 4
      android/ffmpeg-kit-android-lib/src/main/java/com/arthenica/ffmpegkit/StreamInformation.java
  36. 1
      android/ffmpeg-kit-android-lib/src/main/res/raw/.gitignore
  37. 17
      android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitConfigTest.java
  38. 20
      android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegKitTest.java
  39. 4
      android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFmpegSessionTest.java
  40. 4
      android/ffmpeg-kit-android-lib/src/test/java/com/arthenica/ffmpegkit/FFprobeSessionTest.java
  41. 2
      android/jni/Android.mk
  42. 2
      apple/Doxyfile
  43. 8
      apple/README.md
  44. 6
      apple/src/AbstractSession.m
  45. 17
      apple/src/FFmpegKit.h
  46. 78
      apple/src/FFmpegKit.m
  47. 23
      apple/src/FFmpegKitConfig.h
  48. 167
      apple/src/FFmpegKitConfig.m
  49. 2
      apple/src/FFmpegSession.m
  50. 12
      apple/src/FFprobeKit.m
  51. 4
      apple/src/StreamInformation.h
  52. 2
      apple/src/StreamInformation.m
  53. 85
      apple/src/fftools_cmdutils.c
  54. 9
      apple/src/fftools_cmdutils.h
  55. 424
      apple/src/fftools_ffmpeg.c
  56. 18
      apple/src/fftools_ffmpeg.h
  57. 163
      apple/src/fftools_ffmpeg_filter.c
  58. 12
      apple/src/fftools_ffmpeg_hw.c
  59. 128
      apple/src/fftools_ffmpeg_opt.c
  60. 10
      apple/src/fftools_ffmpeg_videotoolbox.c
  61. 181
      apple/src/fftools_ffprobe.c
  62. 23
      docs/android/doc/html/annotated.html
  63. 53
      docs/android/doc/html/classes.html
  64. 73
      docs/android/doc/html/d0/d07/ffmpegkit__abidetect_8h.html
  65. 149
      docs/android/doc/html/d0/d07/ffmpegkit__abidetect_8h_source.html
  66. 89
      docs/android/doc/html/d0/d0f/struct_output_filter.html
  67. 97
      docs/android/doc/html/d1/da2/struct_writer_context.html
  68. 109
      docs/android/doc/html/d1/dba/fftools__ffmpeg__hw_8c.html
  69. 1209
      docs/android/doc/html/d1/dba/fftools__ffmpeg__hw_8c_source.html
  70. 93
      docs/android/doc/html/d1/ddd/ffprobekit_8c.html
  71. 223
      docs/android/doc/html/d1/ddd/ffprobekit_8c_source.html
  72. 647
      docs/android/doc/html/d2/d36/fftools__ffmpeg__filter_8c.html
  73. 2648
      docs/android/doc/html/d2/d36/fftools__ffmpeg__filter_8c_source.html
  74. 29
      docs/android/doc/html/d2/dbf/ffprobekit_8h.html
  75. 87
      docs/android/doc/html/d2/dbf/ffprobekit_8h_source.html
  76. 77
      docs/android/doc/html/d2/dc3/struct_callback_data.html
  77. 75
      docs/android/doc/html/d2/ddd/struct_compact_context.html
  78. 43
      docs/android/doc/html/d3/d1d/struct_option.html
  79. 292
      docs/android/doc/html/d3/d6e/struct_input_stream.html
  80. 29
      docs/android/doc/html/d3/dad/ffmpegkit__exception_8h.html
  81. 79
      docs/android/doc/html/d3/dad/ffmpegkit__exception_8h_source.html
  82. 43
      docs/android/doc/html/d3/db7/struct_flat_context.html
  83. 43
      docs/android/doc/html/d4/da0/struct_default_context.html
  84. 57
      docs/android/doc/html/d4/dfd/struct_input_stream_1_1sub2video.html
  85. 31
      docs/android/doc/html/d5/d8e/struct_benchmark_time_stamps.html
  86. 37
      docs/android/doc/html/d6/d2c/struct_audio_channel_map.html
  87. 47
      docs/android/doc/html/d6/d53/struct_j_s_o_n_context.html
  88. 65
      docs/android/doc/html/d6/d69/struct_option_group.html
  89. 71
      docs/android/doc/html/d6/dff/struct_writer.html
  90. 89
      docs/android/doc/html/d7/d0c/struct_input_filter.html
  91. 835
      docs/android/doc/html/d7/d48/fftools__ffmpeg_8c.html
  92. 12241
      docs/android/doc/html/d7/d48/fftools__ffmpeg_8c_source.html
  93. 43
      docs/android/doc/html/d7/d4f/struct_option_group_list.html
  94. 47
      docs/android/doc/html/d7/db2/struct_x_m_l_context.html
  95. 804
      docs/android/doc/html/d7/db3/fftools__ffmpeg_8h.html
  96. 2508
      docs/android/doc/html/d7/db3/fftools__ffmpeg_8h_source.html
  97. 707
      docs/android/doc/html/d7/dcc/fftools__cmdutils_8c.html
  98. 5201
      docs/android/doc/html/d7/dcc/fftools__cmdutils_8c_source.html
  99. 602
      docs/android/doc/html/d8/d4e/fftools__cmdutils_8h.html
  100. 851
      docs/android/doc/html/d8/d4e/fftools__cmdutils_8h_source.html
  101. Some files were not shown because too many files have changed in this diff Show More

@ -19,9 +19,6 @@ What happened.
**To Reproduce**
Steps to reproduce the behaviour.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.

@ -0,0 +1,121 @@
name: android build scripts
on: [ push, pull_request ]
jobs:
build-main-on-linux:
name: android main on linux
runs-on: ubuntu-20.04
strategy:
matrix:
ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23-linux' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: set up adopt jdk 8
uses: actions/setup-java@v2.2.0
with:
distribution: 'adopt'
java-version: '8'
- name: set up android ndk
run: |
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script
run: ./android.sh -d --enable-android-media-codec --enable-android-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-linux:
name: android lts on linux
runs-on: ubuntu-20.04
strategy:
matrix:
ndk-version: [ 'r21e-linux-x86_64', 'r22b-linux-x86_64', 'r23-linux' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: set up adopt jdk 8
uses: actions/setup-java@v2.2.0
with:
distribution: 'adopt'
java-version: '8'
- name: set up android ndk
run: |
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script
run: ./android.sh -d --lts --enable-android-media-codec --enable-android-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-main-on-macos:
name: android main on macos
runs-on: macos-10.15
strategy:
matrix:
ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23-darwin' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: set up adopt jdk 8
uses: actions/setup-java@v2.2.0
with:
distribution: 'adopt'
java-version: '8'
- name: set up android ndk
run: |
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script
run: ./android.sh -d --enable-android-media-codec --enable-android-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos:
name: android lts on macos
runs-on: macos-10.15
strategy:
matrix:
ndk-version: [ 'r21e-darwin-x86_64', 'r22b-darwin-x86_64', 'r23-darwin' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- name: set up adopt jdk 8
uses: actions/setup-java@v2.2.0
with:
distribution: 'adopt'
java-version: '8'
- name: set up android ndk
run: |
curl -s "https://dl.google.com/android/repository/android-ndk-${{ matrix.ndk-version }}.zip" -o ndk.zip
unzip -q -o ndk.zip -d .ndk
echo "ANDROID_NDK_ROOT=$PWD/.ndk/$(ls .ndk)" >> $GITHUB_ENV
- name: run the build script
run: ./android.sh -d --lts --enable-android-media-codec --enable-android-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'

@ -0,0 +1,47 @@
name: ios build scripts
on: [ push, pull_request ]
jobs:
build-main-on-macos:
name: ios main
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '11.7', '12.4' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./ios.sh --xcframework --enable-ios-audiotoolbox --enable-ios-avfoundation --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-videotoolbox --enable-ios-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos:
name: ios lts
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '10.3', '11.7' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./ios.sh --lts --enable-ios-audiotoolbox --enable-ios-bzip2 --enable-ios-libiconv --enable-ios-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'

@ -0,0 +1,47 @@
name: macos build scripts
on: [ push, pull_request ]
jobs:
build-main-on-macos:
name: macos main
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '11.7', '12.4' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./macos.sh --xcframework --enable-macos-audiotoolbox --enable-macos-avfoundation --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos:
name: macos lts
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '10.3', '11.7' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./macos.sh --lts --enable-macos-audiotoolbox --enable-macos-bzip2 --enable-macos-coreimage --enable-macos-libiconv --enable-macos-opencl --enable-macos-opengl --enable-macos-videotoolbox --enable-macos-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'

@ -1,22 +1,24 @@
name: Mark stale issues and pull requests
name: mark stale issues and pull requests
on:
schedule:
- cron: "0 0 * * *"
- cron: "0 0 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
exempt-issue-labels: 'enhancement'
exempt-pr-labels: 'enhancement'
exempt-all-assignees: ''
- uses: actions/stale@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
exempt-issue-labels: 'enhancement'
exempt-pr-labels: 'enhancement'
exempt-all-assignees: 'true'
permissions:
issues: write
pull-requests: write

@ -0,0 +1,47 @@
name: tvos build scripts
on: [ push, pull_request ]
jobs:
build-main-on-macos:
name: tvos main
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '11.7', '12.4' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./tvos.sh --xcframework --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-videotoolbox --enable-tvos-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'
build-lts-on-macos:
name: tvos lts
runs-on: macos-10.15
strategy:
matrix:
xcode: [ '10.3', '11.7' ]
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v2
- 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
run: ./tvos.sh --lts --enable-tvos-bzip2 --enable-tvos-audiotoolbox --enable-tvos-libiconv --enable-tvos-zlib
- name: print build logs
if: ${{ always() }}
run: cat build.log
- name: print ffbuild logs
if: ${{ failure() }}
run: '[[ -f ./src/ffmpeg/ffbuild/config.log ]] && tail -50 ./src/ffmpeg/ffbuild/config.log'

@ -1,4 +1,4 @@
# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.4.LTS-blue.svg) ![Maven Central](https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min) ![CocoaPods](https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min) [![Build Status](https://travis-ci.org/tanersener/ffmpeg-kit.svg?branch=master)](https://travis-ci.org/tanersener/ffmpeg-kit)
# FFmpegKit ![GitHub release](https://img.shields.io/badge/release-v4.5-blue.svg) ![Maven Central](https://img.shields.io/maven-central/v/com.arthenica/ffmpeg-kit-min) ![CocoaPods](https://img.shields.io/cocoapods/v/ffmpeg-kit-ios-min)
FFmpeg Kit for applications.
@ -8,7 +8,7 @@ FFmpeg Kit for applications.
- Scripts to build FFmpeg libraries
- `FFmpegKit` wrapper library to run `FFmpeg`/`FFprobe` commands in applications
- Supports Android, iOS, macOS and tvOS
- Based on FFmpeg `v4.4-dev` with optional system and external libraries
- Based on FFmpeg `v4.5-dev` with optional system and external libraries
- 8 prebuilt binary packages available at [Github](https://github.com/tanersener/ffmpeg-kit/releases), [Maven Central](https://search.maven.org) and [CocoaPods](https://cocoapods.org).
- Licensed under `LGPL 3.0`, or `GPL v3.0` if GPL licensed libraries are enabled
@ -93,16 +93,20 @@ include them.
</tbody>
</table>
- `AVFoundation` is not available on `tvOS`, `VideoToolbox` is not available on `tvOS` LTS releases
- `AVFoundation` is not available on `tvOS`
- `VideoToolbox` is not available on LTS releases of `iOS` and `tvOS`
### 7. Versions
`FFmpegKit` binaries generated use the same major and minor version numbers as the upstream `FFmpeg` project. The exact
version number is obtained using `git describe --tags`. `dev` part in `FFmpeg` version number indicates that `FFmpeg`
source is cloned from the `FFmpeg` `master` branch.
`FFmpegKit` binaries generated use the same major and minor version numbers as the upstream `FFmpeg` project.
The exact version number of `FFmpeg` is obtained using `git describe --tags`. `dev` part in the version string
indicates that `FFmpeg` source code is cloned from the `FFmpeg` `master` branch.
| FFmpegKit Version | FFmpeg Version | Release Date |
| :----: | :----: |:----: |
| [4.5](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5) | 4.5-dev-2008 | Sep 18, 2021 |
| [4.5.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.5.LTS) | 4.5-dev-2008 | Sep 18, 2021 |
| [4.4](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4) | 4.4-dev-3015 | Mar 03, 2021 |
| [4.4.LTS](https://github.com/tanersener/ffmpeg-kit/releases/tag/v4.4.LTS) | 4.4-dev-3015 | Mar 03, 2021 |
@ -121,30 +125,38 @@ This table shows the differences between two variants.
| Android API Level | 24 | 16 |
| Android Camera Access | Yes | - |
| Android Architectures | arm-v7a-neon<br/>arm64-v8a<br/>x86<br/>x86-64 | arm-v7a<br/>arm-v7a-neon<br/>arm64-v8a<br/>x86<br/>x86-64 |
| Xcode Compatibility | 11.0 or later | 7.3.1 or later |
| iOS SDK | 12.1 | 9.3 |
| iOS Min SDK | 12.1 | 9.3 |
| iOS VideoToolbox | Yes | - |
| iOS AVFoundation | Yes | - |
| iOS Architectures | arm64<br/>arm64-simulator<br/>arm64-mac-catalyst<br/>x86-64<br/>x86-64-mac-catalyst | armv7<br/>arm64<br/>i386<br/>x86-64 |
| macOS SDK | 10.15 | 10.11 |
| iOS Bundle Format | XCFrameworks | Frameworks |
| macOS Min SDK | 10.15 | 10.11 |
| macOS AVFoundation | Yes | - |
| macOS Architectures | arm64<br/>x86-64 | x86-64 |
| tvOS SDK | 10.2 | 9.2 |
| macOS Bundle Format | XCFrameworks | Frameworks |
| tvOS Min SDK | 11.0 | 9.2 |
| tvOS VideoToolbox | Yes | - |
| tvOS Architectures | arm64<br/>x86-64<br/>arm64-simulator | arm64<br/>x86-64 |
| tvOS Bundle Format | XCFrameworks | Frameworks |
### 9. Documentation
A more detailed documentation is available under [Wiki](https://github.com/tanersener/ffmpeg-kit/wiki).
### 9. Test Applications
### 10. Test Applications
You can see how `FFmpegKit` is used inside an application by running test applications created under
[FFmpegKit Test](https://github.com/tanersener/ffmpeg-kit-test) project.
All applications are identical and supports command execution, video encoding, accessing https urls, encoding audio,
burning subtitles, video stabilisation, pipe operations, concurrent command execution.
burning subtitles, video stabilisation, pipe operations and concurrent command execution.
### 10. License
### 11. License
`FFmpegKit` is licensed under the `LGPL v3.0`. However, if source code is built using the optional `--enable-gpl` flag
or prebuilt binaries with `-gpl` postfix are used, then `FFmpegKit` is subject to the `GPL v3.0` license.
### 11. Patents
### 12. Patents
It is not clearly explained in their documentation, but it is believed that `FFmpeg`, `kvazaar`, `x264` and `x265`
include algorithms which are subject to software patents. If you live in a country where software algorithms are
@ -155,7 +167,7 @@ that you seek legal advice first. See [FFmpeg Patent Mini-FAQ](https://ffmpeg.or
distribute that library, then you are subject to pay MPEG LA licensing fees. Refer to
[OpenH264 FAQ](https://www.openh264.org/faq.html) page for the details.
### 12. Contributing
### 13. Contributing
Feel free to submit issues or pull requests.
@ -163,7 +175,7 @@ Please note that `main` includes only the latest released source code. Changes p
developed under the `development` branch. Therefore, if you want to create a pull request, please open it against
the `development`.
### 13. See Also
### 14. See Also
- [FFmpeg API Documentation](https://ffmpeg.org/doxygen/4.0/index.html)
- [FFmpeg Wiki](https://trac.ffmpeg.org/wiki/WikiStart)

@ -22,7 +22,7 @@ enable_default_android_libraries
enable_main_build
# DETECT ANDROID NDK VERSION
DETECTED_NDK_VERSION=$(grep -Eo "Revision.*" "${ANDROID_NDK_ROOT}"/source.properties | sed 's/Revision//g;s/=//g;s/ //g')
export DETECTED_NDK_VERSION=$(grep -Eo "Revision.*" "${ANDROID_NDK_ROOT}"/source.properties | sed 's/Revision//g;s/=//g;s/ //g')
echo -e "\nINFO: Using Android NDK v${DETECTED_NDK_VERSION} provided at ${ANDROID_NDK_ROOT}\n" 1>>"${BASEDIR}"/build.log 2>&1
echo -e "INFO: Build options: $*\n" 1>>"${BASEDIR}"/build.log 2>&1
@ -121,6 +121,9 @@ while [ ! $# -eq 0 ]; do
export API=${API_LEVEL}
;;
--no-ffmpeg-kit-protocols)
export NO_FFMPEG_KIT_PROTOCOLS="1"
;;
*)
print_unknown_option "$1"
;;
@ -191,7 +194,7 @@ export ORIGINAL_API=${API}
# BUILD ENABLED LIBRARIES ON ENABLED ARCHITECTURES
for run_arch in {0..12}; do
if [[ ${ENABLED_ARCHITECTURES[$run_arch]} -eq 1 ]]; then
if [[ (${run_arch} -eq ${ARCH_ARM64_V8A} || ${run_arch} -eq ${ARCH_X86_64}) && ${API} -lt 21 ]]; then
if [[ (${run_arch} -eq ${ARCH_ARM64_V8A} || ${run_arch} -eq ${ARCH_X86_64}) && ${ORIGINAL_API} -lt 21 ]]; then
# 64 bit ABIs supported after API 21
export API=21
@ -228,13 +231,11 @@ if [[ ${ENABLED_ARCHITECTURES[ARCH_ARM_V7A]} -eq 1 ]] || [[ ${ENABLED_ARCHITECTU
fi
if [[ ${ENABLED_ARCHITECTURES[ARCH_ARM_V7A]} -eq 1 ]]; then
mkdir -p "${BASEDIR}"/android/build 1>>"${BASEDIR}"/build.log 2>&1
cat >"${BASEDIR}"/android/build/.armv7 <<EOF
EOF
create_file "${BASEDIR}"/android/build/.armv7
fi
if [[ ${ENABLED_ARCHITECTURES[ARCH_ARM_V7A_NEON]} -eq 1 ]]; then
mkdir -p "${BASEDIR}"/android/build 1>>"${BASEDIR}"/build.log 2>&1
cat >"${BASEDIR}"/android/build/.armv7neon <<EOF
EOF
create_file "${BASEDIR}"/android/build/.armv7neon
fi
if [[ ${ENABLED_ARCHITECTURES[ARCH_ARM64_V8A]} -eq 1 ]]; then
ANDROID_ARCHITECTURES+="$(get_android_arch 2) "
@ -246,8 +247,8 @@ if [[ ${ENABLED_ARCHITECTURES[ARCH_X86_64]} -eq 1 ]]; then
ANDROID_ARCHITECTURES+="$(get_android_arch 4) "
fi
if [[ ! -z ${FFMPEG_KIT_LTS_BUILD} ]]; then
cat >"${BASEDIR}"/android/build/.lts <<EOF
EOF
mkdir -p "${BASEDIR}"/android/build 1>>"${BASEDIR}"/build.log 2>&1
create_file "${BASEDIR}"/android/build/.lts
fi
# BUILD FFMPEG-KIT
@ -264,6 +265,35 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then
cd "${BASEDIR}"/android 1>>"${BASEDIR}"/build.log 2>&1 || exit 1
# COPY LICENSES
LICENSE_BASEDIR="${BASEDIR}"/android/ffmpeg-kit-android-lib/src/main/res/raw
rm -f "${LICENSE_BASEDIR}"/*.txt 1>>"${BASEDIR}"/build.log 2>&1 || exit 1
for library in {0..46}; do
if [[ ${ENABLED_LIBRARIES[$library]} -eq 1 ]]; then
ENABLED_LIBRARY=$(get_library_name ${library} | sed 's/-/_/g')
LICENSE_FILE="${LICENSE_BASEDIR}/license_${ENABLED_LIBRARY}.txt"
RC=$(copy_external_library_license_file ${library} "${LICENSE_FILE}")
if [[ ${RC} -ne 0 ]]; then
echo -e "DEBUG: Failed to copy the license file of ${ENABLED_LIBRARY}\n" 1>>"${BASEDIR}"/build.log 2>&1
echo -e "failed\n\nSee build.log for details\n"
exit 1
fi
echo -e "DEBUG: Copied the license file of ${ENABLED_LIBRARY} successfully\n" 1>>"${BASEDIR}"/build.log 2>&1
fi
done
# COPY LIBRARY LICENSES
if [[ ${GPL_ENABLED} == "yes" ]]; then
cp "${BASEDIR}"/LICENSE.GPLv3 "${LICENSE_BASEDIR}"/license.txt 1>>"${BASEDIR}"/build.log 2>&1
else
cp "${BASEDIR}"/LICENSE.LGPLv3 "${LICENSE_BASEDIR}"/license.txt 1>>"${BASEDIR}"/build.log 2>&1
fi
echo -e "DEBUG: Copied the ffmpeg-kit license successfully\n" 1>>"${BASEDIR}"/build.log 2>&1
# BUILD NATIVE LIBRARY
if [[ ${SKIP_ffmpeg_kit} -ne 1 ]]; then
"${ANDROID_NDK_ROOT}"/ndk-build -B 1>>"${BASEDIR}"/build.log 2>&1
@ -286,6 +316,7 @@ if [[ -n ${ANDROID_ARCHITECTURES} ]]; then
echo -e -n "\nCreating Android archive under prebuilt: "
# BUILD ANDROID ARCHIVE
rm -f "${BASEDIR}"/android/ffmpeg-kit-android-lib/build/outputs/aar/ffmpeg-kit-release.aar 1>>"${BASEDIR}"/build.log 2>&1
./gradlew ffmpeg-kit-android-lib:clean ffmpeg-kit-android-lib:assembleRelease ffmpeg-kit-android-lib:testReleaseUnitTest 1>>"${BASEDIR}"/build.log 2>&1
if [ $? -ne 0 ]; then
echo -e "failed\n"

@ -77,7 +77,7 @@ All libraries created by `android.sh` can be found under the `prebuilt` director
}
dependencies {
implementation 'com.arthenica:ffmpeg-kit-full:4.4.LTS'
implementation 'com.arthenica:ffmpeg-kit-full:4.5'
}
```
@ -220,12 +220,21 @@ All libraries created by `android.sh` can be found under the `prebuilt` director
```
8. Convert Storage Access Framework (SAF) Uris into paths that can be read or written by `FFmpegKit`.
- Reading a file:
```
Uri safUri = intent.getData();
String videoPath = FFmpegKitConfig.getSafParameterForWrite(requireContext(), safUri);
FFmpegKit.execute("-i file1.mp4 -c:v mpeg4 " + videoPath);
```
```
Uri safUri = intent.getData();
String inputVideoPath = FFmpegKitConfig.getSafParameterForRead(requireContext(), safUri);
FFmpegKit.execute("-i " + inputVideoPath + " -c:v mpeg4 file2.mp4");
```
- Writing to a file:
```
Uri safUri = intent.getData();
String outputVideoPath = FFmpegKitConfig.getSafParameterForWrite(requireContext(), safUri);
FFmpegKit.execute("-i file1.mp4 -c:v mpeg4 " + outputVideoPath);
```
9. Get previous `FFmpeg` and `FFprobe` sessions from session history.

@ -4,7 +4,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.2'
classpath 'com.android.tools.build:gradle:4.2.2'
}
}

@ -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 = 4.4
PROJECT_NUMBER = 4.5
# 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

@ -2,13 +2,13 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion 30
ndkVersion "22.0.7026061"
ndkVersion "23.0.7599858"
defaultConfig {
minSdkVersion 24
targetSdkVersion 30
versionCode 240440
versionName "4.4"
versionCode 240450
versionName "4.5"
project.archivesBaseName = "ffmpeg-kit"
consumerProguardFiles 'proguard-rules.pro'
}
@ -28,6 +28,9 @@ android {
testOptions {
unitTests.returnDefaultValues = true
unitTests.all {
systemProperty 'enable.ffmpeg.kit.test.mode', 'true'
}
}
}

@ -25,6 +25,7 @@
#include "config.h"
#include "libavcodec/jni.h"
#include "libavutil/bprint.h"
#include "libavutil/file.h"
#include "fftools_ffmpeg.h"
#include "ffmpegkit.h"
#include "ffprobekit.h"
@ -52,7 +53,7 @@ struct CallbackData {
};
/** Session control variables */
const int SESSION_MAP_SIZE = 1000;
#define SESSION_MAP_SIZE 1000
static atomic_short sessionMap[SESSION_MAP_SIZE];
static atomic_int sessionInTransitMessageCountMap[SESSION_MAP_SIZE];
@ -102,7 +103,7 @@ volatile int handleSIGXCPU = 1;
volatile int handleSIGPIPE = 1;
/** Holds the id of the current session */
__thread volatile long sessionId = 0;
__thread volatile long globalSessionId = 0;
/** Holds the default log level */
int configuredLogLevel = AV_LOG_INFO;
@ -274,7 +275,7 @@ void logCallbackDataAdd(int level, AVBPrint *data) {
// CREATE DATA STRUCT FIRST
struct CallbackData *newData = (struct CallbackData*)av_malloc(sizeof(struct CallbackData));
newData->type = LogType;
newData->sessionId = sessionId;
newData->sessionId = globalSessionId;
newData->logLevel = level;
av_bprint_init(&newData->logData, 0, AV_BPRINT_SIZE_UNLIMITED);
av_bprintf(&newData->logData, "%s", data->str);
@ -302,7 +303,7 @@ void logCallbackDataAdd(int level, AVBPrint *data) {
monitorNotify();
atomic_fetch_add(&sessionInTransitMessageCountMap[sessionId % SESSION_MAP_SIZE], 1);
atomic_fetch_add(&sessionInTransitMessageCountMap[globalSessionId % SESSION_MAP_SIZE], 1);
}
/**
@ -313,7 +314,7 @@ void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_
// CREATE DATA STRUCT FIRST
struct CallbackData *newData = (struct CallbackData*)av_malloc(sizeof(struct CallbackData));
newData->type = StatisticsType;
newData->sessionId = sessionId;
newData->sessionId = globalSessionId;
newData->statisticsFrameNumber = frameNumber;
newData->statisticsFps = fps;
newData->statisticsQuality = quality;
@ -346,7 +347,7 @@ void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_
monitorNotify();
atomic_fetch_add(&sessionInTransitMessageCountMap[sessionId % SESSION_MAP_SIZE], 1);
atomic_fetch_add(&sessionInTransitMessageCountMap[globalSessionId % SESSION_MAP_SIZE], 1);
}
/**
@ -560,12 +561,13 @@ void *callbackThreadFunction() {
}
/**
* Used by saf_wrapper; is expected to be called from a Java thread, therefore we don't need attach/detach
* Used by fd and saf protocols; is expected to be called from a Java thread, therefore we don't need attach/detach
*/
void closeParcelFileDescriptor(int fd) {
int close_parcel_file_descriptor(int fd) {
JNIEnv *env = NULL;
(*globalVm)->GetEnv(globalVm, (void**) &env, JNI_VERSION_1_6);
(*env)->CallStaticVoidMethod(env, configClass, closeParcelFileDescriptorMethod, fd);
return 0;
}
/**
@ -643,6 +645,8 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved) {
redirectionEnabled = 0;
av_set_fd_close(close_parcel_file_descriptor);
return JNI_VERSION_1_6;
}
@ -783,10 +787,10 @@ JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFmpeg
}
// REGISTER THE ID BEFORE STARTING THE SESSION
sessionId = (long) id;
globalSessionId = (long) id;
addSession((long) id);
resetMessagesInTransmit(sessionId);
resetMessagesInTransmit(globalSessionId);
// RUN
int returnCode = ffmpeg_execute(argumentCount, argv);

@ -27,7 +27,7 @@
#include "libavutil/ffversion.h"
/** Library version string */
#define FFMPEG_KIT_VERSION "4.4"
#define FFMPEG_KIT_VERSION "4.5"
/** Defines tag used for Android logging. */
#define LIB_NAME "ffmpeg-kit"

@ -30,10 +30,10 @@
int ffprobe_execute(int argc, char **argv);
extern int configuredLogLevel;
extern __thread volatile long sessionId;
extern void addSession(long id);
extern void removeSession(long id);
extern void resetMessagesInTransmit(long id);
extern __thread volatile long globalSessionId;
extern void addSession(long sessionId);
extern void removeSession(long sessionId);
extern void resetMessagesInTransmit(long sessionId);
/**
* Synchronously executes FFprobe natively with arguments provided.
@ -78,10 +78,10 @@ JNIEXPORT jint JNICALL Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprob
}
// REGISTER THE ID BEFORE STARTING THE SESSION
sessionId = (long) id;
globalSessionId = (long) id;
addSession((long) id);
resetMessagesInTransmit(sessionId);
resetMessagesInTransmit(globalSessionId);
// RUN
int returnCode = ffprobe_execute(argumentCount, argv);

@ -70,6 +70,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
#include "libavutil/mathematics.h"
#include "libavutil/imgutils.h"
@ -82,6 +83,7 @@
#include "libavutil/cpu.h"
#include "libavutil/ffversion.h"
#include "libavutil/version.h"
#include "libavcodec/bsf.h"
#include "fftools_cmdutils.h"
#if HAVE_SYS_RESOURCE_H
#include <sys/time.h>
@ -113,11 +115,6 @@ enum show_muxdemuxers {
SHOW_MUXERS,
};
void init_opts(void)
{
av_dict_set(&sws_dict, "flags", "bicubic", 0);
}
void uninit_opts(void)
{
av_dict_free(&swr_opts);
@ -156,7 +153,7 @@ void init_dynload(void)
#endif
}
static void (*program_exit)(int ret);
static __thread void (*program_exit)(int ret);
void register_exit(void (*cb)(int ret))
{
@ -251,11 +248,9 @@ void show_help_children(const AVClass *class, int flags)
static const OptionDef *find_option(const OptionDef *po, const char *name)
{
const char *p = strchr(name, ':');
int len = p ? p - name : strlen(name);
while (po->name) {
if (!strncmp(name, po->name, len) && strlen(po->name) == len)
const char *end;
if (av_strstart(name, po->name, &end) && (!*end || *end == ':'))
break;
po++;
}
@ -587,9 +582,6 @@ int opt_default(void *optctx, const char *opt, const char *arg)
char opt_stripped[128];
const char *p;
const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class();
#if CONFIG_AVRESAMPLE
const AVClass *rc = avresample_get_class();
#endif
#if CONFIG_SWSCALE
const AVClass *sc = sws_get_class();
#endif
@ -659,13 +651,6 @@ int opt_default(void *optctx, const char *opt, const char *arg)
consumed = 1;
}
#endif
#if CONFIG_AVRESAMPLE
if ((o=opt_find(&rc, opt, NULL, 0,
AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
av_dict_set(&resample_opts, opt, arg, FLAGS);
consumed = 1;
}
#endif
if (consumed)
return 0;
@ -720,7 +705,6 @@ static void finish_group(OptionParseContext *octx, int group_idx,
resample_opts = NULL;
sws_dict = NULL;
swr_opts = NULL;
init_opts();
memset(&octx->cur_group, 0, sizeof(octx->cur_group));
}
@ -758,8 +742,6 @@ static void init_parse_context(OptionParseContext *octx,
octx->global_opts.group_def = &global_group;
octx->global_opts.arg = "";
init_opts();
}
void uninit_parse_context(OptionParseContext *octx)
@ -911,6 +893,32 @@ int opt_cpuflags(void *optctx, const char *opt, const char *arg)
return 0;
}
int opt_cpucount(void *optctx, const char *opt, const char *arg)
{
int ret;
int count;
static const AVOption opts[] = {
{"count", NULL, 0, AV_OPT_TYPE_INT, { .i64 = -1}, -1, INT_MAX, 0},
{NULL},
};
static const AVClass class = {
.class_name = "cpucount",
.item_name = av_default_item_name,
.option = opts,
.version = LIBAVUTIL_VERSION_INT,
};
const AVClass *pclass = &class;
ret = av_opt_eval_int(&pclass, opts, arg, &count);
if (!ret) {
av_cpu_force_count(count);
}
return ret;
}
int opt_loglevel(void *optctx, const char *opt, const char *arg)
{
const struct { const char *name; int level; } log_levels[] = {
@ -941,20 +949,18 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg)
if (!i && !cmd) {
flags = 0; /* missing relative prefix, build absolute value */
}
if (!strncmp(token, "repeat", 6)) {
if (av_strstart(token, "repeat", &arg)) {
if (cmd == '-') {
flags |= AV_LOG_SKIP_REPEATED;
} else {
flags &= ~AV_LOG_SKIP_REPEATED;
}
arg = token + 6;
} else if (!strncmp(token, "level", 5)) {
} else if (av_strstart(token, "level", &arg)) {
if (cmd == '-') {
flags &= ~AV_LOG_PRINT_LEVEL;
} else {
flags |= AV_LOG_PRINT_LEVEL;
}
arg = token + 5;
} else {
break;
}
@ -1208,13 +1214,13 @@ static void print_buildconf(int flags, int level)
// Change all the ' --' strings to '~--' so that
// they can be identified as tokens.
while ((conflist = strstr(str, " --")) != NULL) {
strncpy(conflist, "~--", 3);
conflist[0] = '~';
}
// Compensate for the weirdness this would cause
// when passing 'pkg-config --static'.
while ((remove_tilde = strstr(str, "pkg-config~")) != NULL) {
strncpy(remove_tilde, "pkg-config ", 11);
remove_tilde[sizeof("pkg-config~") - 2] = ' ';
}
splitconf = strtok(str, "~");
@ -1458,7 +1464,7 @@ static void print_codec(const AVCodec *c)
av_log(NULL, AV_LOG_STDERR, "variable ");
if (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_AUTO_THREADS))
AV_CODEC_CAP_OTHER_THREADS))
av_log(NULL, AV_LOG_STDERR, "threads ");
if (c->capabilities & AV_CODEC_CAP_AVOID_PROBING)
av_log(NULL, AV_LOG_STDERR, "avoidprobe ");
@ -1475,12 +1481,12 @@ static void print_codec(const AVCodec *c)
av_log(NULL, AV_LOG_STDERR, " Threading capabilities: ");
switch (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_AUTO_THREADS)) {
AV_CODEC_CAP_OTHER_THREADS)) {
case AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "frame and slice"); break;
case AV_CODEC_CAP_FRAME_THREADS: av_log(NULL, AV_LOG_STDERR, "frame"); break;
case AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "slice"); break;
case AV_CODEC_CAP_AUTO_THREADS : av_log(NULL, AV_LOG_STDERR, "auto"); break;
case AV_CODEC_CAP_OTHER_THREADS : av_log(NULL, AV_LOG_STDERR, "other"); break;
default: av_log(NULL, AV_LOG_STDERR, "none"); break;
}
av_log(NULL, AV_LOG_STDERR, "\n");
@ -2151,7 +2157,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
}
AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
AVFormatContext *s, AVStream *st, AVCodec *codec)
AVFormatContext *s, AVStream *st, const AVCodec *codec)
{
AVDictionary *ret = NULL;
AVDictionaryEntry *t = NULL;
@ -2180,6 +2186,7 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
}
while ((t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX))) {
const AVClass *priv_class;
char *p = strchr(t->key, ':');
/* check stream specification in opt name */
@ -2192,8 +2199,8 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
if (av_opt_find(&cc, t->key, NULL, flags, AV_OPT_SEARCH_FAKE_OBJ) ||
!codec ||
(codec->priv_class &&
av_opt_find(&codec->priv_class, t->key, NULL, flags,
((priv_class = codec->priv_class) &&
av_opt_find(&priv_class, t->key, NULL, flags,
AV_OPT_SEARCH_FAKE_OBJ)))
av_dict_set(&ret, t->key, t->value, 0);
else if (t->key[0] == prefix &&
@ -2266,7 +2273,7 @@ double get_rotation(AVStream *st)
}
#if CONFIG_AVDEVICE
static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
{
int ret, i;
AVDeviceInfoList *device_list = NULL;
@ -2296,7 +2303,7 @@ static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
return ret;
}
static int print_device_sinks(AVOutputFormat *fmt, AVDictionary *opts)
static int print_device_sinks(const AVOutputFormat *fmt, AVDictionary *opts)
{
int ret, i;
AVDeviceInfoList *device_list = NULL;
@ -2350,7 +2357,7 @@ static int show_sinks_sources_parse_arg(const char *arg, char **dev, AVDictionar
int show_sources(void *optctx, const char *opt, const char *arg)
{
AVInputFormat *fmt = NULL;
const AVInputFormat *fmt = NULL;
char *dev = NULL;
AVDictionary *opts = NULL;
int ret = 0;
@ -2388,7 +2395,7 @@ int show_sources(void *optctx, const char *opt, const char *arg)
int show_sinks(void *optctx, const char *opt, const char *arg)
{
AVOutputFormat *fmt = NULL;
const AVOutputFormat *fmt = NULL;
char *dev = NULL;
AVDictionary *opts = NULL;
int ret = 0;

@ -51,8 +51,6 @@
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "saf_wrapper.h"
#ifdef _WIN32
#undef main /* We don't want SDL to override our main() */
#endif
@ -117,6 +115,11 @@ void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
*/
int opt_cpuflags(void *optctx, const char *opt, const char *arg);
/**
* Override the cpucount.
*/
int opt_cpucount(void *optctx, const char *opt, const char *arg);
/**
* Fallback for options that are not explicitly handled, these will be
* parsed through AVOptions.
@ -237,7 +240,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags,
void show_help_children(const AVClass *class, int flags);
/**
* Per-fftool specific help handlers. Implemented in each
* Per-fftool specific help handler. Implemented in each
* fftool, called by show_help().
*/
void show_help_default_ffmpeg(const char *opt, const char *arg);
@ -404,7 +407,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec);
* @return a pointer to the created dictionary
*/
AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
AVFormatContext *s, AVStream *st, AVCodec *codec);
AVFormatContext *s, AVStream *st, const AVCodec *codec);
/**
* Setup AVCodecContext options for avformat_find_stream_info().

@ -260,9 +260,9 @@ extern volatile int handleSIGTERM;
extern volatile int handleSIGXCPU;
extern volatile int handleSIGPIPE;
extern __thread volatile long sessionId;
extern void cancelSession(long id);
extern int cancelRequested(long id);
extern __thread volatile long globalSessionId;
extern void cancelSession(long sessionId);
extern int cancelRequested(long sessionId);
/* sub2video hack:
Convert subtitles to video with alpha to insert them in filter graphs.
@ -446,16 +446,9 @@ extern __thread volatile int longjmp_value;
static void
sigterm_handler(int sig)
{
int ret;
received_sigterm = sig;
received_nb_signals++;
term_exit_sigsafe();
if(received_nb_signals > 3) {
ret = write(2/*STDERR_FILENO*/, "Received > 3 system signals, hard exiting\n",
strlen("Received > 3 system signals, hard exiting\n"));
if (ret < 0) { /* Do nothing */ };
exit(123);
}
}
#if HAVE_SETCONSOLECTRLHANDLER
@ -504,7 +497,12 @@ static BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
void term_init(void)
{
#if defined __linux__
struct sigaction action = {0};
#if defined __aarch64__ || defined __amd64__ || defined __x86_64__
struct sigaction action = {0};
#else
struct sigaction action = {{0}};
#endif
action.sa_handler = sigterm_handler;
/* block other interrupts while processing this one */
@ -700,6 +698,7 @@ static void ffmpeg_cleanup(int ret)
av_frame_free(&ost->filtered_frame);
av_frame_free(&ost->last_frame);
av_packet_free(&ost->pkt);
av_dict_free(&ost->encoder_opts);
av_freep(&ost->forced_keyframes);
@ -718,9 +717,9 @@ static void ffmpeg_cleanup(int ret)
if (ost->muxing_queue) {
while (av_fifo_size(ost->muxing_queue)) {
AVPacket pkt;
AVPacket *pkt;
av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
av_packet_unref(&pkt);
av_packet_free(&pkt);
}
av_fifo_freep(&ost->muxing_queue);
}
@ -732,6 +731,7 @@ static void ffmpeg_cleanup(int ret)
#endif
for (i = 0; i < nb_input_files; i++) {
avformat_close_input(&input_files[i]->ctx);
av_packet_free(&input_files[i]->pkt);
av_freep(&input_files[i]);
}
for (i = 0; i < nb_input_streams; i++) {
@ -739,6 +739,7 @@ static void ffmpeg_cleanup(int ret)
av_frame_free(&ist->decoded_frame);
av_frame_free(&ist->filter_frame);
av_packet_free(&ist->pkt);
av_dict_free(&ist->decoder_opts);
avsubtitle_free(&ist->prev_sub.subtitle);
av_frame_free(&ist->sub2video.frame);
@ -771,7 +772,7 @@ static void ffmpeg_cleanup(int ret)
if (received_sigterm) {
av_log(NULL, AV_LOG_INFO, "Exiting normally, received signal %d.\n",
(int) received_sigterm);
} else if (cancelRequested(sessionId)) {
} else if (cancelRequested(globalSessionId)) {
av_log(NULL, AV_LOG_INFO, "Exiting normally, received cancel request.\n");
} else if (ret && atomic_load(&transcode_init_done)) {
av_log(NULL, AV_LOG_INFO, "Conversion failed!\n");
@ -798,7 +799,7 @@ void assert_avoptions(AVDictionary *m)
}
}
static void abort_codec_experimental(AVCodec *c, int encoder)
static void abort_codec_experimental(const AVCodec *c, int encoder)
{
exit_program(1);
}
@ -856,7 +857,7 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u
}
if (!of->header_written) {
AVPacket tmp_pkt = {0};
AVPacket *tmp_pkt;
/* the muxer is not initialized yet, buffer the packet */
if (!av_fifo_space(ost->muxing_queue)) {
unsigned int are_we_over_size =
@ -879,8 +880,11 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u
ret = av_packet_make_refcounted(pkt);
if (ret < 0)
exit_program(1);
av_packet_move_ref(&tmp_pkt, pkt);
ost->muxing_queue_data_size += tmp_pkt.size;
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_generic_write(ost->muxing_queue, &tmp_pkt, sizeof(tmp_pkt), NULL);
return;
}
@ -1106,13 +1110,9 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
AVFrame *frame)
{
AVCodecContext *enc = ost->enc_ctx;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int ret;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
adjust_frame_pts_to_encoder_tb(of, ost, frame);
if (!check_recording_time(ost))
@ -1124,7 +1124,6 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
ost->samples_encoded += frame->nb_samples;
ost->frames_encoded++;
av_assert0(pkt.size || !pkt.data);
update_benchmark(NULL);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder <- type:audio "
@ -1138,7 +1137,8 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
goto error;
while (1) {
ret = avcodec_receive_packet(enc, &pkt);
av_packet_unref(pkt);
ret = avcodec_receive_packet(enc, pkt);
if (ret == AVERROR(EAGAIN))
break;
if (ret < 0)
@ -1146,16 +1146,16 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
update_benchmark("encode_audio %d.%d", ost->file_index, ost->index);
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:audio "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &enc->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &enc->time_base));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
}
output_packet(of, &pkt, ost, 0);
output_packet(of, pkt, ost, 0);
}
return;
@ -1171,7 +1171,7 @@ static void do_subtitle_out(OutputFile *of,
int subtitle_out_max_size = 1024 * 1024;
int subtitle_out_size, nb, i;
AVCodecContext *enc;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int64_t pts;
if (sub->pts == AV_NOPTS_VALUE) {
@ -1229,21 +1229,21 @@ static void do_subtitle_out(OutputFile *of,
exit_program(1);
}
av_init_packet(&pkt);
pkt.data = subtitle_out;
pkt.size = subtitle_out_size;
pkt.pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->mux_timebase);
pkt.duration = av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
av_packet_unref(pkt);
pkt->data = subtitle_out;
pkt->size = subtitle_out_size;
pkt->pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->mux_timebase);
pkt->duration = av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
if (enc->codec_id == AV_CODEC_ID_DVB_SUBTITLE) {
/* XXX: the pts correction is handled here. Maybe handling
it in the codec would be better */
if (i == 0)
pkt.pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
pkt->pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
else
pkt.pts += av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
pkt->pts += av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
}
pkt.dts = pkt.pts;
output_packet(of, &pkt, ost, 0);
pkt->dts = pkt->pts;
output_packet(of, pkt, ost, 0);
}
}
@ -1252,7 +1252,7 @@ static void do_video_out(OutputFile *of,
AVFrame *next_picture)
{
int ret, format_video_sync;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
AVCodecContext *enc = ost->enc_ctx;
AVRational frame_rate;
int nb_frames, nb0_frames, i;
@ -1273,7 +1273,7 @@ static void do_video_out(OutputFile *of,
if (frame_rate.num > 0 && frame_rate.den > 0)
duration = 1/(av_q2d(frame_rate) * av_q2d(enc->time_base));
if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
duration = FFMIN(duration, 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base)));
if (!ost->filters_script &&
@ -1392,15 +1392,13 @@ static void do_video_out(OutputFile *of,
}
}
ost->last_dropped = nb_frames == nb0_frames && next_picture;
ost->dropped_keyframe = ost->last_dropped && next_picture && next_picture->key_frame;
/* duplicates frame if needed */
for (i = 0; i < nb_frames; i++) {
AVFrame *in_picture;
int forced_keyframe = 0;
double pts_time;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
if (i < nb0_frames && ost->last_frame) {
in_picture = ost->last_frame;
@ -1455,6 +1453,11 @@ static void do_video_out(OutputFile *of,
&& in_picture->key_frame==1
&& !i) {
forced_keyframe = 1;
} else if ( ost->forced_keyframes
&& !strncmp(ost->forced_keyframes, "source_no_drop", 14)
&& !i) {
forced_keyframe = (in_picture->key_frame == 1) || ost->dropped_keyframe;
ost->dropped_keyframe = 0;
}
if (forced_keyframe) {
@ -1479,7 +1482,8 @@ static void do_video_out(OutputFile *of,
av_frame_remove_side_data(in_picture, AV_FRAME_DATA_A53_CC);
while (1) {
ret = avcodec_receive_packet(enc, &pkt);
av_packet_unref(pkt);
ret = avcodec_receive_packet(enc, pkt);
update_benchmark("encode_video %d.%d", ost->file_index, ost->index);
if (ret == AVERROR(EAGAIN))
break;
@ -1489,24 +1493,24 @@ static void do_video_out(OutputFile *of,
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &enc->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &enc->time_base));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
}
if (pkt.pts == AV_NOPTS_VALUE && !(enc->codec->capabilities & AV_CODEC_CAP_DELAY))
pkt.pts = ost->sync_opts;
if (pkt->pts == AV_NOPTS_VALUE && !(enc->codec->capabilities & AV_CODEC_CAP_DELAY))
pkt->pts = ost->sync_opts;
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ost->mux_timebase),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ost->mux_timebase));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->mux_timebase),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->mux_timebase));
}
frame_size = pkt.size;
output_packet(of, &pkt, ost, 0);
frame_size = pkt->size;
output_packet(of, pkt, ost, 0);
/* if two pass, output log */
if (ost->logfile && enc->stats_out) {
@ -1635,6 +1639,9 @@ static int reap_filters(int flush)
if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_AUDIO)
init_output_stream_wrapper(ost, NULL, 1);
if (!ost->pkt && !(ost->pkt = av_packet_alloc())) {
return AVERROR(ENOMEM);
}
if (!ost->filtered_frame && !(ost->filtered_frame = av_frame_alloc())) {
return AVERROR(ENOMEM);
}
@ -2143,7 +2150,7 @@ static void flush_encoders(void)
for (;;) {
const char *desc = NULL;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int pkt_size;
switch (enc->codec_type) {
@ -2157,13 +2164,10 @@ static void flush_encoders(void)
av_assert0(0);
}
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
update_benchmark(NULL);
while ((ret = avcodec_receive_packet(enc, &pkt)) == AVERROR(EAGAIN)) {
av_packet_unref(pkt);
while ((ret = avcodec_receive_packet(enc, pkt)) == AVERROR(EAGAIN)) {
ret = avcodec_send_frame(enc, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n",
@ -2184,16 +2188,16 @@ static void flush_encoders(void)
fprintf(ost->logfile, "%s", enc->stats_out);
}
if (ret == AVERROR_EOF) {
output_packet(of, &pkt, ost, 1);
output_packet(of, pkt, ost, 1);
break;
}
if (ost->finished & MUXER_FINISHED) {
av_packet_unref(&pkt);
av_packet_unref(pkt);
continue;
}
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
pkt_size = pkt.size;
output_packet(of, &pkt, ost, 0);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
pkt_size = pkt->size;
output_packet(of, pkt, ost, 0);
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO && vstats_filename) {
do_video_stats(ost, pkt_size);
}
@ -2227,14 +2231,12 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
InputFile *f = input_files [ist->file_index];
int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? 0 : of->start_time;
int64_t ost_tb_start_time = av_rescale_q(start_time, AV_TIME_BASE_Q, ost->mux_timebase);
AVPacket opkt;
AVPacket *opkt = ost->pkt;
av_packet_unref(opkt);
// EOF: flush output bitstream filters.
if (!pkt) {
av_init_packet(&opkt);
opkt.data = NULL;
opkt.size = 0;
output_packet(of, &opkt, ost, 1);
output_packet(of, opkt, ost, 1);
return;
}
@ -2259,9 +2261,11 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
}
if (f->recording_time != INT64_MAX) {
start_time = f->ctx->start_time;
if (f->start_time != AV_NOPTS_VALUE && copy_ts)
start_time += f->start_time;
start_time = 0;
if (copy_ts) {
start_time += f->start_time != AV_NOPTS_VALUE ? f->start_time : 0;
start_time += start_at_zero ? 0 : f->ctx->start_time;
}
if (ist->pts >= f->recording_time + start_time) {
close_output_stream(ost);
return;
@ -2272,30 +2276,30 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO)
ost->sync_opts++;
if (av_packet_ref(&opkt, pkt) < 0)
if (av_packet_ref(opkt, pkt) < 0)
exit_program(1);
if (pkt->pts != AV_NOPTS_VALUE)
opkt.pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time;
opkt->pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time;
if (pkt->dts == AV_NOPTS_VALUE) {
opkt.dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase);
opkt->dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase);
} else if (ost->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
int duration = av_get_audio_frame_duration(ist->dec_ctx, pkt->size);
if(!duration)
duration = ist->dec_ctx->frame_size;
opkt.dts = av_rescale_delta(ist->st->time_base, pkt->dts,
opkt->dts = av_rescale_delta(ist->st->time_base, pkt->dts,
(AVRational){1, ist->dec_ctx->sample_rate}, duration,
&ist->filter_in_rescale_delta_last, ost->mux_timebase);
/* dts will be set immediately afterwards to what pts is now */
opkt.pts = opkt.dts - ost_tb_start_time;
opkt->pts = opkt->dts - ost_tb_start_time;
} else
opkt.dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase);
opkt.dts -= ost_tb_start_time;
opkt->dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase);
opkt->dts -= ost_tb_start_time;
opkt.duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase);
opkt->duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase);
output_packet(of, &opkt, ost, 0);
output_packet(of, opkt, ost, 0);
}
int guess_input_channel_layout(InputStream *ist)
@ -2434,7 +2438,7 @@ static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
if (ifilter->filter) {
/* THIS VALIDATION IS REQUIRED TO COMPLETE CANCELLATION */
if (!received_sigterm && !cancelRequested(sessionId)) {
if (!received_sigterm && !cancelRequested(globalSessionId)) {
ret = av_buffersrc_close(ifilter->filter, pts, AV_BUFFERSRC_FLAG_PUSH);
}
if (ret < 0)
@ -2574,7 +2578,6 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
int i, ret = 0, err = 0;
int64_t best_effort_timestamp;
int64_t dts = AV_NOPTS_VALUE;
AVPacket avpkt;
// With fate-indeo3-2, we're getting 0-sized packets before EOF for some
// reason. This seems like a semi-critical bug. Don't trigger EOF, and
@ -2590,8 +2593,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
if (ist->dts != AV_NOPTS_VALUE)
dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt) {
avpkt = *pkt;
avpkt.dts = dts; // ffmpeg.c probably shouldn't do this
pkt->dts = dts; // ffmpeg.c probably shouldn't do this
}
// The old code used to set dts on the drain packet, which does not work
@ -2605,7 +2607,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
}
update_benchmark(NULL);
ret = decode(ist->dec_ctx, decoded_frame, got_output, pkt ? &avpkt : NULL);
ret = decode(ist->dec_ctx, decoded_frame, got_output, pkt);
update_benchmark("decode_video %d.%d", ist->file_index, ist->st->index);
if (ret < 0)
*decode_failed = 1;
@ -2764,6 +2766,8 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output,
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
exit_program(1);
if (!check_output_constraints(ist, ost) || !ost->encoding_needed
|| ost->enc->type != AVMEDIA_TYPE_SUBTITLE)
continue;
@ -2799,11 +2803,18 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
int repeating = 0;
int eof_reached = 0;
AVPacket avpkt;
AVPacket *avpkt;
if (!ist->pkt && !(ist->pkt = av_packet_alloc()))
return AVERROR(ENOMEM);
avpkt = ist->pkt;
if (!ist->saw_first_ts) {
ist->first_dts =
ist->dts = ist->st->avg_frame_rate.num ? - ist->dec_ctx->has_b_frames * AV_TIME_BASE / av_q2d(ist->st->avg_frame_rate) : 0;
ist->pts = 0;
if (pkt && pkt->pts != AV_NOPTS_VALUE && !ist->decoding_needed) {
ist->first_dts =
ist->dts += av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
ist->pts = ist->dts; //unused but better to set it to a value thats not totally wrong
}
@ -2815,13 +2826,11 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
if (ist->next_pts == AV_NOPTS_VALUE)
ist->next_pts = ist->pts;
if (!pkt) {
/* EOF handling */
av_init_packet(&avpkt);
avpkt.data = NULL;
avpkt.size = 0;
} else {
avpkt = *pkt;
if (pkt) {
av_packet_unref(avpkt);
ret = av_packet_ref(avpkt, pkt);
if (ret < 0)
return ret;
}
if (pkt && pkt->dts != AV_NOPTS_VALUE) {
@ -2842,11 +2851,12 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
switch (ist->dec_ctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
ret = decode_audio (ist, repeating ? NULL : &avpkt, &got_output,
ret = decode_audio (ist, repeating ? NULL : avpkt, &got_output,
&decode_failed);
av_packet_unref(avpkt);
break;
case AVMEDIA_TYPE_VIDEO:
ret = decode_video (ist, repeating ? NULL : &avpkt, &got_output, &duration_pts, !pkt,
ret = decode_video (ist, repeating ? NULL : avpkt, &got_output, &duration_pts, !pkt,
&decode_failed);
if (!repeating || !pkt || got_output) {
if (pkt && pkt->duration) {
@ -2871,13 +2881,15 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
ist->next_pts += duration_dts;
}
}
av_packet_unref(avpkt);
break;
case AVMEDIA_TYPE_SUBTITLE:
if (repeating)
break;
ret = transcode_subtitles(ist, &avpkt, &got_output, &decode_failed);
ret = transcode_subtitles(ist, avpkt, &got_output, &decode_failed);
if (!pkt && ret >= 0)
ret = AVERROR_EOF;
av_packet_unref(avpkt);
break;
default:
return -1;
@ -2966,6 +2978,8 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
exit_program(1);
if (!check_output_constraints(ist, ost) || ost->encoding_needed)
continue;
@ -3122,7 +3136,7 @@ static int init_input_stream(int ist_index, char *error, int error_len)
InputStream *ist = input_streams[ist_index];
if (ist->decoding_needed) {
AVCodec *codec = ist->dec;
const AVCodec *codec = ist->dec;
if (!codec) {
snprintf(error, error_len, "Decoder (codec %s) not found for input stream #%d:%d",
avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
@ -3133,10 +3147,11 @@ static int init_input_stream(int ist_index, char *error, int error_len)
ist->dec_ctx->get_format = get_format;
ist->dec_ctx->get_buffer2 = get_buffer;
#if LIBAVCODEC_VERSION_MAJOR < 60
FF_DISABLE_DEPRECATION_WARNINGS
ist->dec_ctx->thread_safe_callbacks = 1;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
av_opt_set_int(ist->dec_ctx, "refcounted_frames", 1, 0);
if (ist->dec_ctx->codec_id == AV_CODEC_ID_DVB_SUBTITLE &&
(ist->decoding_needed & DECODING_FOR_OST)) {
av_dict_set(&ist->decoder_opts, "compute_edt", "1", AV_DICT_DONT_OVERWRITE);
@ -3234,10 +3249,11 @@ static int check_init_output_file(OutputFile *of, int file_index)
ost->mux_timebase = ost->st->time_base;
while (av_fifo_size(ost->muxing_queue)) {
AVPacket pkt;
AVPacket *pkt;
av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
ost->muxing_queue_data_size -= pkt.size;
write_packet(of, &pkt, ost, 1);
ost->muxing_queue_data_size -= pkt->size;
write_packet(of, pkt, ost, 1);
av_packet_free(&pkt);
}
}
@ -3318,15 +3334,23 @@ static int init_output_stream_streamcopy(OutputStream *ost)
if (!ost->frame_rate.num)
ost->frame_rate = ist->framerate;
ost->st->avg_frame_rate = ost->frame_rate;
if (ost->frame_rate.num)
ost->st->avg_frame_rate = ost->frame_rate;
else
ost->st->avg_frame_rate = ist->st->avg_frame_rate;
ret = avformat_transfer_internal_stream_timing_info(of->ctx->oformat, ost->st, ist->st, copy_tb);
if (ret < 0)
return ret;
// copy timebase while removing common factors
if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0)
ost->st->time_base = av_add_q(av_stream_get_codec_timebase(ost->st), (AVRational){0, 1});
if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0) {
if (ost->frame_rate.num)
ost->st->time_base = av_inv_q(ost->frame_rate);
else
ost->st->time_base = av_add_q(av_stream_get_codec_timebase(ost->st), (AVRational){0, 1});
}
// copy estimated duration as a hint to the muxer
if (ost->st->duration <= 0 && ist->st->duration > 0)
@ -3637,12 +3661,7 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
enc_ctx->bits_per_raw_sample = frame_bits_per_raw_sample;
}
if (ost->top_field_first == 0) {
enc_ctx->field_order = AV_FIELD_BB;
} else if (ost->top_field_first == 1) {
enc_ctx->field_order = AV_FIELD_TT;
}
// Field order: autodetection
if (frame) {
if (enc_ctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
ost->top_field_first >= 0)
@ -3657,6 +3676,13 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
enc_ctx->field_order = AV_FIELD_PROGRESSIVE;
}
// Field order: override
if (ost->top_field_first == 0) {
enc_ctx->field_order = AV_FIELD_BB;
} else if (ost->top_field_first == 1) {
enc_ctx->field_order = AV_FIELD_TT;
}
if (ost->forced_keyframes) {
if (!strncmp(ost->forced_keyframes, "expr:", 5)) {
ret = av_expr_parse(&ost->forced_keyframes_pexpr, ost->forced_keyframes+5,
@ -3702,7 +3728,7 @@ static int init_output_stream(OutputStream *ost, AVFrame *frame, char *error, in
int ret = 0;
if (ost->encoding_needed) {
AVCodec *codec = ost->enc;
const AVCodec *codec = ost->enc;
AVCodecContext *dec = NULL;
InputStream *ist;
@ -3920,7 +3946,7 @@ static int transcode_init(void)
/* init framerate emulation */
for (i = 0; i < nb_input_files; i++) {
InputFile *ifile = input_files[i];
if (ifile->rate_emu)
if (ifile->readrate || ifile->rate_emu)
for (j = 0; j < ifile->nb_streams; j++)
input_streams[j + ifile->ist_index]->start = av_gettime_relative();
}
@ -4114,16 +4140,16 @@ static OutputStream *choose_output(void)
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
int64_t opts = ost->st->cur_dts == AV_NOPTS_VALUE ? INT64_MIN :
av_rescale_q(ost->st->cur_dts, ost->st->time_base,
int64_t opts = ost->last_mux_dts == AV_NOPTS_VALUE ? INT64_MIN :
av_rescale_q(ost->last_mux_dts, ost->st->time_base,
AV_TIME_BASE_Q);
if (ost->st->cur_dts == AV_NOPTS_VALUE)
if (ost->last_mux_dts == AV_NOPTS_VALUE)
av_log(NULL, AV_LOG_DEBUG,
"cur_dts is invalid st:%d (%d) [init:%d i_done:%d finish:%d] (this is harmless if it occurs once at the start per stream)\n",
ost->st->index, ost->st->id, ost->initialized, ost->inputs_done, ost->finished);
if (!ost->initialized && !ost->inputs_done)
return ost;
return ost->unavailable ? NULL : ost;
if (!ost->finished && opts < opts_min) {
opts_min = opts;
@ -4261,12 +4287,12 @@ static int check_keyboard_interaction(int64_t cur_time)
static void *input_thread(void *arg)
{
InputFile *f = arg;
AVPacket *pkt = f->pkt, *queue_pkt;
unsigned flags = f->non_blocking ? AV_THREAD_MESSAGE_NONBLOCK : 0;
int ret = 0;
while (1) {
AVPacket pkt;
ret = av_read_frame(f->ctx, &pkt);
ret = av_read_frame(f->ctx, pkt);
if (ret == AVERROR(EAGAIN)) {
av_usleep(10000);
@ -4276,10 +4302,17 @@ static void *input_thread(void *arg)
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
ret = av_thread_message_queue_send(f->in_thread_queue, &pkt, flags);
queue_pkt = av_packet_alloc();
if (!queue_pkt) {
av_packet_unref(pkt);
av_thread_message_queue_set_err_recv(f->in_thread_queue, AVERROR(ENOMEM));
break;
}
av_packet_move_ref(queue_pkt, pkt);
ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
if (flags && ret == AVERROR(EAGAIN)) {
flags = 0;
ret = av_thread_message_queue_send(f->in_thread_queue, &pkt, flags);
ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
av_log(f->ctx, AV_LOG_WARNING,
"Thread message queue blocking; consider raising the "
"thread_queue_size option (current value: %d)\n",
@ -4290,7 +4323,7 @@ static void *input_thread(void *arg)
av_log(f->ctx, AV_LOG_ERROR,
"Unable to send packet to main thread: %s\n",
av_err2str(ret));
av_packet_unref(&pkt);
av_packet_free(&queue_pkt);
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
@ -4302,13 +4335,13 @@ static void *input_thread(void *arg)
static void free_input_thread(int i)
{
InputFile *f = input_files[i];
AVPacket pkt;
AVPacket *pkt;
if (!f || !f->in_thread_queue)
return;
av_thread_message_queue_set_err_send(f->in_thread_queue, AVERROR_EOF);
while (av_thread_message_queue_recv(f->in_thread_queue, &pkt, 0) >= 0)
av_packet_unref(&pkt);
av_packet_free(&pkt);
pthread_join(f->thread, NULL);
f->joined = 1;
@ -4337,7 +4370,7 @@ static int init_input_thread(int i)
strcmp(f->ctx->iformat->name, "lavfi"))
f->non_blocking = 1;
ret = av_thread_message_queue_alloc(&f->in_thread_queue,
f->thread_queue_size, sizeof(AVPacket));
f->thread_queue_size, sizeof(f->pkt));
if (ret < 0)
return ret;
@ -4362,7 +4395,7 @@ static int init_input_threads(void)
return 0;
}
static int get_input_packet_mt(InputFile *f, AVPacket *pkt)
static int get_input_packet_mt(InputFile *f, AVPacket **pkt)
{
return av_thread_message_queue_recv(f->in_thread_queue, pkt,
f->non_blocking ?
@ -4370,14 +4403,22 @@ static int get_input_packet_mt(InputFile *f, AVPacket *pkt)
}
#endif
static int get_input_packet(InputFile *f, AVPacket *pkt)
static int get_input_packet(InputFile *f, AVPacket **pkt)
{
if (f->rate_emu) {
if (f->readrate || f->rate_emu) {
int i;
int64_t file_start = copy_ts * (
(f->ctx->start_time != AV_NOPTS_VALUE ? f->ctx->start_time * !start_at_zero : 0) +
(f->start_time != AV_NOPTS_VALUE ? f->start_time : 0)
);
float scale = f->rate_emu ? 1.0 : f->readrate;
for (i = 0; i < f->nb_streams; i++) {
InputStream *ist = input_streams[f->ist_index + i];
int64_t pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
int64_t now = av_gettime_relative() - ist->start;
int64_t stream_ts_offset, pts, now;
if (!ist->nb_packets || (ist->decoding_needed && !ist->got_output)) continue;
stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
if (pts > now)
return AVERROR(EAGAIN);
}
@ -4387,7 +4428,8 @@ static int get_input_packet(InputFile *f, AVPacket *pkt)
if (f->thread_queue_size)
return get_input_packet_mt(f, pkt);
#endif
return av_read_frame(f->ctx, pkt);
*pkt = f->pkt;
return av_read_frame(f->ctx, *pkt);
}
static int got_eagain(void)
@ -4499,7 +4541,7 @@ static int process_input(int file_index)
InputFile *ifile = input_files[file_index];
AVFormatContext *is;
InputStream *ist;
AVPacket pkt;
AVPacket *pkt;
int ret, thread_ret, i, j;
int64_t duration;
int64_t pkt_dts;
@ -4574,27 +4616,27 @@ static int process_input(int file_index)
reset_eagain();
if (do_pkt_dump) {
av_pkt_dump_log2(NULL, AV_LOG_INFO, &pkt, do_hex_dump,
is->streams[pkt.stream_index]);
av_pkt_dump_log2(NULL, AV_LOG_INFO, pkt, do_hex_dump,
is->streams[pkt->stream_index]);
}
/* the following test is needed in case new streams appear
dynamically in stream : we ignore them */
if (pkt.stream_index >= ifile->nb_streams) {
report_new_stream(file_index, &pkt);
if (pkt->stream_index >= ifile->nb_streams) {
report_new_stream(file_index, pkt);
goto discard_packet;
}
ist = input_streams[ifile->ist_index + pkt.stream_index];
ist = input_streams[ifile->ist_index + pkt->stream_index];
ist->data_size += pkt.size;
ist->data_size += pkt->size;
ist->nb_packets++;
if (ist->discard)
goto discard_packet;
if (pkt.flags & AV_PKT_FLAG_CORRUPT) {
if (pkt->flags & AV_PKT_FLAG_CORRUPT) {
av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING,
"%s: corrupt input packet in stream %d\n", is->url, pkt.stream_index);
"%s: corrupt input packet in stream %d\n", is->url, pkt->stream_index);
if (exit_on_error)
exit_program(1);
}
@ -4602,11 +4644,11 @@ static int process_input(int file_index)
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s "
"next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
ifile->ist_index + pkt.stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(ist->next_dts), av_ts2timestr(ist->next_dts, &AV_TIME_BASE_Q),
av_ts2str(ist->next_pts), av_ts2timestr(ist->next_pts, &AV_TIME_BASE_Q),
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ist->st->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ist->st->time_base),
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
av_ts2str(input_files[ist->file_index]->ts_offset),
av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
}
@ -4636,12 +4678,12 @@ static int process_input(int file_index)
stime2= stime + (1ULL<<ist->st->pts_wrap_bits);
ist->wrap_correction_done = 1;
if(stime2 > stime && pkt.dts != AV_NOPTS_VALUE && pkt.dts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt.dts -= 1ULL<<ist->st->pts_wrap_bits;
if(stime2 > stime && pkt->dts != AV_NOPTS_VALUE && pkt->dts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt->dts -= 1ULL<<ist->st->pts_wrap_bits;
ist->wrap_correction_done = 0;
}
if(stime2 > stime && pkt.pts != AV_NOPTS_VALUE && pkt.pts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt.pts -= 1ULL<<ist->st->pts_wrap_bits;
if(stime2 > stime && pkt->pts != AV_NOPTS_VALUE && pkt->pts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt->pts -= 1ULL<<ist->st->pts_wrap_bits;
ist->wrap_correction_done = 0;
}
}
@ -4655,10 +4697,10 @@ static int process_input(int file_index)
if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
continue;
if (av_packet_get_side_data(&pkt, src_sd->type, NULL))
if (av_packet_get_side_data(pkt, src_sd->type, NULL))
continue;
dst_data = av_packet_new_side_data(&pkt, src_sd->type, src_sd->size);
dst_data = av_packet_new_side_data(pkt, src_sd->type, src_sd->size);
if (!dst_data)
exit_program(1);
@ -4666,17 +4708,17 @@ static int process_input(int file_index)
}
}
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts *= ist->ts_scale;
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts *= ist->ts_scale;
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts *= ist->ts_scale;
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts *= ist->ts_scale;
pkt_dts = av_rescale_q_rnd(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if ((ist->dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
pkt_dts != AV_NOPTS_VALUE && ist->next_dts == AV_NOPTS_VALUE && !copy_ts
@ -4688,27 +4730,27 @@ static int process_input(int file_index)
av_log(NULL, AV_LOG_DEBUG,
"Inter stream timestamp discontinuity %"PRId64", new offset= %"PRId64"\n",
delta, ifile->ts_offset);
pkt.dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
}
}
duration = av_rescale_q(ifile->duration, ifile->time_base, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE) {
pkt.pts += duration;
ist->max_pts = FFMAX(pkt.pts, ist->max_pts);
ist->min_pts = FFMIN(pkt.pts, ist->min_pts);
if (pkt->pts != AV_NOPTS_VALUE) {
pkt->pts += duration;
ist->max_pts = FFMAX(pkt->pts, ist->max_pts);
ist->min_pts = FFMIN(pkt->pts, ist->min_pts);
}
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts += duration;
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts += duration;
pkt_dts = av_rescale_q_rnd(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if (copy_ts && pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
(is->iformat->flags & AVFMT_TS_DISCONT) && ist->st->pts_wrap_bits < 60) {
int64_t wrap_dts = av_rescale_q_rnd(pkt.dts + (1LL<<ist->st->pts_wrap_bits),
int64_t wrap_dts = av_rescale_q_rnd(pkt->dts + (1LL<<ist->st->pts_wrap_bits),
ist->st->time_base, AV_TIME_BASE_Q,
AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if (FFABS(wrap_dts - ist->next_dts) < FFABS(pkt_dts - ist->next_dts)/10)
@ -4731,46 +4773,51 @@ static int process_input(int file_index)
ist->file_index, ist->st->index, ist->st->id,
av_get_media_type_string(ist->dec_ctx->codec_type),
delta, ifile->ts_offset);
pkt.dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
}
} else {
if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
av_log(NULL, AV_LOG_WARNING, "DTS %"PRId64", next:%"PRId64" st:%d invalid dropping\n", pkt.dts, ist->next_dts, pkt.stream_index);
pkt.dts = AV_NOPTS_VALUE;
av_log(NULL, AV_LOG_WARNING, "DTS %"PRId64", next:%"PRId64" st:%d invalid dropping\n", pkt->dts, ist->next_dts, pkt->stream_index);
pkt->dts = AV_NOPTS_VALUE;
}
if (pkt.pts != AV_NOPTS_VALUE){
int64_t pkt_pts = av_rescale_q(pkt.pts, ist->st->time_base, AV_TIME_BASE_Q);
if (pkt->pts != AV_NOPTS_VALUE){
int64_t pkt_pts = av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
delta = pkt_pts - ist->next_dts;
if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
av_log(NULL, AV_LOG_WARNING, "PTS %"PRId64", next:%"PRId64" invalid dropping st:%d\n", pkt.pts, ist->next_dts, pkt.stream_index);
pkt.pts = AV_NOPTS_VALUE;
av_log(NULL, AV_LOG_WARNING, "PTS %"PRId64", next:%"PRId64" invalid dropping st:%d\n", pkt->pts, ist->next_dts, pkt->stream_index);
pkt->pts = AV_NOPTS_VALUE;
}
}
}
}
if (pkt.dts != AV_NOPTS_VALUE)
ifile->last_ts = av_rescale_q(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q);
if (pkt->dts != AV_NOPTS_VALUE)
ifile->last_ts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
ifile->ist_index + pkt.stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ist->st->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ist->st->time_base),
ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
av_ts2str(input_files[ist->file_index]->ts_offset),
av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
}
sub2video_heartbeat(ist, pkt.pts);
sub2video_heartbeat(ist, pkt->pts);
process_input_packet(ist, &pkt, 0);
process_input_packet(ist, pkt, 0);
discard_packet:
av_packet_unref(&pkt);
#if HAVE_THREADS
if (ifile->thread_queue_size)
av_packet_free(&pkt);
else
#endif
av_packet_unref(pkt);
return 0;
}
@ -4942,7 +4989,7 @@ static int transcode(void)
goto fail;
#endif
while (!received_sigterm && !cancelRequested(sessionId)) {
while (!received_sigterm && !cancelRequested(globalSessionId)) {
int64_t cur_time= av_gettime_relative();
/* if 'q' pressed, exits */
@ -5198,6 +5245,7 @@ int ffmpeg_execute(int argc, char **argv)
{ "report", 0, { .func_arg = opt_report }, "generate a report" },
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
{ "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
#if CONFIG_AVDEVICE
@ -5680,10 +5728,10 @@ int ffmpeg_execute(int argc, char **argv)
if ((decode_error_stat[0] + decode_error_stat[1]) * max_error_rate < decode_error_stat[1])
exit_program(69);
exit_program((received_nb_signals || cancelRequested(sessionId))? 255 : main_ffmpeg_return_code);
exit_program((received_nb_signals || cancelRequested(globalSessionId))? 255 : main_ffmpeg_return_code);
} else {
main_ffmpeg_return_code = (received_nb_signals || cancelRequested(sessionId)) ? 255 : longjmp_value;
main_ffmpeg_return_code = (received_nb_signals || cancelRequested(globalSessionId)) ? 255 : longjmp_value;
}
return main_ffmpeg_return_code;

@ -54,6 +54,7 @@
#include "libavformat/avio.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/bsf.h"
#include "libavfilter/avfilter.h"
@ -83,7 +84,6 @@ enum HWAccelID {
HWACCEL_AUTO,
HWACCEL_GENERIC,
HWACCEL_VIDEOTOOLBOX,
HWACCEL_QSV,
};
typedef struct HWAccel {
@ -142,6 +142,7 @@ typedef struct OptionsContext {
int64_t input_ts_offset;
int loop;
int rate_emu;
float readrate;
int accurate_seek;
int thread_queue_size;
@ -330,14 +331,16 @@ typedef struct InputStream {
#define DECODING_FOR_FILTER 2
AVCodecContext *dec_ctx;
AVCodec *dec;
const AVCodec *dec;
AVFrame *decoded_frame;
AVFrame *filter_frame; /* a ref of decoded_frame, to be sent to filters */
AVPacket *pkt;
int64_t start; /* time when read started */
/* predicted dts of the next packet read for this stream or (when there are
* several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
int64_t next_dts;
int64_t first_dts; ///< dts of the first packet read for this stream (in AV_TIME_BASE units)
int64_t dts; ///< dts of the last packet read for this stream (in AV_TIME_BASE units)
int64_t next_pts; ///< synthetic pts for the next decode frame (in AV_TIME_BASE units)
@ -439,8 +442,11 @@ typedef struct InputFile {
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 */
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 */
@ -493,10 +499,11 @@ typedef struct OutputStream {
AVCodecContext *enc_ctx;
AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
AVCodec *enc;
const AVCodec *enc;
int64_t max_frames;
AVFrame *filtered_frame;
AVFrame *last_frame;
AVPacket *pkt;
int last_dropped;
int last_nb0_frames[3];
@ -522,6 +529,7 @@ typedef struct OutputStream {
char *forced_keyframes;
AVExpr *forced_keyframes_pexpr;
double forced_keyframes_expr_const_values[FKF_NB];
int dropped_keyframe;
/* audio only */
int *audio_channels_map; /* list of the channels id to pick from the source stream */
@ -757,8 +765,8 @@ void init_options(OptionsContext *o);
AVDictionary *strip_specifiers(AVDictionary *dict);
void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec);
int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o);
AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder);
AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st);
const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder);
const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st);
int open_input_file(OptionsContext *o, const char *filename);
int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s);
int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost);

@ -47,28 +47,23 @@
#include "libavutil/imgutils.h"
#include "libavutil/samplefmt.h"
static const enum AVPixelFormat *get_compliance_unofficial_pix_fmts(enum AVCodecID codec_id, const enum AVPixelFormat default_formats[])
// FIXME: YUV420P etc. are actually supported with full color range,
// yet the latter information isn't available here.
static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *codec, const enum AVPixelFormat default_formats[])
{
static const enum AVPixelFormat mjpeg_formats[] =
{ AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P,
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
AV_PIX_FMT_NONE };
static const enum AVPixelFormat ljpeg_formats[] =
{ AV_PIX_FMT_BGR24 , AV_PIX_FMT_BGRA , AV_PIX_FMT_BGR0,
AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
AV_PIX_FMT_YUV420P , AV_PIX_FMT_YUV444P , AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE};
if (codec_id == AV_CODEC_ID_MJPEG) {
if (!strcmp(codec->name, "mjpeg")) {
return mjpeg_formats;
} else if (codec_id == AV_CODEC_ID_LJPEG) {
return ljpeg_formats;
} else {
return default_formats;
}
}
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const AVCodec *codec, enum AVPixelFormat target)
enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx,
const AVCodec *codec, enum AVPixelFormat target)
{
if (codec && codec->pix_fmts) {
const enum AVPixelFormat *p = codec->pix_fmts;
@ -77,11 +72,11 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const
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) {
p = get_compliance_unofficial_pix_fmts(enc_ctx->codec_id, p);
if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_normal_pix_fmts(codec, p);
}
for (; *p != AV_PIX_FMT_NONE; p++) {
best= avcodec_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL);
best = av_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL);
if (*p == target)
break;
}
@ -98,29 +93,6 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const
return target;
}
void choose_sample_fmt(AVStream *st, const AVCodec *codec)
{
if (codec && codec->sample_fmts) {
const enum AVSampleFormat *p = codec->sample_fmts;
for (; *p != -1; p++) {
if (*p == st->codecpar->format)
break;
}
if (*p == -1) {
const AVCodecDescriptor *desc = avcodec_descriptor_get(codec->id);
if(desc && (desc->props & AV_CODEC_PROP_LOSSLESS) && av_get_sample_fmt_name(st->codecpar->format) > av_get_sample_fmt_name(codec->sample_fmts[0]))
av_log(NULL, AV_LOG_ERROR, "Conversion will not be lossless.\n");
if(av_get_sample_fmt_name(st->codecpar->format))
av_log(NULL, AV_LOG_WARNING,
"Incompatible sample format '%s' for codec '%s', auto-selecting format '%s'\n",
av_get_sample_fmt_name(st->codecpar->format),
codec->name,
av_get_sample_fmt_name(codec->sample_fmts[0]));
st->codecpar->format = codec->sample_fmts[0];
}
}
}
static char *choose_pix_fmts(OutputFilter *ofilter)
{
OutputStream *ost = ofilter->ost;
@ -148,8 +120,8 @@ static char *choose_pix_fmts(OutputFilter *ofilter)
exit_program(1);
p = ost->enc->pix_fmts;
if (ost->enc_ctx->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_unofficial_pix_fmts(ost->enc_ctx->codec_id, p);
if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_normal_pix_fmts(ost->enc, p);
}
for (; *p != AV_PIX_FMT_NONE; p++) {
@ -163,45 +135,39 @@ static char *choose_pix_fmts(OutputFilter *ofilter)
return NULL;
}
/* Define a function for building a string containing a list of
* allowed formats. */
#define DEF_CHOOSE_FORMAT(suffix, type, var, supported_list, none, get_name) \
static char *choose_ ## suffix (OutputFilter *ofilter) \
/* Define a function for appending a list of allowed formats
* to an AVBPrint. If nonempty, the list will have a header. */
#define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, printf_format, get_name) \
static void choose_ ## name (OutputFilter *ofilter, AVBPrint *bprint) \
{ \
if (ofilter->var == none && !ofilter->supported_list) \
return; \
av_bprintf(bprint, #name "="); \
if (ofilter->var != none) { \
get_name(ofilter->var); \
return av_strdup(name); \
} else if (ofilter->supported_list) { \
av_bprintf(bprint, printf_format, get_name(ofilter->var)); \
} else { \
const type *p; \
AVIOContext *s = NULL; \
uint8_t *ret; \
int len; \
\
if (avio_open_dyn_buf(&s) < 0) \
exit_program(1); \
\
for (p = ofilter->supported_list; *p != none; p++) { \
get_name(*p); \
avio_printf(s, "%s|", name); \
av_bprintf(bprint, printf_format "|", get_name(*p)); \
} \
len = avio_close_dyn_buf(s, &ret); \
ret[len - 1] = 0; \
return ret; \
} else \
return NULL; \
if (bprint->len > 0) \
bprint->str[--bprint->len] = '\0'; \
} \
av_bprint_chars(bprint, ':', 1); \
}
//DEF_CHOOSE_FORMAT(pix_fmts, enum AVPixelFormat, format, formats, AV_PIX_FMT_NONE,
// GET_PIX_FMT_NAME)
DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats,
AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME)
AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name)
DEF_CHOOSE_FORMAT(sample_rates, int, sample_rate, sample_rates, 0,
GET_SAMPLE_RATE_NAME)
"%d", )
DEF_CHOOSE_FORMAT(channel_layouts, uint64_t, channel_layout, channel_layouts, 0,
GET_CH_LAYOUT_NAME)
"0x%"PRIx64, )
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
{
@ -505,8 +471,7 @@ static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter,
if ((pix_fmts = choose_pix_fmts(ofilter))) {
AVFilterContext *filter;
snprintf(name, sizeof(name), "format_out_%d_%d",
ost->file_index, ost->index);
ret = avfilter_graph_create_filter(&filter,
avfilter_get_by_name("format"),
"format", pix_fmts, NULL, fg->graph);
@ -561,7 +526,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
AVCodecContext *codec = ost->enc_ctx;
AVFilterContext *last_filter = out->filter_ctx;
int pad_idx = out->pad_idx;
char *sample_fmts, *sample_rates, *channel_layouts;
AVBPrint args;
char name[255];
int ret;
@ -584,72 +549,58 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
avfilter_get_by_name(filter_name), \
filter_name, arg, NULL, fg->graph); \
if (ret < 0) \
return ret; \
goto fail; \
\
ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \
if (ret < 0) \
return ret; \
goto fail; \
\
last_filter = filt_ctx; \
pad_idx = 0; \
} while (0)
av_bprint_init(&args, 0, AV_BPRINT_SIZE_UNLIMITED);
if (ost->audio_channels_mapped) {
int i;
AVBPrint pan_buf;
av_bprint_init(&pan_buf, 256, 8192);
av_bprintf(&pan_buf, "0x%"PRIx64,
av_bprintf(&args, "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]);
av_bprintf(&args, "|c%d=c%d", i, ost->audio_channels_map[i]);
AUTO_INSERT_FILTER("-map_channel", "pan", pan_buf.str);
av_bprint_finalize(&pan_buf, NULL);
AUTO_INSERT_FILTER("-map_channel", "pan", args.str);
av_bprint_clear(&args);
}
if (codec->channels && !codec->channel_layout)
codec->channel_layout = av_get_default_channel_layout(codec->channels);
sample_fmts = choose_sample_fmts(ofilter);
sample_rates = choose_sample_rates(ofilter);
channel_layouts = choose_channel_layouts(ofilter);
if (sample_fmts || sample_rates || channel_layouts) {
choose_sample_fmts(ofilter, &args);
choose_sample_rates(ofilter, &args);
choose_channel_layouts(ofilter, &args);
if (!av_bprint_is_complete(&args)) {
ret = AVERROR(ENOMEM);
goto fail;
}
if (args.len) {
AVFilterContext *format;
char args[256];
args[0] = 0;
if (sample_fmts)
av_strlcatf(args, sizeof(args), "sample_fmts=%s:",
sample_fmts);
if (sample_rates)
av_strlcatf(args, sizeof(args), "sample_rates=%s:",
sample_rates);
if (channel_layouts)
av_strlcatf(args, sizeof(args), "channel_layouts=%s:",
channel_layouts);
av_freep(&sample_fmts);
av_freep(&sample_rates);
av_freep(&channel_layouts);
snprintf(name, sizeof(name), "format_out_%d_%d",
ost->file_index, ost->index);
ret = avfilter_graph_create_filter(&format,
avfilter_get_by_name("aformat"),
name, args, NULL, fg->graph);
name, args.str, NULL, fg->graph);
if (ret < 0)
return ret;
goto fail;
ret = avfilter_link(last_filter, pad_idx, format, 0);
if (ret < 0)
return ret;
goto fail;
last_filter = format;
pad_idx = 0;
}
if (ost->apad && of->shortest) {
char args[256];
int i;
for (i=0; i<of->ctx->nb_streams; i++)
@ -657,8 +608,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
break;
if (i<of->ctx->nb_streams) {
snprintf(args, sizeof(args), "%s", ost->apad);
AUTO_INSERT_FILTER("-apad", "apad", args);
AUTO_INSERT_FILTER("-apad", "apad", ost->apad);
}
}
@ -667,15 +617,18 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
ret = insert_trim(of->start_time, of->recording_time,
&last_filter, &pad_idx, name);
if (ret < 0)
return ret;
goto fail;
if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0)
return ret;
goto fail;
fail:
av_bprint_finalize(&args, NULL);
return 0;
return ret;
}
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter,
AVFilterInOut *out)
{
if (!ofilter->ost) {
av_log(NULL, AV_LOG_FATAL, "Filter %s has an unconnected output\n", ofilter->name);
@ -685,7 +638,7 @@ int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOu
switch (avfilter_pad_get_type(out->filter_ctx->output_pads, out->pad_idx)) {
case AVMEDIA_TYPE_VIDEO: return configure_output_video_filter(fg, ofilter, out);
case AVMEDIA_TYPE_AUDIO: return configure_output_audio_filter(fg, ofilter, out);
default: av_assert0(0);
default: av_assert0(0); return 0;
}
}
@ -995,7 +948,7 @@ static int configure_input_filter(FilterGraph *fg, InputFilter *ifilter,
switch (avfilter_pad_get_type(in->filter_ctx->input_pads, in->pad_idx)) {
case AVMEDIA_TYPE_VIDEO: return configure_input_video_filter(fg, ifilter, in);
case AVMEDIA_TYPE_AUDIO: return configure_input_audio_filter(fg, ifilter, in);
default: av_assert0(0);
default: av_assert0(0); return 0;
}
}
@ -1034,7 +987,11 @@ int configure_filtergraph(FilterGraph *fg)
}
if (strlen(args))
args[strlen(args)-1] = 0;
fg->graph->scale_sws_opts = av_strdup(args);
if (!strncmp(args, "sws_flags=", 10)) {
// keep the 'flags=' part
fg->graph->scale_sws_opts = av_strdup(args+4);
}
args[0] = 0;
while ((e = av_dict_get(ost->swr_opts, "", e,

@ -348,6 +348,18 @@ int hw_device_setup_for_decode(InputStream *ist)
} else if (ist->hwaccel_id == HWACCEL_GENERIC) {
type = ist->hwaccel_device_type;
dev = hw_device_get_by_type(type);
// When "-qsv_device device" is used, an internal QSV device named
// as "__qsv_device" is created. Another QSV device is created too
// if "-init_hw_device qsv=name:device" is used. There are 2 QSV devices
// if both "-qsv_device device" and "-init_hw_device qsv=name:device"
// are used, hw_device_get_by_type(AV_HWDEVICE_TYPE_QSV) returns NULL.
// To keep back-compatibility with the removed ad-hoc libmfx setup code,
// call hw_device_get_by_name("__qsv_device") to select the internal QSV
// device.
if (!dev && type == AV_HWDEVICE_TYPE_QSV)
dev = hw_device_get_by_name("__qsv_device");
if (!dev)
err = hw_device_init_from_type(type, NULL, &dev);
} else {

@ -45,6 +45,7 @@
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/bsf.h"
#include "libavfilter/avfilter.h"
@ -154,9 +155,6 @@ static const char *const opt_name_enc_time_bases[] = {"enc_time_base"
const HWAccel hwaccels[] = {
#if CONFIG_VIDEOTOOLBOX
{ "videotoolbox", videotoolbox_init, HWACCEL_VIDEOTOOLBOX, AV_PIX_FMT_VIDEOTOOLBOX },
#endif
#if CONFIG_LIBMFX
{ "qsv", qsv_init, HWACCEL_QSV, AV_PIX_FMT_QSV },
#endif
{ 0 },
};
@ -204,6 +202,7 @@ __thread int input_sync;
__thread int input_stream_potentially_available = 0;
__thread int ignore_unknown_streams = 0;
__thread int copy_unknown_streams = 0;
__thread static int recast_media = 0;
__thread int find_stream_info = 1;
extern __thread OptionDef *ffmpeg_options;
@ -589,6 +588,23 @@ int opt_vaapi_device(void *optctx, const char *opt, const char *arg)
}
#endif
#if CONFIG_QSV
static int opt_qsv_device(void *optctx, const char *opt, const char *arg)
{
const char *prefix = "qsv=__qsv_device:hw_any,child_device=";
int err;
char *tmp = av_asprintf("%s%s", prefix, arg);
if (!tmp)
return AVERROR(ENOMEM);
err = hw_device_init_from_string(tmp, NULL);
av_free(tmp);
return err;
}
#endif
int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
{
if (!strcmp(arg, "list")) {
@ -757,11 +773,11 @@ int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
return 0;
}
AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
{
const AVCodecDescriptor *desc;
const char *codec_string = encoder ? "encoder" : "decoder";
AVCodec *codec;
const AVCodec *codec;
codec = encoder ?
avcodec_find_encoder_by_name(name) :
@ -779,21 +795,23 @@ AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
av_log(NULL, AV_LOG_FATAL, "Unknown %s '%s'\n", codec_string, name);
exit_program(1);
}
if (codec->type != type) {
if (codec->type != type && !recast_media) {
av_log(NULL, AV_LOG_FATAL, "Invalid %s type '%s'\n", codec_string, name);
exit_program(1);
}
return codec;
}
AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
{
char *codec_name = NULL;
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st);
if (codec_name) {
AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
st->codecpar->codec_id = codec->id;
if (recast_media && st->codecpar->codec_type != codec->type)
st->codecpar->codec_type = codec->type;
return codec;
} else
return avcodec_find_decoder(st->codecpar->codec_id);
@ -829,6 +847,7 @@ void add_input_streams(OptionsContext *o, AVFormatContext *ic)
ist->discard = 1;
st->discard = AVDISCARD_ALL;
ist->nb_samples = 0;
ist->first_dts = AV_NOPTS_VALUE;
ist->min_pts = INT64_MAX;
ist->max_pts = INT64_MIN;
@ -913,6 +932,12 @@ void add_input_streams(OptionsContext *o, AVFormatContext *ic)
"with old commandlines. This behaviour is DEPRECATED and will be removed "
"in the future. Please explicitly set \"-hwaccel_output_format cuda\".\n");
ist->hwaccel_output_format = AV_PIX_FMT_CUDA;
} else if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel, "qsv")) {
av_log(NULL, AV_LOG_WARNING,
"WARNING: defaulting hwaccel_output_format to qsv for compatibility "
"with old commandlines. This behaviour is DEPRECATED and will be removed "
"in the future. Please explicitly set \"-hwaccel_output_format qsv\".\n");
ist->hwaccel_output_format = AV_PIX_FMT_QSV;
} else if (hwaccel_output_format) {
ist->hwaccel_output_format = av_get_pix_fmt(hwaccel_output_format);
if (ist->hwaccel_output_format == AV_PIX_FMT_NONE) {
@ -1088,7 +1113,7 @@ int open_input_file(OptionsContext *o, const char *filename)
{
InputFile *f;
AVFormatContext *ic;
AVInputFormat *file_iformat = NULL;
const AVInputFormat *file_iformat = NULL;
int err, i, ret;
int64_t timestamp;
AVDictionary *unused_opts = NULL;
@ -1137,20 +1162,22 @@ int open_input_file(OptionsContext *o, const char *filename)
av_dict_set_int(&o->g->format_opts, "sample_rate", o->audio_sample_rate[o->nb_audio_sample_rate - 1].u.i, 0);
}
if (o->nb_audio_channels) {
const AVClass *priv_class;
/* because we set audio_channels based on both the "ac" and
* "channel_layout" options, we need to check that the specified
* demuxer actually has the "channels" option before setting it */
if (file_iformat && file_iformat->priv_class &&
av_opt_find(&file_iformat->priv_class, "channels", NULL, 0,
if (file_iformat && (priv_class = file_iformat->priv_class) &&
av_opt_find(&priv_class, "channels", NULL, 0,
AV_OPT_SEARCH_FAKE_OBJ)) {
av_dict_set_int(&o->g->format_opts, "channels", o->audio_channels[o->nb_audio_channels - 1].u.i, 0);
}
}
if (o->nb_frame_rates) {
const AVClass *priv_class;
/* set the format-level framerate option;
* this is important for video grabbers, e.g. x11 */
if (file_iformat && file_iformat->priv_class &&
av_opt_find(&file_iformat->priv_class, "framerate", NULL, 0,
if (file_iformat && (priv_class = file_iformat->priv_class) &&
av_opt_find(&priv_class, "framerate", NULL, 0,
AV_OPT_SEARCH_FAKE_OBJ)) {
av_dict_set(&o->g->format_opts, "framerate",
o->frame_rates[o->nb_frame_rates - 1].u.str, 0);
@ -1300,6 +1327,20 @@ int open_input_file(OptionsContext *o, const char *filename)
f->loop = o->loop;
f->duration = 0;
f->time_base = (AVRational){ 1, 1 };
f->readrate = o->readrate ? o->readrate : 0.0;
if (f->readrate < 0.0f) {
av_log(NULL, AV_LOG_ERROR, "Option -readrate for Input #%d is %0.3f; it must be non-negative.\n", nb_input_files, f->readrate);
exit_program(1);
}
if (f->readrate && f->rate_emu) {
av_log(NULL, AV_LOG_WARNING, "Both -readrate and -re set for Input #%d. Using -readrate %0.3f.\n", nb_input_files, f->readrate);
f->rate_emu = 0;
}
f->pkt = av_packet_alloc();
if (!f->pkt)
exit_program(1);
#if HAVE_THREADS
f->thread_queue_size = o->thread_queue_size;
#endif
@ -1591,7 +1632,7 @@ OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVM
ost->max_muxing_queue_size = 128;
MATCH_PER_STREAM_OPT(max_muxing_queue_size, i, ost->max_muxing_queue_size, oc, st);
ost->max_muxing_queue_size *= sizeof(AVPacket);
ost->max_muxing_queue_size *= sizeof(ost->pkt);
ost->muxing_queue_data_size = 0;
@ -2259,22 +2300,34 @@ int open_output_file(OptionsContext *o, const char *filename)
if (!o->video_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_VIDEO) != AV_CODEC_ID_NONE) {
int best_score = 0, idx = -1;
int qcr = avformat_query_codec(oc->oformat, oc->oformat->video_codec, 0);
for (i = 0; i < nb_input_streams; i++) {
int score;
ist = input_streams[i];
score = ist->st->codecpar->width * ist->st->codecpar->height
for (j = 0; j < nb_input_files; j++) {
InputFile *ifile = input_files[j];
int file_best_score = 0, file_best_idx = -1;
for (i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[ifile->ist_index + i];
score = ist->st->codecpar->width * ist->st->codecpar->height
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
score = 1;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
score > best_score) {
if((qcr==MKTAG('A', 'P', 'I', 'C')) && !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
best_score = score;
idx = i;
if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
score = 1;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
score > file_best_score) {
if((qcr==MKTAG('A', 'P', 'I', 'C')) && !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
continue;
file_best_score = score;
file_best_idx = ifile->ist_index + i;
}
}
if (file_best_idx >= 0) {
if((qcr == MKTAG('A', 'P', 'I', 'C')) || !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
if (file_best_score > best_score) {
best_score = file_best_score;
idx = file_best_idx;
}
}
}
if (idx >= 0)
@ -2284,17 +2337,29 @@ int open_output_file(OptionsContext *o, const char *filename)
/* audio: most channels */
if (!o->audio_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_AUDIO) != AV_CODEC_ID_NONE) {
int best_score = 0, idx = -1;
for (i = 0; i < nb_input_streams; i++) {
for (j = 0; j < nb_input_files; j++) {
InputFile *ifile = input_files[j];
int file_best_score = 0, file_best_idx = -1;
for (i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[i];
score = ist->st->codecpar->channels + 100000000*!!ist->st->codec_info_nb_frames
ist = input_streams[ifile->ist_index + i];
score = ist->st->codecpar->channels
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
score > best_score) {
best_score = score;
idx = i;
score > file_best_score) {
file_best_score = score;
file_best_idx = ifile->ist_index + i;
}
}
if (file_best_idx >= 0) {
file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
if (file_best_score > best_score) {
best_score = file_best_score;
idx = file_best_idx;
}
}
}
if (idx >= 0)
@ -2457,19 +2522,6 @@ loop_end:
avio_closep(&pb);
}
#if FF_API_LAVF_AVCTX
for (i = nb_output_streams - oc->nb_streams; i < nb_output_streams; i++) { //for all streams of this output file
AVDictionaryEntry *e;
ost = output_streams[i];
if ((ost->stream_copy || ost->attachment_filename)
&& (e = av_dict_get(o->g->codec_opts, "flags", NULL, AV_DICT_IGNORE_SUFFIX))
&& (!e->key[5] || check_stream_specifier(oc, ost->st, e->key+6)))
if (av_opt_set(ost->st->codec, "flags", e->value, 0) < 0)
exit_program(1);
}
#endif
if (!oc->nb_streams && !(oc->oformat->flags & AVFMT_NOSTREAMS)) {
av_dump_format(oc, nb_output_files - 1, oc->url, 1);
av_log(NULL, AV_LOG_ERROR, "Output file #%d does not contain any stream\n", nb_output_files - 1);

@ -40,6 +40,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
#include "libavutil/hash.h"
#include "libavutil/hdr_dynamic_metadata.h"
@ -122,6 +123,11 @@ __thread int use_byte_value_binary_prefix = 0;
__thread int use_value_sexagesimal_format = 0;
__thread int show_private_data = 1;
#define SHOW_OPTIONAL_FIELDS_AUTO -1
#define SHOW_OPTIONAL_FIELDS_NEVER 0
#define SHOW_OPTIONAL_FIELDS_ALWAYS 1
__thread int show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO;
__thread char *print_format;
__thread char *stream_specifier;
__thread char *show_data_hash;
@ -260,7 +266,7 @@ __thread OptionDef *ffprobe_options = NULL;
/* FFprobe context */
__thread const char *input_filename;
__thread const char *print_input_filename;
__thread AVInputFormat *iformat = NULL;
__thread const AVInputFormat *iformat = NULL;
__thread struct AVHashContext *hash;
@ -751,8 +757,10 @@ static inline int writer_print_string(WriterContext *wctx,
const struct section *section = wctx->section[wctx->level];
int ret = 0;
if ((flags & PRINT_STRING_OPT)
&& !(wctx->writer->flags & WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS))
if (show_optional_fields == SHOW_OPTIONAL_FIELDS_NEVER ||
(show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO
&& (flags & PRINT_STRING_OPT)
&& !(wctx->writer->flags & WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS)))
return 0;
if (section->show_all_entries || av_dict_get(section->entries_to_show, key, NULL, 0)) {
@ -1666,36 +1674,11 @@ static av_cold int xml_init(WriterContext *wctx)
CHECK_COMPLIANCE(show_private_data, "private");
CHECK_COMPLIANCE(show_value_unit, "unit");
CHECK_COMPLIANCE(use_value_prefix, "prefix");
if (do_show_frames && do_show_packets) {
av_log(wctx, AV_LOG_ERROR,
"Interleaved frames and packets are not allowed in XSD. "
"Select only one between the -show_frames and the -show_packets options.\n");
return AVERROR(EINVAL);
}
}
return 0;
}
static const char *xml_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
{
const char *p;
for (p = src; *p; p++) {
switch (*p) {
case '&' : av_bprintf(dst, "%s", "&amp;"); break;
case '<' : av_bprintf(dst, "%s", "&lt;"); break;
case '>' : av_bprintf(dst, "%s", "&gt;"); break;
case '"' : av_bprintf(dst, "%s", "&quot;"); break;
case '\'': av_bprintf(dst, "%s", "&apos;"); break;
default: av_bprint_chars(dst, *p, 1);
}
}
return dst->str;
}
#define XML_INDENT() av_log(NULL, AV_LOG_STDERR, "%*c", xml->indent_level * 4, ' ')
static void xml_print_section_header(WriterContext *wctx)
@ -1706,9 +1689,9 @@ static void xml_print_section_header(WriterContext *wctx)
wctx->section[wctx->level-1] : NULL;
if (wctx->level == 0) {
const char *qual = " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
"xmlns:ffprobe='http://www.ffmpeg.org/schema/ffprobe' "
"xsi:schemaLocation='http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd'";
const char *qual = " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xmlns:ffprobe=\"http://www.ffmpeg.org/schema/ffprobe\" "
"xsi:schemaLocation=\"http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd\"";
av_log(NULL, AV_LOG_STDERR, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
av_log(NULL, AV_LOG_STDERR, "<%sffprobe%s>\n",
@ -1767,14 +1750,22 @@ static void xml_print_str(WriterContext *wctx, const char *key, const char *valu
if (section->flags & SECTION_FLAG_HAS_VARIABLE_FIELDS) {
XML_INDENT();
av_bprint_escape(&buf, key, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, "<%s key=\"%s\"",
section->element_name, xml_escape_str(&buf, key, wctx));
section->element_name, buf.str);
av_bprint_clear(&buf);
av_log(NULL, AV_LOG_STDERR, " value=\"%s\"/>\n", xml_escape_str(&buf, value, wctx));
av_bprint_escape(&buf, value, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, " value=\"%s\"/>\n", buf.str);
} else {
if (wctx->nb_item[wctx->level])
av_log(NULL, AV_LOG_STDERR, " ");
av_log(NULL, AV_LOG_STDERR, "%s=\"%s\"", key, xml_escape_str(&buf, value, wctx));
av_bprint_escape(&buf, value, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, "%s=\"%s\"", key, buf.str);
}
av_bprint_finalize(&buf, NULL);
@ -2040,6 +2031,23 @@ static void print_pkt_side_data(WriterContext *w,
print_int("el_present_flag", dovi->el_present_flag);
print_int("bl_present_flag", dovi->bl_present_flag);
print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id);
} else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) {
enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data;
print_int("service_type", *t);
} else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) {
print_int("id", *sd->data);
} else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) {
const AVCPBProperties *prop = (AVCPBProperties *)sd->data;
print_int("max_bitrate", prop->max_bitrate);
print_int("min_bitrate", prop->min_bitrate);
print_int("avg_bitrate", prop->avg_bitrate);
print_int("buffer_size", prop->buffer_size);
print_int("vbv_delay", prop->vbv_delay);
} else if (sd->type == AV_PKT_DATA_WEBVTT_IDENTIFIER ||
sd->type == AV_PKT_DATA_WEBVTT_SETTINGS) {
if (do_show_data)
writer_print_data(w, "data", sd->data, sd->size);
writer_print_data_hash(w, "data_hash", sd->data, sd->size);
}
writer_print_section_footer(w);
}
@ -2169,8 +2177,6 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
print_time("dts_time", pkt->dts, &st->time_base);
print_duration_ts("duration", pkt->duration);
print_duration_time("duration_time", pkt->duration, &st->time_base);
print_duration_ts("convergence_duration", pkt->convergence_duration);
print_duration_time("convergence_duration_time", pkt->convergence_duration, &st->time_base);
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");
@ -2178,7 +2184,7 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_');
if (pkt->side_data_elems) {
int size;
size_t size;
const uint8_t *side_metadata;
side_metadata = av_packet_get_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, &size);
@ -2243,8 +2249,8 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
else print_str_opt("media_type", "unknown");
print_int("stream_index", stream->index);
print_int("key_frame", frame->key_frame);
print_ts ("pkt_pts", frame->pts);
print_time("pkt_pts_time", frame->pts, &stream->time_base);
print_ts ("pts", frame->pts);
print_time("pts_time", frame->pts, &stream->time_base);
print_ts ("pkt_dts", frame->pkt_dts);
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
@ -2469,14 +2475,12 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
const ReadInterval *interval, int64_t *cur_ts)
{
AVFormatContext *fmt_ctx = ifile->fmt_ctx;
AVPacket pkt;
AVPacket *pkt = NULL;
AVFrame *frame = NULL;
int ret = 0, i = 0, frame_count = 0;
int64_t start = -INT64_MAX, end = interval->end;
int has_start = 0, has_end = interval->has_end && !interval->end_is_offset;
av_init_packet(&pkt);
av_log(NULL, AV_LOG_VERBOSE, "Processing read interval ");
log_read_interval(interval, NULL, AV_LOG_VERBOSE);
@ -2509,18 +2513,23 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
ret = AVERROR(ENOMEM);
goto end;
}
while (!av_read_frame(fmt_ctx, &pkt)) {
pkt = av_packet_alloc();
if (!pkt) {
ret = AVERROR(ENOMEM);
goto end;
}
while (!av_read_frame(fmt_ctx, pkt)) {
if (fmt_ctx->nb_streams > nb_streams) {
REALLOCZ_ARRAY_STREAM(nb_streams_frames, nb_streams, fmt_ctx->nb_streams);
REALLOCZ_ARRAY_STREAM(nb_streams_packets, nb_streams, fmt_ctx->nb_streams);
REALLOCZ_ARRAY_STREAM(selected_streams, nb_streams, fmt_ctx->nb_streams);
nb_streams = fmt_ctx->nb_streams;
}
if (selected_streams[pkt.stream_index]) {
AVRational tb = ifile->streams[pkt.stream_index].st->time_base;
if (selected_streams[pkt->stream_index]) {
AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
if (pkt.pts != AV_NOPTS_VALUE)
*cur_ts = av_rescale_q(pkt.pts, tb, AV_TIME_BASE_Q);
if (pkt->pts != AV_NOPTS_VALUE)
*cur_ts = av_rescale_q(pkt->pts, tb, AV_TIME_BASE_Q);
if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
start = *cur_ts;
@ -2542,26 +2551,27 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
frame_count++;
if (do_read_packets) {
if (do_show_packets)
show_packet(w, ifile, &pkt, i++);
nb_streams_packets[pkt.stream_index]++;
show_packet(w, ifile, pkt, i++);
nb_streams_packets[pkt->stream_index]++;
}
if (do_read_frames) {
int packet_new = 1;
while (process_frame(w, ifile, frame, &pkt, &packet_new) > 0);
while (process_frame(w, ifile, frame, pkt, &packet_new) > 0);
}
}
av_packet_unref(&pkt);
av_packet_unref(pkt);
}
av_packet_unref(&pkt);
av_packet_unref(pkt);
//Flush remaining frames that are cached in the decoder
for (i = 0; i < fmt_ctx->nb_streams; i++) {
pkt.stream_index = i;
pkt->stream_index = i;
if (do_read_frames)
while (process_frame(w, ifile, frame, &pkt, &(int){1}) > 0);
while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
}
end:
av_frame_free(&frame);
av_packet_free(&pkt);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Could not read packets in interval ");
log_read_interval(interval, NULL, AV_LOG_ERROR);
@ -2637,10 +2647,6 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
s = av_get_media_type_string(par->codec_type);
if (s) print_str ("codec_type", s);
else print_str_opt("codec_type", "unknown");
#if FF_API_LAVF_AVCTX
if (dec_ctx)
print_q("codec_time_base", dec_ctx->time_base, '/');
#endif
/* print AVI/FourCC tag */
print_str("codec_tag_string", av_fourcc2str(par->codec_tag));
@ -2650,13 +2656,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
case AVMEDIA_TYPE_VIDEO:
print_int("width", par->width);
print_int("height", par->height);
#if FF_API_LAVF_AVCTX
if (dec_ctx) {
print_int("coded_width", dec_ctx->coded_width);
print_int("coded_height", dec_ctx->coded_height);
print_int("closed_captions", !!(dec_ctx->properties & FF_CODEC_PROPERTY_CLOSED_CAPTIONS));
}
#endif
print_int("has_b_frames", par->video_delay);
sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, NULL);
if (sar.num) {
@ -2694,15 +2698,6 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
else
print_str_opt("field_order", "unknown");
#if FF_API_PRIVATE_OPT
if (dec_ctx && dec_ctx->timecode_frame_start >= 0) {
char tcbuf[AV_TIMECODE_STR_SIZE];
av_timecode_make_mpeg_tc_string(tcbuf, dec_ctx->timecode_frame_start);
print_str("timecode", tcbuf);
} else {
print_str_opt("timecode", "N/A");
}
#endif
if (dec_ctx)
print_int("refs", dec_ctx->refs);
break;
@ -2741,7 +2736,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
const AVOption *opt = NULL;
while ((opt = av_opt_next(dec_ctx->priv_data,opt))) {
uint8_t *str;
if (opt->flags) continue;
if (!(opt->flags & AV_OPT_FLAG_EXPORT)) continue;
if (av_opt_get(dec_ctx->priv_data, opt->name, 0, &str) >= 0) {
print_str(opt->name, str);
av_free(str);
@ -2760,10 +2755,10 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
print_time("duration", stream->duration, &stream->time_base);
if (par->bit_rate > 0) print_val ("bit_rate", par->bit_rate, unit_bit_per_second_str);
else print_str_opt("bit_rate", "N/A");
#if FF_API_LAVF_AVCTX
if (stream->codec->rc_max_rate > 0) print_val ("max_bit_rate", stream->codec->rc_max_rate, unit_bit_per_second_str);
else print_str_opt("max_bit_rate", "N/A");
#endif
if (dec_ctx && dec_ctx->rc_max_rate > 0)
print_val ("max_bit_rate", dec_ctx->rc_max_rate, unit_bit_per_second_str);
else
print_str_opt("max_bit_rate", "N/A");
if (dec_ctx && dec_ctx->bits_per_raw_sample > 0) print_fmt("bits_per_raw_sample", "%d", dec_ctx->bits_per_raw_sample);
else print_str_opt("bits_per_raw_sample", "N/A");
if (stream->nb_frames) print_fmt ("nb_frames", "%"PRId64, stream->nb_frames);
@ -2775,8 +2770,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
if (do_show_data)
writer_print_data(w, "extradata", par->extradata,
par->extradata_size);
writer_print_data_hash(w, "extradata_hash", par->extradata,
if (par->extradata_size > 0) {
writer_print_data_hash(w, "extradata_hash", par->extradata,
par->extradata_size);
}
/* Print disposition information */
#define PRINT_DISPOSITION(flagname, name) do { \
@ -2797,6 +2795,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
PRINT_DISPOSITION(CLEAN_EFFECTS, "clean_effects");
PRINT_DISPOSITION(ATTACHED_PIC, "attached_pic");
PRINT_DISPOSITION(TIMED_THUMBNAILS, "timed_thumbnails");
PRINT_DISPOSITION(CAPTIONS, "captions");
PRINT_DISPOSITION(DESCRIPTIONS, "descriptions");
PRINT_DISPOSITION(METADATA, "metadata");
PRINT_DISPOSITION(DEPENDENT, "dependent");
PRINT_DISPOSITION(STILL_IMAGE, "still_image");
writer_print_section_footer(w);
}
@ -3016,7 +3019,7 @@ static int open_input_file(InputFile *ifile, const char *filename, const char *p
for (i = 0; i < fmt_ctx->nb_streams; i++) {
InputStream *ist = &ifile->streams[i];
AVStream *stream = fmt_ctx->streams[i];
AVCodec *codec;
const AVCodec *codec;
ist->st = stream;
@ -3054,12 +3057,6 @@ static int open_input_file(InputFile *ifile, const char *filename, const char *p
}
ist->dec_ctx->pkt_timebase = stream->time_base;
ist->dec_ctx->framerate = stream->avg_frame_rate;
#if FF_API_LAVF_AVCTX
ist->dec_ctx->properties = stream->codec->properties;
ist->dec_ctx->coded_width = stream->codec->coded_width;
ist->dec_ctx->coded_height = stream->codec->coded_height;
#endif
if (avcodec_open2(ist->dec_ctx, codec, &opts) < 0) {
av_log(NULL, AV_LOG_WARNING, "Could not open codec for input stream %d\n",
@ -3085,8 +3082,7 @@ static void close_input_file(InputFile *ifile)
/* close decoder for each stream */
for (i = 0; i < ifile->nb_streams; i++)
if (ifile->streams[i].st->codecpar->codec_id != AV_CODEC_ID_NONE)
avcodec_free_context(&ifile->streams[i].dec_ctx);
avcodec_free_context(&ifile->streams[i].dec_ctx);
av_freep(&ifile->streams);
ifile->nb_streams = 0;
@ -3259,9 +3255,6 @@ static void ffprobe_show_pixel_formats(WriterContext *w)
PRINT_PIX_FMT_FLAG(HWACCEL, "hwaccel");
PRINT_PIX_FMT_FLAG(PLANAR, "planar");
PRINT_PIX_FMT_FLAG(RGB, "rgb");
#if FF_API_PSEUDOPAL
PRINT_PIX_FMT_FLAG(PSEUDOPAL, "pseudopal");
#endif
PRINT_PIX_FMT_FLAG(ALPHA, "alpha");
writer_print_section_footer(w);
}
@ -3280,6 +3273,17 @@ static void ffprobe_show_pixel_formats(WriterContext *w)
writer_print_section_footer(w);
}
static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
{
if (!av_strcasecmp(arg, "always")) show_optional_fields = SHOW_OPTIONAL_FIELDS_ALWAYS;
else if (!av_strcasecmp(arg, "never")) show_optional_fields = SHOW_OPTIONAL_FIELDS_NEVER;
else if (!av_strcasecmp(arg, "auto")) show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO;
if (show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO && av_strcasecmp(arg, "auto"))
show_optional_fields = parse_number_or_die("show_optional_fields", arg, OPT_INT, SHOW_OPTIONAL_FIELDS_AUTO, SHOW_OPTIONAL_FIELDS_ALWAYS);
return 0;
}
static int opt_format(void *optctx, const char *opt, const char *arg)
{
iformat = av_find_input_format(arg);
@ -3743,6 +3747,7 @@ int ffprobe_execute(int argc, char **argv)
{ "report", 0, { .func_arg = opt_report }, "generate a report" },
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
{ "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
#if CONFIG_AVDEVICE
@ -3788,6 +3793,7 @@ int ffprobe_execute(int argc, char **argv)
{ "show_library_versions", 0, { .func_arg = &opt_show_library_versions }, "show library versions" },
{ "show_versions", 0, { .func_arg = &opt_show_versions }, "show program and library versions" },
{ "show_pixel_formats", 0, { .func_arg = &opt_show_pixel_formats }, "show pixel format descriptions" },
{ "show_optional_fields", HAS_ARG, { .func_arg = &opt_show_optional_fields }, "show optional fields" },
{ "show_private_data", OPT_BOOL, { &show_private_data }, "show private data" },
{ "private", OPT_BOOL, { &show_private_data }, "same as show_private_data" },
{ "bitexact", OPT_BOOL, {&do_bitexact}, "force bitexact output" },
@ -3825,7 +3831,6 @@ int ffprobe_execute(int argc, char **argv)
ffprobe_options = options;
parse_loglevel(argc, argv, options);
avformat_network_init();
init_opts();
#if CONFIG_AVDEVICE
avdevice_register_all();
#endif

@ -1,139 +0,0 @@
/*
* Copyright (c) 2020-2021 Taner Sener
*
* This file is part of FFmpegKit.
*
* FFmpegKit 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 3 of the License, or
* (at your option) any later version.
*
* FFmpegKit 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 FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
*/
#include <sys/stat.h>
#include <stdlib.h>
#include <unistd.h>
#include "config.h"
#include "libavformat/avformat.h"
#include "libavutil/avstring.h"
#include "saf_wrapper.h"
/** JNI wrapper in ffmpegkit.c */
void closeParcelFileDescriptor(int fd);
// in these wrappers, we call the original functions, so we remove the shadow defines
#undef avio_closep
#undef avformat_close_input
#undef avio_open
#undef avio_open2
#undef avformat_open_input
static int fd_read_packet(void* opaque, uint8_t* buf, int buf_size) {
return read(*(int*)opaque, buf, buf_size);
}
static int fd_write_packet(void* opaque, uint8_t* buf, int buf_size) {
return write(*(int*)opaque, buf, buf_size);
}
static int64_t fd_seek(void *opaque, int64_t offset, int whence) {
int *fd = opaque;
if (*fd < 0) {
return AVERROR(EINVAL);
}
int64_t ret;
if (whence == AVSEEK_SIZE) {
struct stat st;
ret = fstat(*fd, &st);
return ret < 0 ? AVERROR(errno) : (S_ISFIFO(st.st_mode) ? 0 : st.st_size);
}
ret = lseek(*fd, offset, whence);
return ret < 0 ? AVERROR(errno) : ret;
}
/*
* returns NULL if the filename is not of expected format (e.g. 'saf:72/video.md4')
*/
static AVIOContext *create_fd_avio_context(const char *filename, int flags) {
int fd = -1;
const char* fd_ptr = NULL;
if (av_strstart(filename, "saf:", &fd_ptr)) {
char *final;
fd = strtol(fd_ptr, &final, 10);
if (fd_ptr == final) { /* No digits found */
fd = -1;
}
}
if (fd >= 0) {
int *opaque = av_mallocz(sizeof(int));
*opaque = fd;
int write_flag = flags & AVIO_FLAG_WRITE ? 1 : 0;
return avio_alloc_context(av_malloc(4096), 4096, write_flag, opaque, fd_read_packet, write_flag ? fd_write_packet : NULL, fd_seek);
}
return NULL;
}
static void close_fd_avio_context(AVIOContext *ctx) {
if (ctx) {
if (fd_seek(ctx->opaque, 0, AVSEEK_SIZE) >= 0) {
int *fd = ctx->opaque;
closeParcelFileDescriptor(*fd);
av_freep(&fd);
}
ctx->opaque = NULL;
}
}
int android_avformat_open_input(AVFormatContext **ps, const char *filename,
ff_const59 AVInputFormat *fmt, AVDictionary **options) {
if (!(*ps) && !(*ps = avformat_alloc_context()))
return AVERROR(ENOMEM);
(*ps)->pb = create_fd_avio_context(filename, AVIO_FLAG_READ);
return avformat_open_input(ps, filename, fmt, options);
}
int android_avio_open2(AVIOContext **s, const char *filename, int flags,
const AVIOInterruptCB *int_cb, AVDictionary **options) {
AVIOContext *fd_context = create_fd_avio_context(filename, flags);
if (fd_context) {
*s = fd_context;
return 0;
}
return avio_open2(s, filename, flags, int_cb, options);
}
int android_avio_open(AVIOContext **s, const char *url, int flags) {
return android_avio_open2(s, url, flags, NULL, NULL);
}
int android_avio_closep(AVIOContext **s) {
close_fd_avio_context(*s);
return avio_closep(s);
}
void android_avformat_close_input(AVFormatContext **ps) {
if (*ps && (*ps)->pb) {
close_fd_avio_context((*ps)->pb);
}
avformat_close_input(ps);
}

@ -1,46 +0,0 @@
/*
* Copyright (c) 2020-2021 Taner Sener
*
* This file is part of FFmpegKit.
*
* FFmpegKit 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 3 of the License, or
* (at your option) any later version.
*
* FFmpegKit 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 FFmpegKit. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef FFMPEG_KIT_SAF_WRAPPER_H
#define FFMPEG_KIT_SAF_WRAPPER_H
/*
* These wrappers are intended to be used instead of the ffmpeg apis.
* You don't even need to change the source to call them.
* Instead, we redefine the public api names so that the wrapper be used.
*/
int android_avio_closep(AVIOContext **s);
#define avio_closep android_avio_closep
void android_avformat_close_input(AVFormatContext **s);
#define avformat_close_input android_avformat_close_input
int android_avio_open(AVIOContext **s, const char *url, int flags);
#define avio_open android_avio_open
int android_avio_open2(AVIOContext **s, const char *url, int flags,
const AVIOInterruptCB *int_cb, AVDictionary **options);
#define avio_open2 android_avio_open2
int android_avformat_open_input(AVFormatContext **ps, const char *filename,
ff_const59 AVInputFormat *fmt, AVDictionary **options);
#define avformat_open_input android_avformat_open_input
#endif //FFMPEG_KIT_SAF_WRAPPER_H

@ -139,6 +139,8 @@ public abstract class AbstractSession implements Session {
this.returnCode = null;
this.failStackTrace = null;
this.logRedirectionStrategy = logRedirectionStrategy;
FFmpegKitConfig.addSession(this);
}
@Override
@ -189,7 +191,7 @@ public abstract class AbstractSession implements Session {
@Override
public String getCommand() {
return FFmpegKit.argumentsToString(arguments);
return FFmpegKitConfig.argumentsToString(arguments);
}
@Override

@ -148,7 +148,7 @@ public class FFmpegKit {
* @return FFmpeg session created for this execution
*/
public static FFmpegSession execute(final String command) {
return execute(parseArguments(command));
return execute(FFmpegKitConfig.parseArguments(command));
}
/**
@ -162,7 +162,7 @@ public class FFmpegKit {
*/
public static FFmpegSession executeAsync(final String command,
final ExecuteCallback executeCallback) {
return executeAsync(parseArguments(command), executeCallback);
return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback);
}
/**
@ -180,7 +180,7 @@ public class FFmpegKit {
final ExecuteCallback executeCallback,
final LogCallback logCallback,
final StatisticsCallback statisticsCallback) {
return executeAsync(parseArguments(command), executeCallback, logCallback, statisticsCallback);
return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback);
}
/**
@ -196,7 +196,7 @@ public class FFmpegKit {
public static FFmpegSession executeAsync(final String command,
final ExecuteCallback executeCallback,
final ExecutorService executorService) {
final FFmpegSession session = new FFmpegSession(parseArguments(command), executeCallback);
final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), executeCallback);
FFmpegKitConfig.asyncFFmpegExecute(session, executorService);
@ -220,7 +220,7 @@ public class FFmpegKit {
final LogCallback logCallback,
final StatisticsCallback statisticsCallback,
final ExecutorService executorService) {
final FFmpegSession session = new FFmpegSession(parseArguments(command), executeCallback, logCallback, statisticsCallback);
final FFmpegSession session = new FFmpegSession(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, statisticsCallback);
FFmpegKitConfig.asyncFFmpegExecute(session, executorService);
@ -262,84 +262,4 @@ public class FFmpegKit {
return FFmpegKitConfig.getFFmpegSessions();
}
/**
* <p>Parses the given command into arguments. Uses space character to split the arguments.
* Supports single and double quote characters.
*
* @param command string command
* @return array of arguments
*/
public static String[] parseArguments(final String command) {
final List<String> argumentList = new ArrayList<>();
StringBuilder currentArgument = new StringBuilder();
boolean singleQuoteStarted = false;
boolean doubleQuoteStarted = false;
for (int i = 0; i < command.length(); i++) {
final Character previousChar;
if (i > 0) {
previousChar = command.charAt(i - 1);
} else {
previousChar = null;
}
final char currentChar = command.charAt(i);
if (currentChar == ' ') {
if (singleQuoteStarted || doubleQuoteStarted) {
currentArgument.append(currentChar);
} else if (currentArgument.length() > 0) {
argumentList.add(currentArgument.toString());
currentArgument = new StringBuilder();
}
} else if (currentChar == '\'' && (previousChar == null || previousChar != '\\')) {
if (singleQuoteStarted) {
singleQuoteStarted = false;
} else if (doubleQuoteStarted) {
currentArgument.append(currentChar);
} else {
singleQuoteStarted = true;
}
} else if (currentChar == '\"' && (previousChar == null || previousChar != '\\')) {
if (doubleQuoteStarted) {
doubleQuoteStarted = false;
} else if (singleQuoteStarted) {
currentArgument.append(currentChar);
} else {
doubleQuoteStarted = true;
}
} else {
currentArgument.append(currentChar);
}
}
if (currentArgument.length() > 0) {
argumentList.add(currentArgument.toString());
}
return argumentList.toArray(new String[0]);
}
/**
* <p>Concatenates arguments into a string adding a space character between two arguments.
*
* @param arguments arguments
* @return concatenated string containing all arguments
*/
public static String argumentsToString(final String[] arguments) {
if (arguments == null) {
return "null";
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < arguments.length; i++) {
if (i > 0) {
stringBuilder.append(" ");
}
stringBuilder.append(arguments[i]);
}
return stringBuilder.toString();
}
}

@ -40,6 +40,7 @@ import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
@ -603,7 +604,6 @@ public class FFmpegKitConfig {
* @param ffmpegSession FFmpeg session which includes command options/arguments
*/
public static void ffmpegExecute(final FFmpegSession ffmpegSession) {
addSession(ffmpegSession);
ffmpegSession.startRunning();
try {
@ -611,7 +611,7 @@ public class FFmpegKitConfig {
ffmpegSession.complete(new ReturnCode(returnCode));
} catch (final Exception e) {
ffmpegSession.fail(e);
android.util.Log.w(FFmpegKitConfig.TAG, String.format("FFmpeg execute failed: %s.%s", FFmpegKit.argumentsToString(ffmpegSession.getArguments()), Exceptions.getStackTraceString(e)));
android.util.Log.w(FFmpegKitConfig.TAG, String.format("FFmpeg execute failed: %s.%s", FFmpegKitConfig.argumentsToString(ffmpegSession.getArguments()), Exceptions.getStackTraceString(e)));
}
}
@ -621,7 +621,6 @@ public class FFmpegKitConfig {
* @param ffprobeSession FFprobe session which includes command options/arguments
*/
public static void ffprobeExecute(final FFprobeSession ffprobeSession) {
addSession(ffprobeSession);
ffprobeSession.startRunning();
try {
@ -629,7 +628,7 @@ public class FFmpegKitConfig {
ffprobeSession.complete(new ReturnCode(returnCode));
} catch (final Exception e) {
ffprobeSession.fail(e);
android.util.Log.w(FFmpegKitConfig.TAG, String.format("FFprobe execute failed: %s.%s", FFmpegKit.argumentsToString(ffprobeSession.getArguments()), Exceptions.getStackTraceString(e)));
android.util.Log.w(FFmpegKitConfig.TAG, String.format("FFprobe execute failed: %s.%s", FFmpegKitConfig.argumentsToString(ffprobeSession.getArguments()), Exceptions.getStackTraceString(e)));
}
}
@ -640,7 +639,6 @@ public class FFmpegKitConfig {
* @param waitTimeout max time to wait until media information is transmitted
*/
public static void getMediaInformationExecute(final MediaInformationSession mediaInformationSession, final int waitTimeout) {
addSession(mediaInformationSession);
mediaInformationSession.startRunning();
try {
@ -653,7 +651,7 @@ public class FFmpegKitConfig {
}
} catch (final Exception e) {
mediaInformationSession.fail(e);
android.util.Log.w(FFmpegKitConfig.TAG, String.format("Get media information execute failed: %s.%s", FFmpegKit.argumentsToString(mediaInformationSession.getArguments()), Exceptions.getStackTraceString(e)));
android.util.Log.w(FFmpegKitConfig.TAG, String.format("Get media information execute failed: %s.%s", FFmpegKitConfig.argumentsToString(mediaInformationSession.getArguments()), Exceptions.getStackTraceString(e)));
}
}
@ -663,8 +661,6 @@ public class FFmpegKitConfig {
* @param ffmpegSession FFmpeg session which includes command options/arguments
*/
public static void asyncFFmpegExecute(final FFmpegSession ffmpegSession) {
addSession(ffmpegSession);
AsyncFFmpegExecuteTask asyncFFmpegExecuteTask = new AsyncFFmpegExecuteTask(ffmpegSession);
Future<?> future = asyncExecutorService.submit(asyncFFmpegExecuteTask);
ffmpegSession.setFuture(future);
@ -677,8 +673,6 @@ public class FFmpegKitConfig {
* @param executorService executor service that will be used to run this asynchronous operation
*/
public static void asyncFFmpegExecute(final FFmpegSession ffmpegSession, final ExecutorService executorService) {
addSession(ffmpegSession);
AsyncFFmpegExecuteTask asyncFFmpegExecuteTask = new AsyncFFmpegExecuteTask(ffmpegSession);
Future<?> future = executorService.submit(asyncFFmpegExecuteTask);
ffmpegSession.setFuture(future);
@ -690,8 +684,6 @@ public class FFmpegKitConfig {
* @param ffprobeSession FFprobe session which includes command options/arguments
*/
public static void asyncFFprobeExecute(final FFprobeSession ffprobeSession) {
addSession(ffprobeSession);
AsyncFFprobeExecuteTask asyncFFmpegExecuteTask = new AsyncFFprobeExecuteTask(ffprobeSession);
Future<?> future = asyncExecutorService.submit(asyncFFmpegExecuteTask);
ffprobeSession.setFuture(future);
@ -704,8 +696,6 @@ public class FFmpegKitConfig {
* @param executorService executor service that will be used to run this asynchronous operation
*/
public static void asyncFFprobeExecute(final FFprobeSession ffprobeSession, final ExecutorService executorService) {
addSession(ffprobeSession);
AsyncFFprobeExecuteTask asyncFFmpegExecuteTask = new AsyncFFprobeExecuteTask(ffprobeSession);
Future<?> future = executorService.submit(asyncFFmpegExecuteTask);
ffprobeSession.setFuture(future);
@ -718,8 +708,6 @@ public class FFmpegKitConfig {
* @param waitTimeout max time to wait until media information is transmitted
*/
public static void asyncGetMediaInformationExecute(final MediaInformationSession mediaInformationSession, final int waitTimeout) {
addSession(mediaInformationSession);
AsyncGetMediaInformationTask asyncGetMediaInformationTask = new AsyncGetMediaInformationTask(mediaInformationSession, waitTimeout);
Future<?> future = asyncExecutorService.submit(asyncGetMediaInformationTask);
mediaInformationSession.setFuture(future);
@ -733,8 +721,6 @@ public class FFmpegKitConfig {
* @param waitTimeout max time to wait until media information is transmitted
*/
public static void asyncGetMediaInformationExecute(final MediaInformationSession mediaInformationSession, final ExecutorService executorService, final int waitTimeout) {
addSession(mediaInformationSession);
AsyncGetMediaInformationTask asyncGetMediaInformationTask = new AsyncGetMediaInformationTask(mediaInformationSession, waitTimeout);
Future<?> future = executorService.submit(asyncGetMediaInformationTask);
mediaInformationSession.setFuture(future);
@ -831,6 +817,20 @@ public class FFmpegKitConfig {
}
}
static String extractExtensionFromSafDisplayName(final String safDisplayName) {
String rawExtension = safDisplayName;
if (safDisplayName.lastIndexOf(".") >= 0) {
rawExtension = safDisplayName.substring(safDisplayName.lastIndexOf("."));
}
try {
// workaround for https://issuetracker.google.com/issues/162440528: ANDROID_CREATE_DOCUMENT generating file names like "transcode.mp3 (2)"
return new StringTokenizer(rawExtension, " .").nextToken();
} catch (final Exception e) {
android.util.Log.w(TAG, String.format("Failed to extract extension from saf display name: %s.%s", safDisplayName, Exceptions.getStackTraceString(e)));
return "raw";
}
}
/**
* <p>Converts the given Structured Access Framework Uri (<code>"content:…"</code>) into an
* input/output url that can be used in FFmpeg and FFprobe commands.
@ -863,14 +863,7 @@ public class FFmpegKitConfig {
android.util.Log.e(TAG, String.format("Failed to obtain %s parcelFileDescriptor for %s.%s", openMode, uri.toString(), Exceptions.getStackTraceString(t)));
}
// workaround for https://issuetracker.google.com/issues/162440528: ANDROID_CREATE_DOCUMENT generating file names like "transcode.mp3 (2)"
if (displayName.lastIndexOf('.') > 0 && displayName.lastIndexOf(' ') > displayName.lastIndexOf('.')) {
String extension = displayName.substring(displayName.lastIndexOf('.'), displayName.lastIndexOf(' '));
displayName += extension;
}
// spaces can break argument list parsing, see https://github.com/alexcohn/mobile-ffmpeg/pull/1#issuecomment-688643836
final char NBSP = (char) 0xa0;
return "saf:" + fd + "/" + displayName.replace(' ', NBSP);
return "saf:" + fd + "." + FFmpegKitConfig.extractExtensionFromSafDisplayName(displayName);
}
/**
@ -880,7 +873,7 @@ public class FFmpegKitConfig {
* <p>Requires API Level &ge; 19. On older API levels it returns an empty url.
*
* @param context application context
* @param uri saf uri
* @param uri saf uri
* @return input url that can be passed to FFmpegKit or FFprobeKit
*/
public static String getSafParameterForRead(final Context context, final Uri uri) {
@ -894,7 +887,7 @@ public class FFmpegKitConfig {
* <p>Requires API Level &ge; 19. On older API levels it returns an empty url.
*
* @param context application context
* @param uri saf uri
* @param uri saf uri
* @return output url that can be passed to FFmpegKit or FFprobeKit
*/
public static String getSafParameterForWrite(final Context context, final Uri uri) {
@ -1027,6 +1020,16 @@ public class FFmpegKitConfig {
}
}
/**
* <p>Clears all, including ongoing, sessions in the session history.
* <p>Note that callbacks cannot be triggered for deleted sessions.
*/
public static void clearSessions() {
synchronized (sessionHistoryLock) {
sessionHistoryList.clear();
}
}
/**
* <p>Returns all FFmpeg sessions in the session history.
*
@ -1103,6 +1106,86 @@ public class FFmpegKitConfig {
FFmpegKitConfig.globalLogRedirectionStrategy = logRedirectionStrategy;
}
/**
* <p>Parses the given command into arguments. Uses space character to split the arguments.
* Supports single and double quote characters.
*
* @param command string command
* @return array of arguments
*/
public static String[] parseArguments(final String command) {
final List<String> argumentList = new ArrayList<>();
StringBuilder currentArgument = new StringBuilder();
boolean singleQuoteStarted = false;
boolean doubleQuoteStarted = false;
for (int i = 0; i < command.length(); i++) {
final Character previousChar;
if (i > 0) {
previousChar = command.charAt(i - 1);
} else {
previousChar = null;
}
final char currentChar = command.charAt(i);
if (currentChar == ' ') {
if (singleQuoteStarted || doubleQuoteStarted) {
currentArgument.append(currentChar);
} else if (currentArgument.length() > 0) {
argumentList.add(currentArgument.toString());
currentArgument = new StringBuilder();
}
} else if (currentChar == '\'' && (previousChar == null || previousChar != '\\')) {
if (singleQuoteStarted) {
singleQuoteStarted = false;
} else if (doubleQuoteStarted) {
currentArgument.append(currentChar);
} else {
singleQuoteStarted = true;
}
} else if (currentChar == '\"' && (previousChar == null || previousChar != '\\')) {
if (doubleQuoteStarted) {
doubleQuoteStarted = false;
} else if (singleQuoteStarted) {
currentArgument.append(currentChar);
} else {
doubleQuoteStarted = true;
}
} else {
currentArgument.append(currentChar);
}
}
if (currentArgument.length() > 0) {
argumentList.add(currentArgument.toString());
}
return argumentList.toArray(new String[0]);
}
/**
* <p>Concatenates arguments into a string adding a space character between two arguments.
*
* @param arguments arguments
* @return concatenated string containing all arguments
*/
public static String argumentsToString(final String[] arguments) {
if (arguments == null) {
return "null";
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < arguments.length; i++) {
if (i > 0) {
stringBuilder.append(" ");
}
stringBuilder.append(arguments[i]);
}
return stringBuilder.toString();
}
/**
* <p>Enables redirection natively.
*/

@ -157,7 +157,7 @@ public class FFmpegSession extends AbstractSession implements Session {
public Statistics getLastReceivedStatistics() {
synchronized (statisticsLock) {
if (statistics.size() > 0) {
return statistics.get(0);
return statistics.get(statistics.size() - 1);
} else {
return null;
}
@ -199,7 +199,7 @@ public class FFmpegSession extends AbstractSession implements Session {
stringBuilder.append(", endTime=");
stringBuilder.append(endTime);
stringBuilder.append(", arguments=");
stringBuilder.append(FFmpegKit.argumentsToString(arguments));
stringBuilder.append(FFmpegKitConfig.argumentsToString(arguments));
stringBuilder.append(", logs=");
stringBuilder.append(getLogsAsString());
stringBuilder.append(", state=");

@ -147,7 +147,7 @@ public class FFprobeKit {
* @return FFprobe session created for this execution
*/
public static FFprobeSession execute(final String command) {
return execute(FFmpegKit.parseArguments(command));
return execute(FFmpegKitConfig.parseArguments(command));
}
/**
@ -161,7 +161,7 @@ public class FFprobeKit {
*/
public static FFprobeSession executeAsync(final String command,
final ExecuteCallback executeCallback) {
return executeAsync(FFmpegKit.parseArguments(command), executeCallback);
return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback);
}
/**
@ -177,7 +177,7 @@ public class FFprobeKit {
public static FFprobeSession executeAsync(final String command,
final ExecuteCallback executeCallback,
final LogCallback logCallback) {
return executeAsync(FFmpegKit.parseArguments(command), executeCallback, logCallback);
return executeAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback);
}
/**
@ -193,7 +193,7 @@ public class FFprobeKit {
public static FFprobeSession executeAsync(final String command,
final ExecuteCallback executeCallback,
final ExecutorService executorService) {
final FFprobeSession session = new FFprobeSession(FFmpegKit.parseArguments(command), executeCallback);
final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), executeCallback);
FFmpegKitConfig.asyncFFprobeExecute(session, executorService);
@ -215,7 +215,7 @@ public class FFprobeKit {
final ExecuteCallback executeCallback,
final LogCallback logCallback,
final ExecutorService executorService) {
final FFprobeSession session = new FFprobeSession(FFmpegKit.parseArguments(command), executeCallback, logCallback);
final FFprobeSession session = new FFprobeSession(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback);
FFmpegKitConfig.asyncFFprobeExecute(session, executorService);
@ -335,7 +335,7 @@ public class FFprobeKit {
* @return media information session created for this execution
*/
public static MediaInformationSession getMediaInformationFromCommand(final String command) {
final MediaInformationSession session = new MediaInformationSession(FFmpegKit.parseArguments(command));
final MediaInformationSession session = new MediaInformationSession(FFmpegKitConfig.parseArguments(command));
FFmpegKitConfig.asyncGetMediaInformationExecute(session, AbstractSession.DEFAULT_TIMEOUT_FOR_ASYNCHRONOUS_MESSAGES_IN_TRANSMIT);
@ -355,7 +355,7 @@ public class FFprobeKit {
final ExecuteCallback executeCallback,
final LogCallback logCallback,
final int waitTimeout) {
return getMediaInformationFromCommandArgumentsAsync(FFmpegKit.parseArguments(command), executeCallback, logCallback, waitTimeout);
return getMediaInformationFromCommandArgumentsAsync(FFmpegKitConfig.parseArguments(command), executeCallback, logCallback, waitTimeout);
}
/**

@ -95,7 +95,7 @@ public class FFprobeSession extends AbstractSession implements Session {
stringBuilder.append(", endTime=");
stringBuilder.append(endTime);
stringBuilder.append(", arguments=");
stringBuilder.append(FFmpegKit.argumentsToString(arguments));
stringBuilder.append(FFmpegKitConfig.argumentsToString(arguments));
stringBuilder.append(", logs=");
stringBuilder.append(getLogsAsString());
stringBuilder.append(", state=");

@ -93,7 +93,7 @@ public class MediaInformationSession extends FFprobeSession implements Session {
stringBuilder.append(", endTime=");
stringBuilder.append(endTime);
stringBuilder.append(", arguments=");
stringBuilder.append(FFmpegKit.argumentsToString(arguments));
stringBuilder.append(FFmpegKitConfig.argumentsToString(arguments));
stringBuilder.append(", logs=");
stringBuilder.append(getLogsAsString());
stringBuilder.append(", state=");

@ -82,7 +82,7 @@ public class NativeLoader {
}
static String loadVersion() {
final String version = "4.4";
final String version = "4.5";
if (isTestModeDisabled()) {
return FFmpegKitConfig.getVersion();
@ -199,11 +199,11 @@ public class NativeLoader {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
stringBuilder.append(", abis: ");
stringBuilder.append(FFmpegKit.argumentsToString(Build.SUPPORTED_ABIS));
stringBuilder.append(FFmpegKitConfig.argumentsToString(Build.SUPPORTED_ABIS));
stringBuilder.append(", 32bit abis: ");
stringBuilder.append(FFmpegKit.argumentsToString(Build.SUPPORTED_32_BIT_ABIS));
stringBuilder.append(FFmpegKitConfig.argumentsToString(Build.SUPPORTED_32_BIT_ABIS));
stringBuilder.append(", 64bit abis: ");
stringBuilder.append(FFmpegKit.argumentsToString(Build.SUPPORTED_64_BIT_ABIS));
stringBuilder.append(FFmpegKitConfig.argumentsToString(Build.SUPPORTED_64_BIT_ABIS));
} else {
stringBuilder.append(", cpu abis: ");
stringBuilder.append(Build.CPU_ABI);

@ -26,7 +26,7 @@ import java.util.List;
/**
* <p>Helper class to extract binary package information.
*/
class Packages {
public class Packages {
private static final List<String> supportedExternalLibraries;

@ -83,11 +83,11 @@ public class StreamInformation {
}
/**
* Returns full stream codec.
* Returns stream codec in long format.
*
* @return stream codec with additional profile and mode information
*/
public String getFullCodec() {
public String getCodecLong() {
return getStringProperty(KEY_CODEC_LONG);
}

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018-2020 Taner Sener
* Copyright (c) 2018-2021 Taner Sener
*
* This file is part of FFmpegKit.
*
@ -152,6 +152,21 @@ public class FFmpegKitConfigTest {
Assert.assertEquals("https-gpl", listToPackageName(Arrays.asList("gnutls", "xvidcore")));
}
@Test
public void extractExtensionFromSafDisplayName() {
String extension = FFmpegKitConfig.extractExtensionFromSafDisplayName("video.mp4 (2)");
Assert.assertEquals("mp4", extension);
extension = FFmpegKitConfig.extractExtensionFromSafDisplayName("video file name.mp3 (2)");
Assert.assertEquals("mp3", extension);
extension = FFmpegKitConfig.extractExtensionFromSafDisplayName("file.mp4");
Assert.assertEquals("mp4", extension);
extension = FFmpegKitConfig.extractExtensionFromSafDisplayName("file name.mp4");
Assert.assertEquals("mp4", extension);
}
private String listToPackageName(final List<String> externalLibraryList) {
boolean speex = externalLibraryList.contains("speex");
boolean fribidi = externalLibraryList.contains("fribidi");

@ -536,7 +536,7 @@ public class FFmpegKitTest {
@Test
public void parseSimpleCommand() {
final String[] argumentArray = FFmpegKit.parseArguments("-hide_banner -loop 1 -i file.jpg -filter_complex [0:v]setpts=PTS-STARTPTS[video] -map [video] -vsync 2 -async 1 video.mp4");
final String[] argumentArray = FFmpegKitConfig.parseArguments("-hide_banner -loop 1 -i file.jpg -filter_complex [0:v]setpts=PTS-STARTPTS[video] -map [video] -vsync 2 -async 1 video.mp4");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(14, argumentArray.length);
@ -559,7 +559,7 @@ public class FFmpegKitTest {
@Test
public void parseSingleQuotesInCommand() {
String[] argumentArray = FFmpegKit.parseArguments("-loop 1 'file one.jpg' -filter_complex '[0:v]setpts=PTS-STARTPTS[video]' -map [video] video.mp4 ");
String[] argumentArray = FFmpegKitConfig.parseArguments("-loop 1 'file one.jpg' -filter_complex '[0:v]setpts=PTS-STARTPTS[video]' -map [video] video.mp4 ");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(8, argumentArray.length);
@ -576,7 +576,7 @@ public class FFmpegKitTest {
@Test
public void parseDoubleQuotesInCommand() {
String[] argumentArray = FFmpegKit.parseArguments("-loop 1 \"file one.jpg\" -filter_complex \"[0:v]setpts=PTS-STARTPTS[video]\" -map [video] video.mp4 ");
String[] argumentArray = FFmpegKitConfig.parseArguments("-loop 1 \"file one.jpg\" -filter_complex \"[0:v]setpts=PTS-STARTPTS[video]\" -map [video] video.mp4 ");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(8, argumentArray.length);
@ -590,7 +590,7 @@ public class FFmpegKitTest {
Assert.assertEquals("[video]", argumentArray[6]);
Assert.assertEquals("video.mp4", argumentArray[7]);
argumentArray = FFmpegKit.parseArguments(" -i file:///tmp/input.mp4 -vcodec libx264 -vf \"scale=1024:1024,pad=width=1024:height=1024:x=0:y=0:color=black\" -acodec copy -q:v 0 -q:a 0 video.mp4");
argumentArray = FFmpegKitConfig.parseArguments(" -i file:///tmp/input.mp4 -vcodec libx264 -vf \"scale=1024:1024,pad=width=1024:height=1024:x=0:y=0:color=black\" -acodec copy -q:v 0 -q:a 0 video.mp4");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(13, argumentArray.length);
@ -612,7 +612,7 @@ public class FFmpegKitTest {
@Test
public void parseDoubleQuotesAndEscapesInCommand() {
String[] argumentArray = FFmpegKit.parseArguments(" -i file:///tmp/input.mp4 -vf \"subtitles=file:///tmp/subtitles.srt:force_style=\'FontSize=16,PrimaryColour=&HFFFFFF&\'\" -vcodec libx264 -acodec copy -q:v 0 -q:a 0 video.mp4");
String[] argumentArray = FFmpegKitConfig.parseArguments(" -i file:///tmp/input.mp4 -vf \"subtitles=file:///tmp/subtitles.srt:force_style=\'FontSize=16,PrimaryColour=&HFFFFFF&\'\" -vcodec libx264 -acodec copy -q:v 0 -q:a 0 video.mp4");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(13, argumentArray.length);
@ -631,7 +631,7 @@ public class FFmpegKitTest {
Assert.assertEquals("0", argumentArray[11]);
Assert.assertEquals("video.mp4", argumentArray[12]);
argumentArray = FFmpegKit.parseArguments(" -i file:///tmp/input.mp4 -vf \"subtitles=file:///tmp/subtitles.srt:force_style=\\\"FontSize=16,PrimaryColour=&HFFFFFF&\\\"\" -vcodec libx264 -acodec copy -q:v 0 -q:a 0 video.mp4");
argumentArray = FFmpegKitConfig.parseArguments(" -i file:///tmp/input.mp4 -vf \"subtitles=file:///tmp/subtitles.srt:force_style=\\\"FontSize=16,PrimaryColour=&HFFFFFF&\\\"\" -vcodec libx264 -acodec copy -q:v 0 -q:a 0 video.mp4");
Assert.assertNotNull(argumentArray);
Assert.assertEquals(13, argumentArray.length);
@ -658,7 +658,7 @@ public class FFmpegKitTest {
}
public String argumentsToString(final String[] arguments) {
return FFmpegKit.argumentsToString(arguments);
return FFmpegKitConfig.argumentsToString(arguments);
}
private void assertMediaInput(MediaInformation mediaInformation, String format, String filename) {
@ -703,7 +703,7 @@ public class FFmpegKitTest {
Assert.assertEquals(type, streamInformation.getType());
Assert.assertEquals(codec, streamInformation.getCodec());
Assert.assertEquals(fullCodec, streamInformation.getFullCodec());
Assert.assertEquals(fullCodec, streamInformation.getCodecLong());
Assert.assertEquals(bitrate, streamInformation.getBitrate());
}
@ -713,7 +713,7 @@ public class FFmpegKitTest {
Assert.assertEquals("audio", streamInformation.getType());
Assert.assertEquals(codec, streamInformation.getCodec());
Assert.assertEquals(fullCodec, streamInformation.getFullCodec());
Assert.assertEquals(fullCodec, streamInformation.getCodecLong());
Assert.assertEquals(sampleRate, streamInformation.getSampleRate());
Assert.assertEquals(channelLayout, streamInformation.getChannelLayout());
@ -726,7 +726,7 @@ public class FFmpegKitTest {
Assert.assertEquals("video", streamInformation.getType());
Assert.assertEquals(codec, streamInformation.getCodec());
Assert.assertEquals(fullCodec, streamInformation.getFullCodec());
Assert.assertEquals(fullCodec, streamInformation.getCodecLong());
Assert.assertEquals(format, streamInformation.getFormat());

@ -26,10 +26,6 @@ import java.util.List;
public class FFmpegSessionTest {
static {
System.setProperty("enable.ffmpeg.kit.test.mode", "true");
}
private static final String[] TEST_ARGUMENTS = new String[]{"argument1", "argument2"};
@Test

@ -26,10 +26,6 @@ import java.util.List;
public class FFprobeSessionTest {
static {
System.setProperty("enable.ffmpeg.kit.test.mode", "true");
}
private static final String[] TEST_ARGUMENTS = new String[]{"argument1", "argument2"};
@Test

@ -63,7 +63,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_opt.c fftools_ffmpeg_hw.c fftools_ffmpeg_filter.c saf_wrapper.c
MY_SRC_FILES := ffmpegkit.c ffprobekit.c ffmpegkit_exception.c fftools_cmdutils.c fftools_ffmpeg.c fftools_ffprobe.c fftools_ffmpeg_opt.c fftools_ffmpeg_hw.c fftools_ffmpeg_filter.c
ifeq ($(TARGET_PLATFORM),android-16)
MY_SRC_FILES += android_lts_support.c

@ -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 = 4.4
PROJECT_NUMBER = 4.5
# 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

@ -114,17 +114,17 @@ All libraries created can be found under the `prebuilt` directory.
- iOS
```
pod 'ffmpeg-kit-ios-full', '~> 4.4.LTS'
pod 'ffmpeg-kit-ios-full', '~> 4.5'
```
- macOS
```
pod 'ffmpeg-kit-macos-full', '~> 4.4.LTS'
pod 'ffmpeg-kit-macos-full', '~> 4.5'
```
- tvOS
```
pod 'ffmpeg-kit-tvos-full', '~> 4.4.LTS'
pod 'ffmpeg-kit-tvos-full', '~> 4.5'
```
2. Execute synchronous `FFmpeg` commands.
@ -301,7 +301,7 @@ All libraries created can be found under the `prebuilt` directory.
11. Register system fonts and custom font directories.
```
[FFmpegKitConfig setFontDirectoryList:<array of folders with fonts> with:nil];
[FFmpegKitConfig setFontDirectoryList:[NSArray arrayWithObjects:@"/System/Library/Fonts", @"<folder with fonts>", nil] with:nil];
```
### 4. Test Application

@ -29,6 +29,8 @@ int const AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit = 5000;
static AtomicLong *sessionIdGenerator = nil;
extern void addSessionToSessionHistory(id<Session> session);
@implementation AbstractSession {
long _sessionId;
ExecuteCallback _executeCallback;
@ -65,6 +67,8 @@ static AtomicLong *sessionIdGenerator = nil;
_returnCode = nil;
_failStackTrace = nil;
_logRedirectionStrategy = logRedirectionStrategy;
addSessionToSessionHistory(self);
}
return self;
@ -109,7 +113,7 @@ static AtomicLong *sessionIdGenerator = nil;
}
- (NSString*)getCommand {
return [FFmpegKit argumentsToString:_arguments];
return [FFmpegKitConfig argumentsToString:_arguments];
}
- (void)waitForAsynchronousMessagesInTransmit:(int)timeout {

@ -176,23 +176,6 @@
*/
+ (NSArray*)listSessions;
/**
* <p>Parses the given command into arguments. Uses space character to split the arguments.
* Supports single and double quote characters.
*
* @param command string command
* @return array of arguments
*/
+ (NSArray*)parseArguments:(NSString*)command;
/**
* <p>Concatenates arguments into a string adding a space character between two arguments.
*
* @param arguments arguments
* @return concatenated string containing all arguments
*/
+ (NSString*)argumentsToString:(NSArray*)arguments;
@end
#endif // FFMPEG_KIT_H

@ -65,31 +65,31 @@
}
+ (FFmpegSession*)execute:(NSString*)command {
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKit parseArguments:command]];
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command]];
[FFmpegKitConfig ffmpegExecute:session];
return session;
}
+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback {
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback];
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback];
[FFmpegKitConfig asyncFFmpegExecute:session];
return session;
}
+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback {
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
[FFmpegKitConfig asyncFFmpegExecute:session];
return session;
}
+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue {
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback];
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback];
[FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue];
return session;
}
+ (FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback withStatisticsCallback:(StatisticsCallback)statisticsCallback onDispatchQueue:(dispatch_queue_t)queue {
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
FFmpegSession* session = [[FFmpegSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
[FFmpegKitConfig asyncFFmpegExecute:session onDispatchQueue:queue];
return session;
}
@ -111,72 +111,4 @@
return [FFmpegKitConfig getFFmpegSessions];
}
+ (NSArray*)parseArguments:(NSString*)command {
NSMutableArray *argumentArray = [[NSMutableArray alloc] init];
NSMutableString *currentArgument = [[NSMutableString alloc] init];
bool singleQuoteStarted = false;
bool doubleQuoteStarted = false;
for (int i = 0; i < command.length; i++) {
unichar previousChar;
if (i > 0) {
previousChar = [command characterAtIndex:(i - 1)];
} else {
previousChar = 0;
}
unichar currentChar = [command characterAtIndex:i];
if (currentChar == ' ') {
if (singleQuoteStarted || doubleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else if ([currentArgument length] > 0) {
[argumentArray addObject: currentArgument];
currentArgument = [[NSMutableString alloc] init];
}
} else if (currentChar == '\'' && (previousChar == 0 || previousChar != '\\')) {
if (singleQuoteStarted) {
singleQuoteStarted = false;
} else if (doubleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else {
singleQuoteStarted = true;
}
} else if (currentChar == '\"' && (previousChar == 0 || previousChar != '\\')) {
if (doubleQuoteStarted) {
doubleQuoteStarted = false;
} else if (singleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else {
doubleQuoteStarted = true;
}
} else {
[currentArgument appendFormat: @"%C", currentChar];
}
}
if ([currentArgument length] > 0) {
[argumentArray addObject: currentArgument];
}
return argumentArray;
}
+ (NSString*)argumentsToString:(NSArray*)arguments {
if (arguments == nil) {
return @"nil";
}
NSMutableString *string = [NSMutableString stringWithString:@""];
for (int i=0; i < [arguments count]; i++) {
NSString *argument = [arguments objectAtIndex:i];
if (i > 0) {
[string appendString:@" "];
}
[string appendString:argument];
}
return string;
}
@end

@ -329,6 +329,12 @@ typedef NS_ENUM(NSUInteger, Signal) {
*/
+ (NSArray*)getSessions;
/**
* <p>Clears all, including ongoing, sessions in the session history.
* <p>Note that callbacks cannot be triggered for deleted sessions.
*/
+ (void)clearSessions;
/**
* <p>Returns all FFmpeg sessions in the session history.
*
@ -381,6 +387,23 @@ typedef NS_ENUM(NSUInteger, Signal) {
*/
+ (NSString*)sessionStateToString:(SessionState)state;
/**
* <p>Parses the given command into arguments. Uses space character to split the arguments.
* Supports single and double quote characters.
*
* @param command string command
* @return array of arguments
*/
+ (NSArray*)parseArguments:(NSString*)command;
/**
* <p>Concatenates arguments into a string adding a space character between two arguments.
*
* @param arguments arguments
* @return concatenated string containing all arguments
*/
+ (NSString*)argumentsToString:(NSArray*)arguments;
@end
#endif // FFMPEG_KIT_CONFIG_H

@ -35,7 +35,7 @@
#import "SessionState.h"
/** Global library version */
NSString* const FFmpegKitVersion = @"4.4";
NSString* const FFmpegKitVersion = @"4.5";
/**
* Prefix of named pipes created by ffmpeg-kit.
@ -54,7 +54,7 @@ static NSMutableArray* sessionHistoryList;
static NSRecursiveLock* sessionHistoryLock;
/** Session control variables */
const int SESSION_MAP_SIZE = 1000;
#define SESSION_MAP_SIZE 1000
static atomic_short sessionMap[SESSION_MAP_SIZE];
static atomic_int sessionInTransitMessageCountMap[SESSION_MAP_SIZE];
@ -85,7 +85,7 @@ volatile int handleSIGXCPU = 1;
volatile int handleSIGPIPE = 1;
/** Holds the id of the current execution */
__thread volatile long _sessionId = 0;
__thread volatile long globalSessionId = 0;
/** Holds the default log level */
int configuredLogLevel = LevelAVLogInfo;
@ -101,6 +101,31 @@ typedef NS_ENUM(NSUInteger, CallbackType) {
StatisticsType
};
void addSessionToSessionHistory(id<Session> session) {
NSNumber* sessionIdNumber = [NSNumber numberWithLong:[session getSessionId]];
[sessionHistoryLock lock];
/*
* ASYNC SESSIONS CALL THIS METHOD TWICE
* THIS CHECK PREVENTS ADDING THE SAME SESSION TWICE
*/
if ([sessionHistoryMap objectForKey:sessionIdNumber] == nil) {
[sessionHistoryMap setObject:session forKey:sessionIdNumber];
[sessionHistoryList addObject:session];
if ([sessionHistoryList count] > sessionHistorySize) {
id<Session> first = [sessionHistoryList firstObject];
if (first != nil) {
NSNumber* key = [NSNumber numberWithLong:[first getSessionId]];
[sessionHistoryList removeObject:key];
[sessionHistoryMap removeObjectForKey:key];
}
}
}
[sessionHistoryLock unlock];
}
/**
* Callback data class.
*/
@ -229,7 +254,7 @@ void callbackNotify() {
* @param logData log data
*/
void logCallbackDataAdd(int level, NSString *logData) {
CallbackData* callbackData = [[CallbackData alloc] init:_sessionId logLevel:level data:logData];
CallbackData* callbackData = [[CallbackData alloc] init:globalSessionId logLevel:level data:logData];
[lock lock];
[callbackDataArray addObject:callbackData];
@ -237,14 +262,14 @@ void logCallbackDataAdd(int level, NSString *logData) {
callbackNotify();
atomic_fetch_add(&sessionInTransitMessageCountMap[_sessionId % SESSION_MAP_SIZE], 1);
atomic_fetch_add(&sessionInTransitMessageCountMap[globalSessionId % SESSION_MAP_SIZE], 1);
}
/**
* 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) {
CallbackData *callbackData = [[CallbackData alloc] init:_sessionId videoFrameNumber:frameNumber fps:fps quality:quality size:size time:time bitrate:bitrate speed:speed];
CallbackData *callbackData = [[CallbackData alloc] init:globalSessionId videoFrameNumber:frameNumber fps:fps quality:quality size:size time:time bitrate:bitrate speed:speed];
[lock lock];
[callbackDataArray addObject:callbackData];
@ -252,7 +277,7 @@ void statisticsCallbackDataAdd(int frameNumber, float fps, float quality, int64_
callbackNotify();
atomic_fetch_add(&sessionInTransitMessageCountMap[_sessionId % SESSION_MAP_SIZE], 1);
atomic_fetch_add(&sessionInTransitMessageCountMap[globalSessionId % SESSION_MAP_SIZE], 1);
}
/**
@ -278,11 +303,11 @@ CallbackData *callbackDataRemove() {
}
/**
* Adds a session id to the session map.
* Registers a session id to the session map.
*
* @param sessionId session id
*/
void addSession(long sessionId) {
void registerSessionId(long sessionId) {
atomic_store(&sessionMap[sessionId % SESSION_MAP_SIZE], 1);
}
@ -556,8 +581,8 @@ int executeFFmpeg(long sessionId, NSArray* arguments) {
}
// REGISTER THE ID BEFORE STARTING THE SESSION
_sessionId = sessionId;
addSession(sessionId);
globalSessionId = sessionId;
registerSessionId(sessionId);
resetMessagesInTransmit(sessionId);
@ -596,8 +621,8 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
// REGISTER THE ID BEFORE STARTING THE SESSION
_sessionId = sessionId;
addSession(sessionId);
globalSessionId = sessionId;
registerSessionId(sessionId);
resetMessagesInTransmit(sessionId);
@ -846,7 +871,6 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
+ (void)ffmpegExecute:(FFmpegSession*)ffmpegSession {
[FFmpegKitConfig addSession:ffmpegSession];
[ffmpegSession startRunning];
@try {
@ -854,12 +878,11 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
[ffmpegSession complete:[[ReturnCode alloc] init:returnCode]];
} @catch (NSException *exception) {
[ffmpegSession fail:exception];
NSLog(@"FFmpeg execute failed: %@.%@", [FFmpegKit argumentsToString:[ffmpegSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
NSLog(@"FFmpeg execute failed: %@.%@", [FFmpegKitConfig argumentsToString:[ffmpegSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
}
}
+ (void)ffprobeExecute:(FFprobeSession*)ffprobeSession {
[FFmpegKitConfig addSession:ffprobeSession];
[ffprobeSession startRunning];
@try {
@ -867,12 +890,11 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
[ffprobeSession complete:[[ReturnCode alloc] init:returnCode]];
} @catch (NSException *exception) {
[ffprobeSession fail:exception];
NSLog(@"FFprobe execute failed: %@.%@", [FFmpegKit argumentsToString:[ffprobeSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
NSLog(@"FFprobe execute failed: %@.%@", [FFmpegKitConfig argumentsToString:[ffprobeSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
}
}
+ (void)getMediaInformationExecute:(MediaInformationSession*)mediaInformationSession withTimeout:(int)waitTimeout {
[FFmpegKitConfig addSession:mediaInformationSession];
[mediaInformationSession startRunning];
@try {
@ -885,7 +907,7 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
} @catch (NSException *exception) {
[mediaInformationSession fail:exception];
NSLog(@"Get media information execute failed: %@.%@", [FFmpegKit argumentsToString:[mediaInformationSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
NSLog(@"Get media information execute failed: %@.%@", [FFmpegKitConfig argumentsToString:[mediaInformationSession getArguments]], [NSString stringWithFormat:@"%@", [exception callStackSymbols]]);
}
}
@ -894,8 +916,6 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
+ (void)asyncFFmpegExecute:(FFmpegSession*)ffmpegSession onDispatchQueue:(dispatch_queue_t)queue {
[FFmpegKitConfig addSession:ffmpegSession];
dispatch_async(queue, ^{
[FFmpegKitConfig ffmpegExecute:ffmpegSession];
ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback];
@ -915,8 +935,6 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
+ (void)asyncFFprobeExecute:(FFprobeSession*)ffprobeSession onDispatchQueue:(dispatch_queue_t)queue {
[FFmpegKitConfig addSession:ffprobeSession];
dispatch_async(queue, ^{
[FFmpegKitConfig ffprobeExecute:ffprobeSession];
ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback];
@ -936,8 +954,6 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
+ (void)asyncGetMediaInformationExecute:(MediaInformationSession*)mediaInformationSession onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout {
[FFmpegKitConfig addSession:mediaInformationSession];
dispatch_async(queue, ^{
[FFmpegKitConfig getMediaInformationExecute:mediaInformationSession withTimeout:waitTimeout];
ExecuteCallback globalExecuteCallback = [FFmpegKitConfig getExecuteCallback];
@ -1008,31 +1024,6 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
}
+ (void)addSession:(id<Session>)session {
NSNumber* sessionIdNumber = [NSNumber numberWithLong:[session getSessionId]];
[sessionHistoryLock lock];
/*
* ASYNC SESSIONS CALL THIS METHOD TWICE
* THIS CHECK PREVENTS ADDING THE SAME SESSION TWICE
*/
if ([sessionHistoryMap objectForKey:sessionIdNumber] == nil) {
[sessionHistoryMap setObject:session forKey:sessionIdNumber];
[sessionHistoryList addObject:session];
if ([sessionHistoryList count] > sessionHistorySize) {
id<Session> first = [sessionHistoryList firstObject];
if (first != nil) {
NSNumber* key = [NSNumber numberWithLong:[first getSessionId]];
[sessionHistoryList removeObject:key];
[sessionHistoryMap removeObjectForKey:key];
}
}
}
[sessionHistoryLock unlock];
}
+ (id<Session>)getSession:(long)sessionId {
[sessionHistoryLock lock];
@ -1081,6 +1072,14 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
return sessionsCopy;
}
+ (void)clearSessions {
[sessionHistoryLock lock];
[sessionHistoryList removeAllObjects];
[sessionHistoryLock unlock];
}
+ (NSArray*)getFFmpegSessions {
NSMutableArray* ffmpegSessions = [[NSMutableArray alloc] init];
@ -1154,4 +1153,72 @@ int executeFFprobe(long sessionId, NSArray* arguments) {
}
}
+ (NSArray*)parseArguments:(NSString*)command {
NSMutableArray *argumentArray = [[NSMutableArray alloc] init];
NSMutableString *currentArgument = [[NSMutableString alloc] init];
bool singleQuoteStarted = false;
bool doubleQuoteStarted = false;
for (int i = 0; i < command.length; i++) {
unichar previousChar;
if (i > 0) {
previousChar = [command characterAtIndex:(i - 1)];
} else {
previousChar = 0;
}
unichar currentChar = [command characterAtIndex:i];
if (currentChar == ' ') {
if (singleQuoteStarted || doubleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else if ([currentArgument length] > 0) {
[argumentArray addObject: currentArgument];
currentArgument = [[NSMutableString alloc] init];
}
} else if (currentChar == '\'' && (previousChar == 0 || previousChar != '\\')) {
if (singleQuoteStarted) {
singleQuoteStarted = false;
} else if (doubleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else {
singleQuoteStarted = true;
}
} else if (currentChar == '\"' && (previousChar == 0 || previousChar != '\\')) {
if (doubleQuoteStarted) {
doubleQuoteStarted = false;
} else if (singleQuoteStarted) {
[currentArgument appendFormat: @"%C", currentChar];
} else {
doubleQuoteStarted = true;
}
} else {
[currentArgument appendFormat: @"%C", currentChar];
}
}
if ([currentArgument length] > 0) {
[argumentArray addObject: currentArgument];
}
return argumentArray;
}
+ (NSString*)argumentsToString:(NSArray*)arguments {
if (arguments == nil) {
return @"nil";
}
NSMutableString *string = [NSMutableString stringWithString:@""];
for (int i=0; i < [arguments count]; i++) {
NSString *argument = [arguments objectAtIndex:i];
if (i > 0) {
[string appendString:@" "];
}
[string appendString:argument];
}
return string;
}
@end

@ -116,7 +116,7 @@
[_statisticsLock lock];
if ([_statistics count] > 0) {
lastStatistics = [_statistics objectAtIndex:0];
lastStatistics = [_statistics objectAtIndex:[_statistics count] - 1];
}
[_statisticsLock unlock];

@ -59,31 +59,31 @@
}
+ (FFprobeSession*)execute:(NSString*)command {
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKit parseArguments:command]];
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command]];
[FFmpegKitConfig ffprobeExecute:session];
return session;
}
+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback {
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback];
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback];
[FFmpegKitConfig asyncFFprobeExecute:session];
return session;
}
+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback {
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback];
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback];
[FFmpegKitConfig asyncFFprobeExecute:session];
return session;
}
+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue {
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback];
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback];
[FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue];
return session;
}
+ (FFprobeSession*)executeAsync:(NSString*)command withExecuteCallback:(ExecuteCallback)executeCallback withLogCallback:(LogCallback)logCallback onDispatchQueue:(dispatch_queue_t)queue {
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKit parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback];
FFprobeSession* session = [[FFprobeSession alloc] init:[FFmpegKitConfig parseArguments:command] withExecuteCallback:executeCallback withLogCallback:logCallback];
[FFmpegKitConfig asyncFFprobeExecute:session onDispatchQueue:queue];
return session;
}
@ -131,7 +131,7 @@
}
+ (MediaInformationSession*)getMediaInformationFromCommand:(NSString*)command {
MediaInformationSession* session = [[MediaInformationSession alloc] init:[FFmpegKit parseArguments:command]];
MediaInformationSession* session = [[MediaInformationSession alloc] init:[FFmpegKitConfig parseArguments:command]];
[FFmpegKitConfig getMediaInformationExecute:session withTimeout:AbstractSessionDefaultTimeoutForAsynchronousMessagesInTransmit];
return session;
}

@ -70,11 +70,11 @@ extern NSString* const StreamKeyTags;
- (NSString*)getCodec;
/**
* Returns full stream codec.
* Returns stream codec in long format.
*
* @return stream codec with additional profile and mode information
*/
- (NSString*)getFullCodec;
- (NSString*)getCodecLong;
/**
* Returns stream format.

@ -68,7 +68,7 @@ NSString* const StreamKeyTags = @"tags";
return [self getStringProperty:StreamKeyCodec];
}
- (NSString*)getFullCodec {
- (NSString*)getCodecLong {
return [self getStringProperty:StreamKeyCodecLong];
}

@ -67,6 +67,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
#include "libavutil/mathematics.h"
#include "libavutil/imgutils.h"
@ -79,6 +80,7 @@
#include "libavutil/cpu.h"
#include "libavutil/ffversion.h"
#include "libavutil/version.h"
#include "libavcodec/bsf.h"
#include "fftools_cmdutils.h"
#if HAVE_SYS_RESOURCE_H
#include <sys/time.h>
@ -110,11 +112,6 @@ enum show_muxdemuxers {
SHOW_MUXERS,
};
void init_opts(void)
{
av_dict_set(&sws_dict, "flags", "bicubic", 0);
}
void uninit_opts(void)
{
av_dict_free(&swr_opts);
@ -153,7 +150,7 @@ void init_dynload(void)
#endif
}
static void (*program_exit)(int ret);
static __thread void (*program_exit)(int ret);
void register_exit(void (*cb)(int ret))
{
@ -248,11 +245,9 @@ void show_help_children(const AVClass *class, int flags)
static const OptionDef *find_option(const OptionDef *po, const char *name)
{
const char *p = strchr(name, ':');
int len = p ? p - name : strlen(name);
while (po->name) {
if (!strncmp(name, po->name, len) && strlen(po->name) == len)
const char *end;
if (av_strstart(name, po->name, &end) && (!*end || *end == ':'))
break;
po++;
}
@ -584,9 +579,6 @@ int opt_default(void *optctx, const char *opt, const char *arg)
char opt_stripped[128];
const char *p;
const AVClass *cc = avcodec_get_class(), *fc = avformat_get_class();
#if CONFIG_AVRESAMPLE
const AVClass *rc = avresample_get_class();
#endif
#if CONFIG_SWSCALE
const AVClass *sc = sws_get_class();
#endif
@ -656,13 +648,6 @@ int opt_default(void *optctx, const char *opt, const char *arg)
consumed = 1;
}
#endif
#if CONFIG_AVRESAMPLE
if ((o=opt_find(&rc, opt, NULL, 0,
AV_OPT_SEARCH_CHILDREN | AV_OPT_SEARCH_FAKE_OBJ))) {
av_dict_set(&resample_opts, opt, arg, FLAGS);
consumed = 1;
}
#endif
if (consumed)
return 0;
@ -717,7 +702,6 @@ static void finish_group(OptionParseContext *octx, int group_idx,
resample_opts = NULL;
sws_dict = NULL;
swr_opts = NULL;
init_opts();
memset(&octx->cur_group, 0, sizeof(octx->cur_group));
}
@ -755,8 +739,6 @@ static void init_parse_context(OptionParseContext *octx,
octx->global_opts.group_def = &global_group;
octx->global_opts.arg = "";
init_opts();
}
void uninit_parse_context(OptionParseContext *octx)
@ -908,6 +890,32 @@ int opt_cpuflags(void *optctx, const char *opt, const char *arg)
return 0;
}
int opt_cpucount(void *optctx, const char *opt, const char *arg)
{
int ret;
int count;
static const AVOption opts[] = {
{"count", NULL, 0, AV_OPT_TYPE_INT, { .i64 = -1}, -1, INT_MAX, 0},
{NULL},
};
static const AVClass class = {
.class_name = "cpucount",
.item_name = av_default_item_name,
.option = opts,
.version = LIBAVUTIL_VERSION_INT,
};
const AVClass *pclass = &class;
ret = av_opt_eval_int(&pclass, opts, arg, &count);
if (!ret) {
av_cpu_force_count(count);
}
return ret;
}
int opt_loglevel(void *optctx, const char *opt, const char *arg)
{
const struct { const char *name; int level; } log_levels[] = {
@ -938,20 +946,18 @@ int opt_loglevel(void *optctx, const char *opt, const char *arg)
if (!i && !cmd) {
flags = 0; /* missing relative prefix, build absolute value */
}
if (!strncmp(token, "repeat", 6)) {
if (av_strstart(token, "repeat", &arg)) {
if (cmd == '-') {
flags |= AV_LOG_SKIP_REPEATED;
} else {
flags &= ~AV_LOG_SKIP_REPEATED;
}
arg = token + 6;
} else if (!strncmp(token, "level", 5)) {
} else if (av_strstart(token, "level", &arg)) {
if (cmd == '-') {
flags &= ~AV_LOG_PRINT_LEVEL;
} else {
flags |= AV_LOG_PRINT_LEVEL;
}
arg = token + 5;
} else {
break;
}
@ -1205,13 +1211,13 @@ static void print_buildconf(int flags, int level)
// Change all the ' --' strings to '~--' so that
// they can be identified as tokens.
while ((conflist = strstr(str, " --")) != NULL) {
strncpy(conflist, "~--", 3);
conflist[0] = '~';
}
// Compensate for the weirdness this would cause
// when passing 'pkg-config --static'.
while ((remove_tilde = strstr(str, "pkg-config~")) != NULL) {
strncpy(remove_tilde, "pkg-config ", 11);
remove_tilde[sizeof("pkg-config~") - 2] = ' ';
}
splitconf = strtok(str, "~");
@ -1455,7 +1461,7 @@ static void print_codec(const AVCodec *c)
av_log(NULL, AV_LOG_STDERR, "variable ");
if (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_AUTO_THREADS))
AV_CODEC_CAP_OTHER_THREADS))
av_log(NULL, AV_LOG_STDERR, "threads ");
if (c->capabilities & AV_CODEC_CAP_AVOID_PROBING)
av_log(NULL, AV_LOG_STDERR, "avoidprobe ");
@ -1472,12 +1478,12 @@ static void print_codec(const AVCodec *c)
av_log(NULL, AV_LOG_STDERR, " Threading capabilities: ");
switch (c->capabilities & (AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS |
AV_CODEC_CAP_AUTO_THREADS)) {
AV_CODEC_CAP_OTHER_THREADS)) {
case AV_CODEC_CAP_FRAME_THREADS |
AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "frame and slice"); break;
case AV_CODEC_CAP_FRAME_THREADS: av_log(NULL, AV_LOG_STDERR, "frame"); break;
case AV_CODEC_CAP_SLICE_THREADS: av_log(NULL, AV_LOG_STDERR, "slice"); break;
case AV_CODEC_CAP_AUTO_THREADS : av_log(NULL, AV_LOG_STDERR, "auto"); break;
case AV_CODEC_CAP_OTHER_THREADS : av_log(NULL, AV_LOG_STDERR, "other"); break;
default: av_log(NULL, AV_LOG_STDERR, "none"); break;
}
av_log(NULL, AV_LOG_STDERR, "\n");
@ -2148,7 +2154,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
}
AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
AVFormatContext *s, AVStream *st, AVCodec *codec)
AVFormatContext *s, AVStream *st, const AVCodec *codec)
{
AVDictionary *ret = NULL;
AVDictionaryEntry *t = NULL;
@ -2177,6 +2183,7 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
}
while ((t = av_dict_get(opts, "", t, AV_DICT_IGNORE_SUFFIX))) {
const AVClass *priv_class;
char *p = strchr(t->key, ':');
/* check stream specification in opt name */
@ -2189,8 +2196,8 @@ AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
if (av_opt_find(&cc, t->key, NULL, flags, AV_OPT_SEARCH_FAKE_OBJ) ||
!codec ||
(codec->priv_class &&
av_opt_find(&codec->priv_class, t->key, NULL, flags,
((priv_class = codec->priv_class) &&
av_opt_find(&priv_class, t->key, NULL, flags,
AV_OPT_SEARCH_FAKE_OBJ)))
av_dict_set(&ret, t->key, t->value, 0);
else if (t->key[0] == prefix &&
@ -2263,7 +2270,7 @@ double get_rotation(AVStream *st)
}
#if CONFIG_AVDEVICE
static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
static int print_device_sources(const AVInputFormat *fmt, AVDictionary *opts)
{
int ret, i;
AVDeviceInfoList *device_list = NULL;
@ -2293,7 +2300,7 @@ static int print_device_sources(AVInputFormat *fmt, AVDictionary *opts)
return ret;
}
static int print_device_sinks(AVOutputFormat *fmt, AVDictionary *opts)
static int print_device_sinks(const AVOutputFormat *fmt, AVDictionary *opts)
{
int ret, i;
AVDeviceInfoList *device_list = NULL;
@ -2347,7 +2354,7 @@ static int show_sinks_sources_parse_arg(const char *arg, char **dev, AVDictionar
int show_sources(void *optctx, const char *opt, const char *arg)
{
AVInputFormat *fmt = NULL;
const AVInputFormat *fmt = NULL;
char *dev = NULL;
AVDictionary *opts = NULL;
int ret = 0;
@ -2385,7 +2392,7 @@ int show_sources(void *optctx, const char *opt, const char *arg)
int show_sinks(void *optctx, const char *opt, const char *arg)
{
AVOutputFormat *fmt = NULL;
const AVOutputFormat *fmt = NULL;
char *dev = NULL;
AVDictionary *opts = NULL;
int ret = 0;

@ -115,6 +115,11 @@ void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
*/
int opt_cpuflags(void *optctx, const char *opt, const char *arg);
/**
* Override the cpucount.
*/
int opt_cpucount(void *optctx, const char *opt, const char *arg);
/**
* Fallback for options that are not explicitly handled, these will be
* parsed through AVOptions.
@ -235,7 +240,7 @@ void show_help_options(const OptionDef *options, const char *msg, int req_flags,
void show_help_children(const AVClass *class, int flags);
/**
* Per-fftool specific help handlers. Implemented in each
* Per-fftool specific help handler. Implemented in each
* fftool, called by show_help().
*/
void show_help_default_ffmpeg(const char *opt, const char *arg);
@ -402,7 +407,7 @@ int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec);
* @return a pointer to the created dictionary
*/
AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
AVFormatContext *s, AVStream *st, AVCodec *codec);
AVFormatContext *s, AVStream *st, const AVCodec *codec);
/**
* Setup AVCodecContext options for avformat_find_stream_info().

@ -257,7 +257,7 @@ extern volatile int handleSIGTERM;
extern volatile int handleSIGXCPU;
extern volatile int handleSIGPIPE;
extern __thread volatile long _sessionId;
extern __thread volatile long globalSessionId;
extern void cancelSession(long sessionId);
extern int cancelRequested(long sessionId);
@ -443,16 +443,9 @@ extern __thread volatile int longjmp_value;
static void
sigterm_handler(int sig)
{
int ret;
received_sigterm = sig;
received_nb_signals++;
term_exit_sigsafe();
if(received_nb_signals > 3) {
ret = write(2/*STDERR_FILENO*/, "Received > 3 system signals, hard exiting\n",
strlen("Received > 3 system signals, hard exiting\n"));
if (ret < 0) { /* Do nothing */ };
exit(123);
}
}
#if HAVE_SETCONSOLECTRLHANDLER
@ -501,7 +494,12 @@ static BOOL WINAPI CtrlHandler(DWORD fdwCtrlType)
void term_init(void)
{
#if defined __linux__
struct sigaction action = {0};
#if defined __aarch64__ || defined __amd64__ || defined __x86_64__
struct sigaction action = {0};
#else
struct sigaction action = {{0}};
#endif
action.sa_handler = sigterm_handler;
/* block other interrupts while processing this one */
@ -697,6 +695,7 @@ static void ffmpeg_cleanup(int ret)
av_frame_free(&ost->filtered_frame);
av_frame_free(&ost->last_frame);
av_packet_free(&ost->pkt);
av_dict_free(&ost->encoder_opts);
av_freep(&ost->forced_keyframes);
@ -715,9 +714,9 @@ static void ffmpeg_cleanup(int ret)
if (ost->muxing_queue) {
while (av_fifo_size(ost->muxing_queue)) {
AVPacket pkt;
AVPacket *pkt;
av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
av_packet_unref(&pkt);
av_packet_free(&pkt);
}
av_fifo_freep(&ost->muxing_queue);
}
@ -729,6 +728,7 @@ static void ffmpeg_cleanup(int ret)
#endif
for (i = 0; i < nb_input_files; i++) {
avformat_close_input(&input_files[i]->ctx);
av_packet_free(&input_files[i]->pkt);
av_freep(&input_files[i]);
}
for (i = 0; i < nb_input_streams; i++) {
@ -736,6 +736,7 @@ static void ffmpeg_cleanup(int ret)
av_frame_free(&ist->decoded_frame);
av_frame_free(&ist->filter_frame);
av_packet_free(&ist->pkt);
av_dict_free(&ist->decoder_opts);
avsubtitle_free(&ist->prev_sub.subtitle);
av_frame_free(&ist->sub2video.frame);
@ -768,7 +769,7 @@ static void ffmpeg_cleanup(int ret)
if (received_sigterm) {
av_log(NULL, AV_LOG_INFO, "Exiting normally, received signal %d.\n",
(int) received_sigterm);
} else if (cancelRequested(_sessionId)) {
} else if (cancelRequested(globalSessionId)) {
av_log(NULL, AV_LOG_INFO, "Exiting normally, received cancel request.\n");
} else if (ret && atomic_load(&transcode_init_done)) {
av_log(NULL, AV_LOG_INFO, "Conversion failed!\n");
@ -795,7 +796,7 @@ void assert_avoptions(AVDictionary *m)
}
}
static void abort_codec_experimental(AVCodec *c, int encoder)
static void abort_codec_experimental(const AVCodec *c, int encoder)
{
exit_program(1);
}
@ -853,7 +854,7 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u
}
if (!of->header_written) {
AVPacket tmp_pkt = {0};
AVPacket *tmp_pkt;
/* the muxer is not initialized yet, buffer the packet */
if (!av_fifo_space(ost->muxing_queue)) {
unsigned int are_we_over_size =
@ -876,8 +877,11 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost, int u
ret = av_packet_make_refcounted(pkt);
if (ret < 0)
exit_program(1);
av_packet_move_ref(&tmp_pkt, pkt);
ost->muxing_queue_data_size += tmp_pkt.size;
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_generic_write(ost->muxing_queue, &tmp_pkt, sizeof(tmp_pkt), NULL);
return;
}
@ -1103,13 +1107,9 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
AVFrame *frame)
{
AVCodecContext *enc = ost->enc_ctx;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int ret;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
adjust_frame_pts_to_encoder_tb(of, ost, frame);
if (!check_recording_time(ost))
@ -1121,7 +1121,6 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
ost->samples_encoded += frame->nb_samples;
ost->frames_encoded++;
av_assert0(pkt.size || !pkt.data);
update_benchmark(NULL);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder <- type:audio "
@ -1135,7 +1134,8 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
goto error;
while (1) {
ret = avcodec_receive_packet(enc, &pkt);
av_packet_unref(pkt);
ret = avcodec_receive_packet(enc, pkt);
if (ret == AVERROR(EAGAIN))
break;
if (ret < 0)
@ -1143,16 +1143,16 @@ static void do_audio_out(OutputFile *of, OutputStream *ost,
update_benchmark("encode_audio %d.%d", ost->file_index, ost->index);
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:audio "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &enc->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &enc->time_base));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
}
output_packet(of, &pkt, ost, 0);
output_packet(of, pkt, ost, 0);
}
return;
@ -1168,7 +1168,7 @@ static void do_subtitle_out(OutputFile *of,
int subtitle_out_max_size = 1024 * 1024;
int subtitle_out_size, nb, i;
AVCodecContext *enc;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int64_t pts;
if (sub->pts == AV_NOPTS_VALUE) {
@ -1226,21 +1226,21 @@ static void do_subtitle_out(OutputFile *of,
exit_program(1);
}
av_init_packet(&pkt);
pkt.data = subtitle_out;
pkt.size = subtitle_out_size;
pkt.pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->mux_timebase);
pkt.duration = av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
av_packet_unref(pkt);
pkt->data = subtitle_out;
pkt->size = subtitle_out_size;
pkt->pts = av_rescale_q(sub->pts, AV_TIME_BASE_Q, ost->mux_timebase);
pkt->duration = av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
if (enc->codec_id == AV_CODEC_ID_DVB_SUBTITLE) {
/* XXX: the pts correction is handled here. Maybe handling
it in the codec would be better */
if (i == 0)
pkt.pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
pkt->pts += av_rescale_q(sub->start_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
else
pkt.pts += av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
pkt->pts += av_rescale_q(sub->end_display_time, (AVRational){ 1, 1000 }, ost->mux_timebase);
}
pkt.dts = pkt.pts;
output_packet(of, &pkt, ost, 0);
pkt->dts = pkt->pts;
output_packet(of, pkt, ost, 0);
}
}
@ -1249,7 +1249,7 @@ static void do_video_out(OutputFile *of,
AVFrame *next_picture)
{
int ret, format_video_sync;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
AVCodecContext *enc = ost->enc_ctx;
AVRational frame_rate;
int nb_frames, nb0_frames, i;
@ -1270,7 +1270,7 @@ static void do_video_out(OutputFile *of,
if (frame_rate.num > 0 && frame_rate.den > 0)
duration = 1/(av_q2d(frame_rate) * av_q2d(enc->time_base));
if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->st->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
if(ist && ist->st->start_time != AV_NOPTS_VALUE && ist->first_dts != AV_NOPTS_VALUE && ost->frame_rate.num)
duration = FFMIN(duration, 1/(av_q2d(ost->frame_rate) * av_q2d(enc->time_base)));
if (!ost->filters_script &&
@ -1389,15 +1389,13 @@ static void do_video_out(OutputFile *of,
}
}
ost->last_dropped = nb_frames == nb0_frames && next_picture;
ost->dropped_keyframe = ost->last_dropped && next_picture && next_picture->key_frame;
/* duplicates frame if needed */
for (i = 0; i < nb_frames; i++) {
AVFrame *in_picture;
int forced_keyframe = 0;
double pts_time;
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
if (i < nb0_frames && ost->last_frame) {
in_picture = ost->last_frame;
@ -1452,6 +1450,11 @@ static void do_video_out(OutputFile *of,
&& in_picture->key_frame==1
&& !i) {
forced_keyframe = 1;
} else if ( ost->forced_keyframes
&& !strncmp(ost->forced_keyframes, "source_no_drop", 14)
&& !i) {
forced_keyframe = (in_picture->key_frame == 1) || ost->dropped_keyframe;
ost->dropped_keyframe = 0;
}
if (forced_keyframe) {
@ -1476,7 +1479,8 @@ static void do_video_out(OutputFile *of,
av_frame_remove_side_data(in_picture, AV_FRAME_DATA_A53_CC);
while (1) {
ret = avcodec_receive_packet(enc, &pkt);
av_packet_unref(pkt);
ret = avcodec_receive_packet(enc, pkt);
update_benchmark("encode_video %d.%d", ost->file_index, ost->index);
if (ret == AVERROR(EAGAIN))
break;
@ -1486,24 +1490,24 @@ static void do_video_out(OutputFile *of,
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &enc->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &enc->time_base));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &enc->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &enc->time_base));
}
if (pkt.pts == AV_NOPTS_VALUE && !(enc->codec->capabilities & AV_CODEC_CAP_DELAY))
pkt.pts = ost->sync_opts;
if (pkt->pts == AV_NOPTS_VALUE && !(enc->codec->capabilities & AV_CODEC_CAP_DELAY))
pkt->pts = ost->sync_opts;
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "encoder -> type:video "
"pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s\n",
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ost->mux_timebase),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ost->mux_timebase));
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ost->mux_timebase),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ost->mux_timebase));
}
frame_size = pkt.size;
output_packet(of, &pkt, ost, 0);
frame_size = pkt->size;
output_packet(of, pkt, ost, 0);
/* if two pass, output log */
if (ost->logfile && enc->stats_out) {
@ -1632,6 +1636,9 @@ static int reap_filters(int flush)
if (av_buffersink_get_type(filter) == AVMEDIA_TYPE_AUDIO)
init_output_stream_wrapper(ost, NULL, 1);
if (!ost->pkt && !(ost->pkt = av_packet_alloc())) {
return AVERROR(ENOMEM);
}
if (!ost->filtered_frame && !(ost->filtered_frame = av_frame_alloc())) {
return AVERROR(ENOMEM);
}
@ -2140,7 +2147,7 @@ static void flush_encoders(void)
for (;;) {
const char *desc = NULL;
AVPacket pkt;
AVPacket *pkt = ost->pkt;
int pkt_size;
switch (enc->codec_type) {
@ -2154,13 +2161,10 @@ static void flush_encoders(void)
av_assert0(0);
}
av_init_packet(&pkt);
pkt.data = NULL;
pkt.size = 0;
update_benchmark(NULL);
while ((ret = avcodec_receive_packet(enc, &pkt)) == AVERROR(EAGAIN)) {
av_packet_unref(pkt);
while ((ret = avcodec_receive_packet(enc, pkt)) == AVERROR(EAGAIN)) {
ret = avcodec_send_frame(enc, NULL);
if (ret < 0) {
av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n",
@ -2181,16 +2185,16 @@ static void flush_encoders(void)
fprintf(ost->logfile, "%s", enc->stats_out);
}
if (ret == AVERROR_EOF) {
output_packet(of, &pkt, ost, 1);
output_packet(of, pkt, ost, 1);
break;
}
if (ost->finished & MUXER_FINISHED) {
av_packet_unref(&pkt);
av_packet_unref(pkt);
continue;
}
av_packet_rescale_ts(&pkt, enc->time_base, ost->mux_timebase);
pkt_size = pkt.size;
output_packet(of, &pkt, ost, 0);
av_packet_rescale_ts(pkt, enc->time_base, ost->mux_timebase);
pkt_size = pkt->size;
output_packet(of, pkt, ost, 0);
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO && vstats_filename) {
do_video_stats(ost, pkt_size);
}
@ -2224,14 +2228,12 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
InputFile *f = input_files [ist->file_index];
int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? 0 : of->start_time;
int64_t ost_tb_start_time = av_rescale_q(start_time, AV_TIME_BASE_Q, ost->mux_timebase);
AVPacket opkt;
AVPacket *opkt = ost->pkt;
av_packet_unref(opkt);
// EOF: flush output bitstream filters.
if (!pkt) {
av_init_packet(&opkt);
opkt.data = NULL;
opkt.size = 0;
output_packet(of, &opkt, ost, 1);
output_packet(of, opkt, ost, 1);
return;
}
@ -2256,9 +2258,11 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
}
if (f->recording_time != INT64_MAX) {
start_time = f->ctx->start_time;
if (f->start_time != AV_NOPTS_VALUE && copy_ts)
start_time += f->start_time;
start_time = 0;
if (copy_ts) {
start_time += f->start_time != AV_NOPTS_VALUE ? f->start_time : 0;
start_time += start_at_zero ? 0 : f->ctx->start_time;
}
if (ist->pts >= f->recording_time + start_time) {
close_output_stream(ost);
return;
@ -2269,30 +2273,30 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p
if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO)
ost->sync_opts++;
if (av_packet_ref(&opkt, pkt) < 0)
if (av_packet_ref(opkt, pkt) < 0)
exit_program(1);
if (pkt->pts != AV_NOPTS_VALUE)
opkt.pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time;
opkt->pts = av_rescale_q(pkt->pts, ist->st->time_base, ost->mux_timebase) - ost_tb_start_time;
if (pkt->dts == AV_NOPTS_VALUE) {
opkt.dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase);
opkt->dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ost->mux_timebase);
} else if (ost->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO) {
int duration = av_get_audio_frame_duration(ist->dec_ctx, pkt->size);
if(!duration)
duration = ist->dec_ctx->frame_size;
opkt.dts = av_rescale_delta(ist->st->time_base, pkt->dts,
opkt->dts = av_rescale_delta(ist->st->time_base, pkt->dts,
(AVRational){1, ist->dec_ctx->sample_rate}, duration,
&ist->filter_in_rescale_delta_last, ost->mux_timebase);
/* dts will be set immediately afterwards to what pts is now */
opkt.pts = opkt.dts - ost_tb_start_time;
opkt->pts = opkt->dts - ost_tb_start_time;
} else
opkt.dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase);
opkt.dts -= ost_tb_start_time;
opkt->dts = av_rescale_q(pkt->dts, ist->st->time_base, ost->mux_timebase);
opkt->dts -= ost_tb_start_time;
opkt.duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase);
opkt->duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase);
output_packet(of, &opkt, ost, 0);
output_packet(of, opkt, ost, 0);
}
int guess_input_channel_layout(InputStream *ist)
@ -2431,7 +2435,7 @@ static int ifilter_send_eof(InputFilter *ifilter, int64_t pts)
if (ifilter->filter) {
/* THIS VALIDATION IS REQUIRED TO COMPLETE CANCELLATION */
if (!received_sigterm && !cancelRequested(_sessionId)) {
if (!received_sigterm && !cancelRequested(globalSessionId)) {
ret = av_buffersrc_close(ifilter->filter, pts, AV_BUFFERSRC_FLAG_PUSH);
}
if (ret < 0)
@ -2571,7 +2575,6 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
int i, ret = 0, err = 0;
int64_t best_effort_timestamp;
int64_t dts = AV_NOPTS_VALUE;
AVPacket avpkt;
// With fate-indeo3-2, we're getting 0-sized packets before EOF for some
// reason. This seems like a semi-critical bug. Don't trigger EOF, and
@ -2587,8 +2590,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
if (ist->dts != AV_NOPTS_VALUE)
dts = av_rescale_q(ist->dts, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt) {
avpkt = *pkt;
avpkt.dts = dts; // ffmpeg.c probably shouldn't do this
pkt->dts = dts; // ffmpeg.c probably shouldn't do this
}
// The old code used to set dts on the drain packet, which does not work
@ -2602,7 +2604,7 @@ static int decode_video(InputStream *ist, AVPacket *pkt, int *got_output, int64_
}
update_benchmark(NULL);
ret = decode(ist->dec_ctx, decoded_frame, got_output, pkt ? &avpkt : NULL);
ret = decode(ist->dec_ctx, decoded_frame, got_output, pkt);
update_benchmark("decode_video %d.%d", ist->file_index, ist->st->index);
if (ret < 0)
*decode_failed = 1;
@ -2761,6 +2763,8 @@ static int transcode_subtitles(InputStream *ist, AVPacket *pkt, int *got_output,
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
exit_program(1);
if (!check_output_constraints(ist, ost) || !ost->encoding_needed
|| ost->enc->type != AVMEDIA_TYPE_SUBTITLE)
continue;
@ -2796,11 +2800,18 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
int repeating = 0;
int eof_reached = 0;
AVPacket avpkt;
AVPacket *avpkt;
if (!ist->pkt && !(ist->pkt = av_packet_alloc()))
return AVERROR(ENOMEM);
avpkt = ist->pkt;
if (!ist->saw_first_ts) {
ist->first_dts =
ist->dts = ist->st->avg_frame_rate.num ? - ist->dec_ctx->has_b_frames * AV_TIME_BASE / av_q2d(ist->st->avg_frame_rate) : 0;
ist->pts = 0;
if (pkt && pkt->pts != AV_NOPTS_VALUE && !ist->decoding_needed) {
ist->first_dts =
ist->dts += av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
ist->pts = ist->dts; //unused but better to set it to a value thats not totally wrong
}
@ -2812,13 +2823,11 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
if (ist->next_pts == AV_NOPTS_VALUE)
ist->next_pts = ist->pts;
if (!pkt) {
/* EOF handling */
av_init_packet(&avpkt);
avpkt.data = NULL;
avpkt.size = 0;
} else {
avpkt = *pkt;
if (pkt) {
av_packet_unref(avpkt);
ret = av_packet_ref(avpkt, pkt);
if (ret < 0)
return ret;
}
if (pkt && pkt->dts != AV_NOPTS_VALUE) {
@ -2839,11 +2848,12 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
switch (ist->dec_ctx->codec_type) {
case AVMEDIA_TYPE_AUDIO:
ret = decode_audio (ist, repeating ? NULL : &avpkt, &got_output,
ret = decode_audio (ist, repeating ? NULL : avpkt, &got_output,
&decode_failed);
av_packet_unref(avpkt);
break;
case AVMEDIA_TYPE_VIDEO:
ret = decode_video (ist, repeating ? NULL : &avpkt, &got_output, &duration_pts, !pkt,
ret = decode_video (ist, repeating ? NULL : avpkt, &got_output, &duration_pts, !pkt,
&decode_failed);
if (!repeating || !pkt || got_output) {
if (pkt && pkt->duration) {
@ -2868,13 +2878,15 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
ist->next_pts += duration_dts;
}
}
av_packet_unref(avpkt);
break;
case AVMEDIA_TYPE_SUBTITLE:
if (repeating)
break;
ret = transcode_subtitles(ist, &avpkt, &got_output, &decode_failed);
ret = transcode_subtitles(ist, avpkt, &got_output, &decode_failed);
if (!pkt && ret >= 0)
ret = AVERROR_EOF;
av_packet_unref(avpkt);
break;
default:
return -1;
@ -2963,6 +2975,8 @@ static int process_input_packet(InputStream *ist, const AVPacket *pkt, int no_eo
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
if (!ost->pkt && !(ost->pkt = av_packet_alloc()))
exit_program(1);
if (!check_output_constraints(ist, ost) || ost->encoding_needed)
continue;
@ -3119,7 +3133,7 @@ static int init_input_stream(int ist_index, char *error, int error_len)
InputStream *ist = input_streams[ist_index];
if (ist->decoding_needed) {
AVCodec *codec = ist->dec;
const AVCodec *codec = ist->dec;
if (!codec) {
snprintf(error, error_len, "Decoder (codec %s) not found for input stream #%d:%d",
avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
@ -3130,10 +3144,11 @@ static int init_input_stream(int ist_index, char *error, int error_len)
ist->dec_ctx->get_format = get_format;
ist->dec_ctx->get_buffer2 = get_buffer;
#if LIBAVCODEC_VERSION_MAJOR < 60
FF_DISABLE_DEPRECATION_WARNINGS
ist->dec_ctx->thread_safe_callbacks = 1;
FF_ENABLE_DEPRECATION_WARNINGS
#endif
av_opt_set_int(ist->dec_ctx, "refcounted_frames", 1, 0);
if (ist->dec_ctx->codec_id == AV_CODEC_ID_DVB_SUBTITLE &&
(ist->decoding_needed & DECODING_FOR_OST)) {
av_dict_set(&ist->decoder_opts, "compute_edt", "1", AV_DICT_DONT_OVERWRITE);
@ -3231,10 +3246,11 @@ static int check_init_output_file(OutputFile *of, int file_index)
ost->mux_timebase = ost->st->time_base;
while (av_fifo_size(ost->muxing_queue)) {
AVPacket pkt;
AVPacket *pkt;
av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
ost->muxing_queue_data_size -= pkt.size;
write_packet(of, &pkt, ost, 1);
ost->muxing_queue_data_size -= pkt->size;
write_packet(of, pkt, ost, 1);
av_packet_free(&pkt);
}
}
@ -3315,15 +3331,23 @@ static int init_output_stream_streamcopy(OutputStream *ost)
if (!ost->frame_rate.num)
ost->frame_rate = ist->framerate;
ost->st->avg_frame_rate = ost->frame_rate;
if (ost->frame_rate.num)
ost->st->avg_frame_rate = ost->frame_rate;
else
ost->st->avg_frame_rate = ist->st->avg_frame_rate;
ret = avformat_transfer_internal_stream_timing_info(of->ctx->oformat, ost->st, ist->st, copy_tb);
if (ret < 0)
return ret;
// copy timebase while removing common factors
if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0)
ost->st->time_base = av_add_q(av_stream_get_codec_timebase(ost->st), (AVRational){0, 1});
if (ost->st->time_base.num <= 0 || ost->st->time_base.den <= 0) {
if (ost->frame_rate.num)
ost->st->time_base = av_inv_q(ost->frame_rate);
else
ost->st->time_base = av_add_q(av_stream_get_codec_timebase(ost->st), (AVRational){0, 1});
}
// copy estimated duration as a hint to the muxer
if (ost->st->duration <= 0 && ist->st->duration > 0)
@ -3634,12 +3658,7 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
enc_ctx->bits_per_raw_sample = frame_bits_per_raw_sample;
}
if (ost->top_field_first == 0) {
enc_ctx->field_order = AV_FIELD_BB;
} else if (ost->top_field_first == 1) {
enc_ctx->field_order = AV_FIELD_TT;
}
// Field order: autodetection
if (frame) {
if (enc_ctx->flags & (AV_CODEC_FLAG_INTERLACED_DCT | AV_CODEC_FLAG_INTERLACED_ME) &&
ost->top_field_first >= 0)
@ -3654,6 +3673,13 @@ static int init_output_stream_encode(OutputStream *ost, AVFrame *frame)
enc_ctx->field_order = AV_FIELD_PROGRESSIVE;
}
// Field order: override
if (ost->top_field_first == 0) {
enc_ctx->field_order = AV_FIELD_BB;
} else if (ost->top_field_first == 1) {
enc_ctx->field_order = AV_FIELD_TT;
}
if (ost->forced_keyframes) {
if (!strncmp(ost->forced_keyframes, "expr:", 5)) {
ret = av_expr_parse(&ost->forced_keyframes_pexpr, ost->forced_keyframes+5,
@ -3699,7 +3725,7 @@ static int init_output_stream(OutputStream *ost, AVFrame *frame, char *error, in
int ret = 0;
if (ost->encoding_needed) {
AVCodec *codec = ost->enc;
const AVCodec *codec = ost->enc;
AVCodecContext *dec = NULL;
InputStream *ist;
@ -3917,7 +3943,7 @@ static int transcode_init(void)
/* init framerate emulation */
for (i = 0; i < nb_input_files; i++) {
InputFile *ifile = input_files[i];
if (ifile->rate_emu)
if (ifile->readrate || ifile->rate_emu)
for (j = 0; j < ifile->nb_streams; j++)
input_streams[j + ifile->ist_index]->start = av_gettime_relative();
}
@ -4111,16 +4137,16 @@ static OutputStream *choose_output(void)
for (i = 0; i < nb_output_streams; i++) {
OutputStream *ost = output_streams[i];
int64_t opts = ost->st->cur_dts == AV_NOPTS_VALUE ? INT64_MIN :
av_rescale_q(ost->st->cur_dts, ost->st->time_base,
int64_t opts = ost->last_mux_dts == AV_NOPTS_VALUE ? INT64_MIN :
av_rescale_q(ost->last_mux_dts, ost->st->time_base,
AV_TIME_BASE_Q);
if (ost->st->cur_dts == AV_NOPTS_VALUE)
if (ost->last_mux_dts == AV_NOPTS_VALUE)
av_log(NULL, AV_LOG_DEBUG,
"cur_dts is invalid st:%d (%d) [init:%d i_done:%d finish:%d] (this is harmless if it occurs once at the start per stream)\n",
ost->st->index, ost->st->id, ost->initialized, ost->inputs_done, ost->finished);
if (!ost->initialized && !ost->inputs_done)
return ost;
return ost->unavailable ? NULL : ost;
if (!ost->finished && opts < opts_min) {
opts_min = opts;
@ -4258,12 +4284,12 @@ static int check_keyboard_interaction(int64_t cur_time)
static void *input_thread(void *arg)
{
InputFile *f = arg;
AVPacket *pkt = f->pkt, *queue_pkt;
unsigned flags = f->non_blocking ? AV_THREAD_MESSAGE_NONBLOCK : 0;
int ret = 0;
while (1) {
AVPacket pkt;
ret = av_read_frame(f->ctx, &pkt);
ret = av_read_frame(f->ctx, pkt);
if (ret == AVERROR(EAGAIN)) {
av_usleep(10000);
@ -4273,10 +4299,17 @@ static void *input_thread(void *arg)
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
ret = av_thread_message_queue_send(f->in_thread_queue, &pkt, flags);
queue_pkt = av_packet_alloc();
if (!queue_pkt) {
av_packet_unref(pkt);
av_thread_message_queue_set_err_recv(f->in_thread_queue, AVERROR(ENOMEM));
break;
}
av_packet_move_ref(queue_pkt, pkt);
ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
if (flags && ret == AVERROR(EAGAIN)) {
flags = 0;
ret = av_thread_message_queue_send(f->in_thread_queue, &pkt, flags);
ret = av_thread_message_queue_send(f->in_thread_queue, &queue_pkt, flags);
av_log(f->ctx, AV_LOG_WARNING,
"Thread message queue blocking; consider raising the "
"thread_queue_size option (current value: %d)\n",
@ -4287,7 +4320,7 @@ static void *input_thread(void *arg)
av_log(f->ctx, AV_LOG_ERROR,
"Unable to send packet to main thread: %s\n",
av_err2str(ret));
av_packet_unref(&pkt);
av_packet_free(&queue_pkt);
av_thread_message_queue_set_err_recv(f->in_thread_queue, ret);
break;
}
@ -4299,13 +4332,13 @@ static void *input_thread(void *arg)
static void free_input_thread(int i)
{
InputFile *f = input_files[i];
AVPacket pkt;
AVPacket *pkt;
if (!f || !f->in_thread_queue)
return;
av_thread_message_queue_set_err_send(f->in_thread_queue, AVERROR_EOF);
while (av_thread_message_queue_recv(f->in_thread_queue, &pkt, 0) >= 0)
av_packet_unref(&pkt);
av_packet_free(&pkt);
pthread_join(f->thread, NULL);
f->joined = 1;
@ -4334,7 +4367,7 @@ static int init_input_thread(int i)
strcmp(f->ctx->iformat->name, "lavfi"))
f->non_blocking = 1;
ret = av_thread_message_queue_alloc(&f->in_thread_queue,
f->thread_queue_size, sizeof(AVPacket));
f->thread_queue_size, sizeof(f->pkt));
if (ret < 0)
return ret;
@ -4359,7 +4392,7 @@ static int init_input_threads(void)
return 0;
}
static int get_input_packet_mt(InputFile *f, AVPacket *pkt)
static int get_input_packet_mt(InputFile *f, AVPacket **pkt)
{
return av_thread_message_queue_recv(f->in_thread_queue, pkt,
f->non_blocking ?
@ -4367,14 +4400,22 @@ static int get_input_packet_mt(InputFile *f, AVPacket *pkt)
}
#endif
static int get_input_packet(InputFile *f, AVPacket *pkt)
static int get_input_packet(InputFile *f, AVPacket **pkt)
{
if (f->rate_emu) {
if (f->readrate || f->rate_emu) {
int i;
int64_t file_start = copy_ts * (
(f->ctx->start_time != AV_NOPTS_VALUE ? f->ctx->start_time * !start_at_zero : 0) +
(f->start_time != AV_NOPTS_VALUE ? f->start_time : 0)
);
float scale = f->rate_emu ? 1.0 : f->readrate;
for (i = 0; i < f->nb_streams; i++) {
InputStream *ist = input_streams[f->ist_index + i];
int64_t pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
int64_t now = av_gettime_relative() - ist->start;
int64_t stream_ts_offset, pts, now;
if (!ist->nb_packets || (ist->decoding_needed && !ist->got_output)) continue;
stream_ts_offset = FFMAX(ist->first_dts != AV_NOPTS_VALUE ? ist->first_dts : 0, file_start);
pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE);
now = (av_gettime_relative() - ist->start) * scale + stream_ts_offset;
if (pts > now)
return AVERROR(EAGAIN);
}
@ -4384,7 +4425,8 @@ static int get_input_packet(InputFile *f, AVPacket *pkt)
if (f->thread_queue_size)
return get_input_packet_mt(f, pkt);
#endif
return av_read_frame(f->ctx, pkt);
*pkt = f->pkt;
return av_read_frame(f->ctx, *pkt);
}
static int got_eagain(void)
@ -4496,7 +4538,7 @@ static int process_input(int file_index)
InputFile *ifile = input_files[file_index];
AVFormatContext *is;
InputStream *ist;
AVPacket pkt;
AVPacket *pkt;
int ret, thread_ret, i, j;
int64_t duration;
int64_t pkt_dts;
@ -4571,27 +4613,27 @@ static int process_input(int file_index)
reset_eagain();
if (do_pkt_dump) {
av_pkt_dump_log2(NULL, AV_LOG_INFO, &pkt, do_hex_dump,
is->streams[pkt.stream_index]);
av_pkt_dump_log2(NULL, AV_LOG_INFO, pkt, do_hex_dump,
is->streams[pkt->stream_index]);
}
/* the following test is needed in case new streams appear
dynamically in stream : we ignore them */
if (pkt.stream_index >= ifile->nb_streams) {
report_new_stream(file_index, &pkt);
if (pkt->stream_index >= ifile->nb_streams) {
report_new_stream(file_index, pkt);
goto discard_packet;
}
ist = input_streams[ifile->ist_index + pkt.stream_index];
ist = input_streams[ifile->ist_index + pkt->stream_index];
ist->data_size += pkt.size;
ist->data_size += pkt->size;
ist->nb_packets++;
if (ist->discard)
goto discard_packet;
if (pkt.flags & AV_PKT_FLAG_CORRUPT) {
if (pkt->flags & AV_PKT_FLAG_CORRUPT) {
av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING,
"%s: corrupt input packet in stream %d\n", is->url, pkt.stream_index);
"%s: corrupt input packet in stream %d\n", is->url, pkt->stream_index);
if (exit_on_error)
exit_program(1);
}
@ -4599,11 +4641,11 @@ static int process_input(int file_index)
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s "
"next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
ifile->ist_index + pkt.stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(ist->next_dts), av_ts2timestr(ist->next_dts, &AV_TIME_BASE_Q),
av_ts2str(ist->next_pts), av_ts2timestr(ist->next_pts, &AV_TIME_BASE_Q),
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ist->st->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ist->st->time_base),
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
av_ts2str(input_files[ist->file_index]->ts_offset),
av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
}
@ -4633,12 +4675,12 @@ static int process_input(int file_index)
stime2= stime + (1ULL<<ist->st->pts_wrap_bits);
ist->wrap_correction_done = 1;
if(stime2 > stime && pkt.dts != AV_NOPTS_VALUE && pkt.dts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt.dts -= 1ULL<<ist->st->pts_wrap_bits;
if(stime2 > stime && pkt->dts != AV_NOPTS_VALUE && pkt->dts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt->dts -= 1ULL<<ist->st->pts_wrap_bits;
ist->wrap_correction_done = 0;
}
if(stime2 > stime && pkt.pts != AV_NOPTS_VALUE && pkt.pts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt.pts -= 1ULL<<ist->st->pts_wrap_bits;
if(stime2 > stime && pkt->pts != AV_NOPTS_VALUE && pkt->pts > stime + (1LL<<(ist->st->pts_wrap_bits-1))) {
pkt->pts -= 1ULL<<ist->st->pts_wrap_bits;
ist->wrap_correction_done = 0;
}
}
@ -4652,10 +4694,10 @@ static int process_input(int file_index)
if (src_sd->type == AV_PKT_DATA_DISPLAYMATRIX)
continue;
if (av_packet_get_side_data(&pkt, src_sd->type, NULL))
if (av_packet_get_side_data(pkt, src_sd->type, NULL))
continue;
dst_data = av_packet_new_side_data(&pkt, src_sd->type, src_sd->size);
dst_data = av_packet_new_side_data(pkt, src_sd->type, src_sd->size);
if (!dst_data)
exit_program(1);
@ -4663,17 +4705,17 @@ static int process_input(int file_index)
}
}
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts += av_rescale_q(ifile->ts_offset, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts *= ist->ts_scale;
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts *= ist->ts_scale;
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts *= ist->ts_scale;
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts *= ist->ts_scale;
pkt_dts = av_rescale_q_rnd(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if ((ist->dec_ctx->codec_type == AVMEDIA_TYPE_VIDEO ||
ist->dec_ctx->codec_type == AVMEDIA_TYPE_AUDIO) &&
pkt_dts != AV_NOPTS_VALUE && ist->next_dts == AV_NOPTS_VALUE && !copy_ts
@ -4685,27 +4727,27 @@ static int process_input(int file_index)
av_log(NULL, AV_LOG_DEBUG,
"Inter stream timestamp discontinuity %"PRId64", new offset= %"PRId64"\n",
delta, ifile->ts_offset);
pkt.dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
}
}
duration = av_rescale_q(ifile->duration, ifile->time_base, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE) {
pkt.pts += duration;
ist->max_pts = FFMAX(pkt.pts, ist->max_pts);
ist->min_pts = FFMIN(pkt.pts, ist->min_pts);
if (pkt->pts != AV_NOPTS_VALUE) {
pkt->pts += duration;
ist->max_pts = FFMAX(pkt->pts, ist->max_pts);
ist->min_pts = FFMIN(pkt->pts, ist->min_pts);
}
if (pkt.dts != AV_NOPTS_VALUE)
pkt.dts += duration;
if (pkt->dts != AV_NOPTS_VALUE)
pkt->dts += duration;
pkt_dts = av_rescale_q_rnd(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
pkt_dts = av_rescale_q_rnd(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if (copy_ts && pkt_dts != AV_NOPTS_VALUE && ist->next_dts != AV_NOPTS_VALUE &&
(is->iformat->flags & AVFMT_TS_DISCONT) && ist->st->pts_wrap_bits < 60) {
int64_t wrap_dts = av_rescale_q_rnd(pkt.dts + (1LL<<ist->st->pts_wrap_bits),
int64_t wrap_dts = av_rescale_q_rnd(pkt->dts + (1LL<<ist->st->pts_wrap_bits),
ist->st->time_base, AV_TIME_BASE_Q,
AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
if (FFABS(wrap_dts - ist->next_dts) < FFABS(pkt_dts - ist->next_dts)/10)
@ -4728,46 +4770,51 @@ static int process_input(int file_index)
ist->file_index, ist->st->index, ist->st->id,
av_get_media_type_string(ist->dec_ctx->codec_type),
delta, ifile->ts_offset);
pkt.dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt.pts != AV_NOPTS_VALUE)
pkt.pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
pkt->dts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
if (pkt->pts != AV_NOPTS_VALUE)
pkt->pts -= av_rescale_q(delta, AV_TIME_BASE_Q, ist->st->time_base);
}
} else {
if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
av_log(NULL, AV_LOG_WARNING, "DTS %"PRId64", next:%"PRId64" st:%d invalid dropping\n", pkt.dts, ist->next_dts, pkt.stream_index);
pkt.dts = AV_NOPTS_VALUE;
av_log(NULL, AV_LOG_WARNING, "DTS %"PRId64", next:%"PRId64" st:%d invalid dropping\n", pkt->dts, ist->next_dts, pkt->stream_index);
pkt->dts = AV_NOPTS_VALUE;
}
if (pkt.pts != AV_NOPTS_VALUE){
int64_t pkt_pts = av_rescale_q(pkt.pts, ist->st->time_base, AV_TIME_BASE_Q);
if (pkt->pts != AV_NOPTS_VALUE){
int64_t pkt_pts = av_rescale_q(pkt->pts, ist->st->time_base, AV_TIME_BASE_Q);
delta = pkt_pts - ist->next_dts;
if ( delta < -1LL*dts_error_threshold*AV_TIME_BASE ||
delta > 1LL*dts_error_threshold*AV_TIME_BASE) {
av_log(NULL, AV_LOG_WARNING, "PTS %"PRId64", next:%"PRId64" invalid dropping st:%d\n", pkt.pts, ist->next_dts, pkt.stream_index);
pkt.pts = AV_NOPTS_VALUE;
av_log(NULL, AV_LOG_WARNING, "PTS %"PRId64", next:%"PRId64" invalid dropping st:%d\n", pkt->pts, ist->next_dts, pkt->stream_index);
pkt->pts = AV_NOPTS_VALUE;
}
}
}
}
if (pkt.dts != AV_NOPTS_VALUE)
ifile->last_ts = av_rescale_q(pkt.dts, ist->st->time_base, AV_TIME_BASE_Q);
if (pkt->dts != AV_NOPTS_VALUE)
ifile->last_ts = av_rescale_q(pkt->dts, ist->st->time_base, AV_TIME_BASE_Q);
if (debug_ts) {
av_log(NULL, AV_LOG_INFO, "demuxer+ffmpeg -> ist_index:%d type:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s off:%s off_time:%s\n",
ifile->ist_index + pkt.stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(pkt.pts), av_ts2timestr(pkt.pts, &ist->st->time_base),
av_ts2str(pkt.dts), av_ts2timestr(pkt.dts, &ist->st->time_base),
ifile->ist_index + pkt->stream_index, av_get_media_type_string(ist->dec_ctx->codec_type),
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &ist->st->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &ist->st->time_base),
av_ts2str(input_files[ist->file_index]->ts_offset),
av_ts2timestr(input_files[ist->file_index]->ts_offset, &AV_TIME_BASE_Q));
}
sub2video_heartbeat(ist, pkt.pts);
sub2video_heartbeat(ist, pkt->pts);
process_input_packet(ist, &pkt, 0);
process_input_packet(ist, pkt, 0);
discard_packet:
av_packet_unref(&pkt);
#if HAVE_THREADS
if (ifile->thread_queue_size)
av_packet_free(&pkt);
else
#endif
av_packet_unref(pkt);
return 0;
}
@ -4939,7 +4986,7 @@ static int transcode(void)
goto fail;
#endif
while (!received_sigterm && !cancelRequested(_sessionId)) {
while (!received_sigterm && !cancelRequested(globalSessionId)) {
int64_t cur_time= av_gettime_relative();
/* if 'q' pressed, exits */
@ -5195,6 +5242,7 @@ int ffmpeg_execute(int argc, char **argv)
{ "report", 0, { .func_arg = opt_report }, "generate a report" },
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
{ "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
#if CONFIG_AVDEVICE
@ -5677,10 +5725,10 @@ int ffmpeg_execute(int argc, char **argv)
if ((decode_error_stat[0] + decode_error_stat[1]) * max_error_rate < decode_error_stat[1])
exit_program(69);
exit_program((received_nb_signals || cancelRequested(_sessionId))? 255 : main_ffmpeg_return_code);
exit_program((received_nb_signals || cancelRequested(globalSessionId))? 255 : main_ffmpeg_return_code);
} else {
main_ffmpeg_return_code = (received_nb_signals || cancelRequested(_sessionId)) ? 255 : longjmp_value;
main_ffmpeg_return_code = (received_nb_signals || cancelRequested(globalSessionId)) ? 255 : longjmp_value;
}
return main_ffmpeg_return_code;

@ -54,6 +54,7 @@
#include "libavformat/avio.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/bsf.h"
#include "libavfilter/avfilter.h"
@ -83,7 +84,6 @@ enum HWAccelID {
HWACCEL_AUTO,
HWACCEL_GENERIC,
HWACCEL_VIDEOTOOLBOX,
HWACCEL_QSV,
};
typedef struct HWAccel {
@ -142,6 +142,7 @@ typedef struct OptionsContext {
int64_t input_ts_offset;
int loop;
int rate_emu;
float readrate;
int accurate_seek;
int thread_queue_size;
@ -330,14 +331,16 @@ typedef struct InputStream {
#define DECODING_FOR_FILTER 2
AVCodecContext *dec_ctx;
AVCodec *dec;
const AVCodec *dec;
AVFrame *decoded_frame;
AVFrame *filter_frame; /* a ref of decoded_frame, to be sent to filters */
AVPacket *pkt;
int64_t start; /* time when read started */
/* predicted dts of the next packet read for this stream or (when there are
* several frames in a packet) of the next frame in current packet (in AV_TIME_BASE units) */
int64_t next_dts;
int64_t first_dts; ///< dts of the first packet read for this stream (in AV_TIME_BASE units)
int64_t dts; ///< dts of the last packet read for this stream (in AV_TIME_BASE units)
int64_t next_pts; ///< synthetic pts for the next decode frame (in AV_TIME_BASE units)
@ -439,8 +442,11 @@ typedef struct InputFile {
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 */
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 */
@ -493,10 +499,11 @@ typedef struct OutputStream {
AVCodecContext *enc_ctx;
AVCodecParameters *ref_par; /* associated input codec parameters with encoders options applied */
AVCodec *enc;
const AVCodec *enc;
int64_t max_frames;
AVFrame *filtered_frame;
AVFrame *last_frame;
AVPacket *pkt;
int last_dropped;
int last_nb0_frames[3];
@ -522,6 +529,7 @@ typedef struct OutputStream {
char *forced_keyframes;
AVExpr *forced_keyframes_pexpr;
double forced_keyframes_expr_const_values[FKF_NB];
int dropped_keyframe;
/* audio only */
int *audio_channels_map; /* list of the channels id to pick from the source stream */
@ -757,8 +765,8 @@ void init_options(OptionsContext *o);
AVDictionary *strip_specifiers(AVDictionary *dict);
void parse_meta_type(char *arg, char *type, int *index, const char **stream_spec);
int fftools_copy_metadata(char *outspec, char *inspec, AVFormatContext *oc, AVFormatContext *ic, OptionsContext *o);
AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder);
AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st);
const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder);
const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st);
int open_input_file(OptionsContext *o, const char *filename);
int get_preset_file_2(const char *preset_name, const char *codec_name, AVIOContext **s);
int choose_encoder(OptionsContext *o, AVFormatContext *s, OutputStream *ost);

@ -47,22 +47,16 @@
#include "libavutil/imgutils.h"
#include "libavutil/samplefmt.h"
static const enum AVPixelFormat *get_compliance_unofficial_pix_fmts(enum AVCodecID codec_id, const enum AVPixelFormat default_formats[])
// FIXME: YUV420P etc. are actually supported with full color range,
// yet the latter information isn't available here.
static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *codec, const enum AVPixelFormat default_formats[])
{
static const enum AVPixelFormat mjpeg_formats[] =
{ AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P,
AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P,
AV_PIX_FMT_NONE };
static const enum AVPixelFormat ljpeg_formats[] =
{ AV_PIX_FMT_BGR24 , AV_PIX_FMT_BGRA , AV_PIX_FMT_BGR0,
AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_YUVJ422P,
AV_PIX_FMT_YUV420P , AV_PIX_FMT_YUV444P , AV_PIX_FMT_YUV422P,
AV_PIX_FMT_NONE};
if (codec_id == AV_CODEC_ID_MJPEG) {
if (!strcmp(codec->name, "mjpeg")) {
return mjpeg_formats;
} else if (codec_id == AV_CODEC_ID_LJPEG) {
return ljpeg_formats;
} else {
return default_formats;
}
@ -77,11 +71,11 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const
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) {
p = get_compliance_unofficial_pix_fmts(enc_ctx->codec_id, p);
if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_normal_pix_fmts(codec, p);
}
for (; *p != AV_PIX_FMT_NONE; p++) {
best= avcodec_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL);
best = av_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL);
if (*p == target)
break;
}
@ -98,29 +92,6 @@ enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx, const
return target;
}
void choose_sample_fmt(AVStream *st, const AVCodec *codec)
{
if (codec && codec->sample_fmts) {
const enum AVSampleFormat *p = codec->sample_fmts;
for (; *p != -1; p++) {
if (*p == st->codecpar->format)
break;
}
if (*p == -1) {
const AVCodecDescriptor *desc = avcodec_descriptor_get(codec->id);
if(desc && (desc->props & AV_CODEC_PROP_LOSSLESS) && av_get_sample_fmt_name(st->codecpar->format) > av_get_sample_fmt_name(codec->sample_fmts[0]))
av_log(NULL, AV_LOG_ERROR, "Conversion will not be lossless.\n");
if(av_get_sample_fmt_name(st->codecpar->format))
av_log(NULL, AV_LOG_WARNING,
"Incompatible sample format '%s' for codec '%s', auto-selecting format '%s'\n",
av_get_sample_fmt_name(st->codecpar->format),
codec->name,
av_get_sample_fmt_name(codec->sample_fmts[0]));
st->codecpar->format = codec->sample_fmts[0];
}
}
}
static char *choose_pix_fmts(OutputFilter *ofilter)
{
OutputStream *ost = ofilter->ost;
@ -148,8 +119,8 @@ static char *choose_pix_fmts(OutputFilter *ofilter)
exit_program(1);
p = ost->enc->pix_fmts;
if (ost->enc_ctx->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_unofficial_pix_fmts(ost->enc_ctx->codec_id, p);
if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) {
p = get_compliance_normal_pix_fmts(ost->enc, p);
}
for (; *p != AV_PIX_FMT_NONE; p++) {
@ -163,45 +134,39 @@ static char *choose_pix_fmts(OutputFilter *ofilter)
return NULL;
}
/* Define a function for building a string containing a list of
* allowed formats. */
#define DEF_CHOOSE_FORMAT(suffix, type, var, supported_list, none, get_name) \
static char *choose_ ## suffix (OutputFilter *ofilter) \
/* Define a function for appending a list of allowed formats
* to an AVBPrint. If nonempty, the list will have a header. */
#define DEF_CHOOSE_FORMAT(name, type, var, supported_list, none, printf_format, get_name) \
static void choose_ ## name (OutputFilter *ofilter, AVBPrint *bprint) \
{ \
if (ofilter->var == none && !ofilter->supported_list) \
return; \
av_bprintf(bprint, #name "="); \
if (ofilter->var != none) { \
get_name(ofilter->var); \
return av_strdup(name); \
} else if (ofilter->supported_list) { \
av_bprintf(bprint, printf_format, get_name(ofilter->var)); \
} else { \
const type *p; \
AVIOContext *s = NULL; \
uint8_t *ret; \
int len; \
\
if (avio_open_dyn_buf(&s) < 0) \
exit_program(1); \
\
for (p = ofilter->supported_list; *p != none; p++) { \
get_name(*p); \
avio_printf(s, "%s|", name); \
av_bprintf(bprint, printf_format "|", get_name(*p)); \
} \
len = avio_close_dyn_buf(s, &ret); \
ret[len - 1] = 0; \
return ret; \
} else \
return NULL; \
if (bprint->len > 0) \
bprint->str[--bprint->len] = '\0'; \
} \
av_bprint_chars(bprint, ':', 1); \
}
//DEF_CHOOSE_FORMAT(pix_fmts, enum AVPixelFormat, format, formats, AV_PIX_FMT_NONE,
// GET_PIX_FMT_NAME)
DEF_CHOOSE_FORMAT(sample_fmts, enum AVSampleFormat, format, formats,
AV_SAMPLE_FMT_NONE, GET_SAMPLE_FMT_NAME)
AV_SAMPLE_FMT_NONE, "%s", av_get_sample_fmt_name)
DEF_CHOOSE_FORMAT(sample_rates, int, sample_rate, sample_rates, 0,
GET_SAMPLE_RATE_NAME)
"%d", )
DEF_CHOOSE_FORMAT(channel_layouts, uint64_t, channel_layout, channel_layouts, 0,
GET_CH_LAYOUT_NAME)
"0x%"PRIx64, )
int init_simple_filtergraph(InputStream *ist, OutputStream *ost)
{
@ -505,8 +470,7 @@ static int configure_output_video_filter(FilterGraph *fg, OutputFilter *ofilter,
if ((pix_fmts = choose_pix_fmts(ofilter))) {
AVFilterContext *filter;
snprintf(name, sizeof(name), "format_out_%d_%d",
ost->file_index, ost->index);
ret = avfilter_graph_create_filter(&filter,
avfilter_get_by_name("format"),
"format", pix_fmts, NULL, fg->graph);
@ -561,7 +525,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
AVCodecContext *codec = ost->enc_ctx;
AVFilterContext *last_filter = out->filter_ctx;
int pad_idx = out->pad_idx;
char *sample_fmts, *sample_rates, *channel_layouts;
AVBPrint args;
char name[255];
int ret;
@ -584,72 +548,58 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
avfilter_get_by_name(filter_name), \
filter_name, arg, NULL, fg->graph); \
if (ret < 0) \
return ret; \
goto fail; \
\
ret = avfilter_link(last_filter, pad_idx, filt_ctx, 0); \
if (ret < 0) \
return ret; \
goto fail; \
\
last_filter = filt_ctx; \
pad_idx = 0; \
} while (0)
av_bprint_init(&args, 0, AV_BPRINT_SIZE_UNLIMITED);
if (ost->audio_channels_mapped) {
int i;
AVBPrint pan_buf;
av_bprint_init(&pan_buf, 256, 8192);
av_bprintf(&pan_buf, "0x%"PRIx64,
av_bprintf(&args, "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]);
av_bprintf(&args, "|c%d=c%d", i, ost->audio_channels_map[i]);
AUTO_INSERT_FILTER("-map_channel", "pan", pan_buf.str);
av_bprint_finalize(&pan_buf, NULL);
AUTO_INSERT_FILTER("-map_channel", "pan", args.str);
av_bprint_clear(&args);
}
if (codec->channels && !codec->channel_layout)
codec->channel_layout = av_get_default_channel_layout(codec->channels);
sample_fmts = choose_sample_fmts(ofilter);
sample_rates = choose_sample_rates(ofilter);
channel_layouts = choose_channel_layouts(ofilter);
if (sample_fmts || sample_rates || channel_layouts) {
choose_sample_fmts(ofilter, &args);
choose_sample_rates(ofilter, &args);
choose_channel_layouts(ofilter, &args);
if (!av_bprint_is_complete(&args)) {
ret = AVERROR(ENOMEM);
goto fail;
}
if (args.len) {
AVFilterContext *format;
char args[256];
args[0] = 0;
if (sample_fmts)
av_strlcatf(args, sizeof(args), "sample_fmts=%s:",
sample_fmts);
if (sample_rates)
av_strlcatf(args, sizeof(args), "sample_rates=%s:",
sample_rates);
if (channel_layouts)
av_strlcatf(args, sizeof(args), "channel_layouts=%s:",
channel_layouts);
av_freep(&sample_fmts);
av_freep(&sample_rates);
av_freep(&channel_layouts);
snprintf(name, sizeof(name), "format_out_%d_%d",
ost->file_index, ost->index);
ret = avfilter_graph_create_filter(&format,
avfilter_get_by_name("aformat"),
name, args, NULL, fg->graph);
name, args.str, NULL, fg->graph);
if (ret < 0)
return ret;
goto fail;
ret = avfilter_link(last_filter, pad_idx, format, 0);
if (ret < 0)
return ret;
goto fail;
last_filter = format;
pad_idx = 0;
}
if (ost->apad && of->shortest) {
char args[256];
int i;
for (i=0; i<of->ctx->nb_streams; i++)
@ -657,8 +607,7 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
break;
if (i<of->ctx->nb_streams) {
snprintf(args, sizeof(args), "%s", ost->apad);
AUTO_INSERT_FILTER("-apad", "apad", args);
AUTO_INSERT_FILTER("-apad", "apad", ost->apad);
}
}
@ -667,12 +616,14 @@ static int configure_output_audio_filter(FilterGraph *fg, OutputFilter *ofilter,
ret = insert_trim(of->start_time, of->recording_time,
&last_filter, &pad_idx, name);
if (ret < 0)
return ret;
goto fail;
if ((ret = avfilter_link(last_filter, pad_idx, ofilter->filter, 0)) < 0)
return ret;
goto fail;
fail:
av_bprint_finalize(&args, NULL);
return 0;
return ret;
}
int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOut *out)
@ -685,7 +636,7 @@ int configure_output_filter(FilterGraph *fg, OutputFilter *ofilter, AVFilterInOu
switch (avfilter_pad_get_type(out->filter_ctx->output_pads, out->pad_idx)) {
case AVMEDIA_TYPE_VIDEO: return configure_output_video_filter(fg, ofilter, out);
case AVMEDIA_TYPE_AUDIO: return configure_output_audio_filter(fg, ofilter, out);
default: av_assert0(0);
default: av_assert0(0); return 0;
}
}
@ -995,7 +946,7 @@ static int configure_input_filter(FilterGraph *fg, InputFilter *ifilter,
switch (avfilter_pad_get_type(in->filter_ctx->input_pads, in->pad_idx)) {
case AVMEDIA_TYPE_VIDEO: return configure_input_video_filter(fg, ifilter, in);
case AVMEDIA_TYPE_AUDIO: return configure_input_audio_filter(fg, ifilter, in);
default: av_assert0(0);
default: av_assert0(0); return 0;
}
}
@ -1034,7 +985,11 @@ int configure_filtergraph(FilterGraph *fg)
}
if (strlen(args))
args[strlen(args)-1] = 0;
fg->graph->scale_sws_opts = av_strdup(args);
if (!strncmp(args, "sws_flags=", 10)) {
// keep the 'flags=' part
fg->graph->scale_sws_opts = av_strdup(args+4);
}
args[0] = 0;
while ((e = av_dict_get(ost->swr_opts, "", e,

@ -348,6 +348,18 @@ int hw_device_setup_for_decode(InputStream *ist)
} else if (ist->hwaccel_id == HWACCEL_GENERIC) {
type = ist->hwaccel_device_type;
dev = hw_device_get_by_type(type);
// When "-qsv_device device" is used, an internal QSV device named
// as "__qsv_device" is created. Another QSV device is created too
// if "-init_hw_device qsv=name:device" is used. There are 2 QSV devices
// if both "-qsv_device device" and "-init_hw_device qsv=name:device"
// are used, hw_device_get_by_type(AV_HWDEVICE_TYPE_QSV) returns NULL.
// To keep back-compatibility with the removed ad-hoc libmfx setup code,
// call hw_device_get_by_name("__qsv_device") to select the internal QSV
// device.
if (!dev && type == AV_HWDEVICE_TYPE_QSV)
dev = hw_device_get_by_name("__qsv_device");
if (!dev)
err = hw_device_init_from_type(type, NULL, &dev);
} else {

@ -42,6 +42,7 @@
#include "libavformat/avformat.h"
#include "libavcodec/avcodec.h"
#include "libavcodec/bsf.h"
#include "libavfilter/avfilter.h"
@ -151,9 +152,6 @@ static const char *const opt_name_enc_time_bases[] = {"enc_time_base"
const HWAccel hwaccels[] = {
#if CONFIG_VIDEOTOOLBOX
{ "videotoolbox", videotoolbox_init, HWACCEL_VIDEOTOOLBOX, AV_PIX_FMT_VIDEOTOOLBOX },
#endif
#if CONFIG_LIBMFX
{ "qsv", qsv_init, HWACCEL_QSV, AV_PIX_FMT_QSV },
#endif
{ 0 },
};
@ -201,6 +199,7 @@ __thread int input_sync;
__thread int input_stream_potentially_available = 0;
__thread int ignore_unknown_streams = 0;
__thread int copy_unknown_streams = 0;
__thread static int recast_media = 0;
__thread int find_stream_info = 1;
extern __thread OptionDef *ffmpeg_options;
@ -586,6 +585,23 @@ int opt_vaapi_device(void *optctx, const char *opt, const char *arg)
}
#endif
#if CONFIG_QSV
static int opt_qsv_device(void *optctx, const char *opt, const char *arg)
{
const char *prefix = "qsv=__qsv_device:hw_any,child_device=";
int err;
char *tmp = av_asprintf("%s%s", prefix, arg);
if (!tmp)
return AVERROR(ENOMEM);
err = hw_device_init_from_string(tmp, NULL);
av_free(tmp);
return err;
}
#endif
int opt_init_hw_device(void *optctx, const char *opt, const char *arg)
{
if (!strcmp(arg, "list")) {
@ -754,11 +770,11 @@ int opt_recording_timestamp(void *optctx, const char *opt, const char *arg)
return 0;
}
AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
const AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
{
const AVCodecDescriptor *desc;
const char *codec_string = encoder ? "encoder" : "decoder";
AVCodec *codec;
const AVCodec *codec;
codec = encoder ?
avcodec_find_encoder_by_name(name) :
@ -776,21 +792,23 @@ AVCodec *find_codec_or_die(const char *name, enum AVMediaType type, int encoder)
av_log(NULL, AV_LOG_FATAL, "Unknown %s '%s'\n", codec_string, name);
exit_program(1);
}
if (codec->type != type) {
if (codec->type != type && !recast_media) {
av_log(NULL, AV_LOG_FATAL, "Invalid %s type '%s'\n", codec_string, name);
exit_program(1);
}
return codec;
}
AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
const AVCodec *choose_decoder(OptionsContext *o, AVFormatContext *s, AVStream *st)
{
char *codec_name = NULL;
MATCH_PER_STREAM_OPT(codec_names, str, codec_name, s, st);
if (codec_name) {
AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
const AVCodec *codec = find_codec_or_die(codec_name, st->codecpar->codec_type, 0);
st->codecpar->codec_id = codec->id;
if (recast_media && st->codecpar->codec_type != codec->type)
st->codecpar->codec_type = codec->type;
return codec;
} else
return avcodec_find_decoder(st->codecpar->codec_id);
@ -826,6 +844,7 @@ void add_input_streams(OptionsContext *o, AVFormatContext *ic)
ist->discard = 1;
st->discard = AVDISCARD_ALL;
ist->nb_samples = 0;
ist->first_dts = AV_NOPTS_VALUE;
ist->min_pts = INT64_MAX;
ist->max_pts = INT64_MIN;
@ -910,6 +929,12 @@ void add_input_streams(OptionsContext *o, AVFormatContext *ic)
"with old commandlines. This behaviour is DEPRECATED and will be removed "
"in the future. Please explicitly set \"-hwaccel_output_format cuda\".\n");
ist->hwaccel_output_format = AV_PIX_FMT_CUDA;
} else if (!hwaccel_output_format && hwaccel && !strcmp(hwaccel, "qsv")) {
av_log(NULL, AV_LOG_WARNING,
"WARNING: defaulting hwaccel_output_format to qsv for compatibility "
"with old commandlines. This behaviour is DEPRECATED and will be removed "
"in the future. Please explicitly set \"-hwaccel_output_format qsv\".\n");
ist->hwaccel_output_format = AV_PIX_FMT_QSV;
} else if (hwaccel_output_format) {
ist->hwaccel_output_format = av_get_pix_fmt(hwaccel_output_format);
if (ist->hwaccel_output_format == AV_PIX_FMT_NONE) {
@ -1085,7 +1110,7 @@ int open_input_file(OptionsContext *o, const char *filename)
{
InputFile *f;
AVFormatContext *ic;
AVInputFormat *file_iformat = NULL;
const AVInputFormat *file_iformat = NULL;
int err, i, ret;
int64_t timestamp;
AVDictionary *unused_opts = NULL;
@ -1134,20 +1159,22 @@ int open_input_file(OptionsContext *o, const char *filename)
av_dict_set_int(&o->g->format_opts, "sample_rate", o->audio_sample_rate[o->nb_audio_sample_rate - 1].u.i, 0);
}
if (o->nb_audio_channels) {
const AVClass *priv_class;
/* because we set audio_channels based on both the "ac" and
* "channel_layout" options, we need to check that the specified
* demuxer actually has the "channels" option before setting it */
if (file_iformat && file_iformat->priv_class &&
av_opt_find(&file_iformat->priv_class, "channels", NULL, 0,
if (file_iformat && (priv_class = file_iformat->priv_class) &&
av_opt_find(&priv_class, "channels", NULL, 0,
AV_OPT_SEARCH_FAKE_OBJ)) {
av_dict_set_int(&o->g->format_opts, "channels", o->audio_channels[o->nb_audio_channels - 1].u.i, 0);
}
}
if (o->nb_frame_rates) {
const AVClass *priv_class;
/* set the format-level framerate option;
* this is important for video grabbers, e.g. x11 */
if (file_iformat && file_iformat->priv_class &&
av_opt_find(&file_iformat->priv_class, "framerate", NULL, 0,
if (file_iformat && (priv_class = file_iformat->priv_class) &&
av_opt_find(&priv_class, "framerate", NULL, 0,
AV_OPT_SEARCH_FAKE_OBJ)) {
av_dict_set(&o->g->format_opts, "framerate",
o->frame_rates[o->nb_frame_rates - 1].u.str, 0);
@ -1297,6 +1324,20 @@ int open_input_file(OptionsContext *o, const char *filename)
f->loop = o->loop;
f->duration = 0;
f->time_base = (AVRational){ 1, 1 };
f->readrate = o->readrate ? o->readrate : 0.0;
if (f->readrate < 0.0f) {
av_log(NULL, AV_LOG_ERROR, "Option -readrate for Input #%d is %0.3f; it must be non-negative.\n", nb_input_files, f->readrate);
exit_program(1);
}
if (f->readrate && f->rate_emu) {
av_log(NULL, AV_LOG_WARNING, "Both -readrate and -re set for Input #%d. Using -readrate %0.3f.\n", nb_input_files, f->readrate);
f->rate_emu = 0;
}
f->pkt = av_packet_alloc();
if (!f->pkt)
exit_program(1);
#if HAVE_THREADS
f->thread_queue_size = o->thread_queue_size;
#endif
@ -1588,7 +1629,7 @@ OutputStream *new_output_stream(OptionsContext *o, AVFormatContext *oc, enum AVM
ost->max_muxing_queue_size = 128;
MATCH_PER_STREAM_OPT(max_muxing_queue_size, i, ost->max_muxing_queue_size, oc, st);
ost->max_muxing_queue_size *= sizeof(AVPacket);
ost->max_muxing_queue_size *= sizeof(ost->pkt);
ost->muxing_queue_data_size = 0;
@ -2256,9 +2297,12 @@ int open_output_file(OptionsContext *o, const char *filename)
if (!o->video_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_VIDEO) != AV_CODEC_ID_NONE) {
int best_score = 0, idx = -1;
int qcr = avformat_query_codec(oc->oformat, oc->oformat->video_codec, 0);
for (i = 0; i < nb_input_streams; i++) {
for (j = 0; j < nb_input_files; j++) {
InputFile *ifile = input_files[j];
int file_best_score = 0, file_best_idx = -1;
for (i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[i];
ist = input_streams[ifile->ist_index + i];
score = ist->st->codecpar->width * ist->st->codecpar->height
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
@ -2267,11 +2311,20 @@ int open_output_file(OptionsContext *o, const char *filename)
if((qcr!=MKTAG('A', 'P', 'I', 'C')) && (ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
score = 1;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO &&
score > best_score) {
score > file_best_score) {
if((qcr==MKTAG('A', 'P', 'I', 'C')) && !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
continue;
best_score = score;
idx = i;
file_best_score = score;
file_best_idx = ifile->ist_index + i;
}
}
if (file_best_idx >= 0) {
if((qcr == MKTAG('A', 'P', 'I', 'C')) || !(ist->st->disposition & AV_DISPOSITION_ATTACHED_PIC))
file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
if (file_best_score > best_score) {
best_score = file_best_score;
idx = file_best_idx;
}
}
}
if (idx >= 0)
@ -2281,17 +2334,29 @@ int open_output_file(OptionsContext *o, const char *filename)
/* audio: most channels */
if (!o->audio_disable && av_guess_codec(oc->oformat, NULL, filename, NULL, AVMEDIA_TYPE_AUDIO) != AV_CODEC_ID_NONE) {
int best_score = 0, idx = -1;
for (i = 0; i < nb_input_streams; i++) {
for (j = 0; j < nb_input_files; j++) {
InputFile *ifile = input_files[j];
int file_best_score = 0, file_best_idx = -1;
for (i = 0; i < ifile->nb_streams; i++) {
int score;
ist = input_streams[i];
score = ist->st->codecpar->channels + 100000000*!!ist->st->codec_info_nb_frames
ist = input_streams[ifile->ist_index + i];
score = ist->st->codecpar->channels
+ 100000000 * !!(ist->st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)
+ 5000000*!!(ist->st->disposition & AV_DISPOSITION_DEFAULT);
if (ist->user_set_discard == AVDISCARD_ALL)
continue;
if (ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
score > best_score) {
best_score = score;
idx = i;
score > file_best_score) {
file_best_score = score;
file_best_idx = ifile->ist_index + i;
}
}
if (file_best_idx >= 0) {
file_best_score -= 5000000*!!(input_streams[file_best_idx]->st->disposition & AV_DISPOSITION_DEFAULT);
if (file_best_score > best_score) {
best_score = file_best_score;
idx = file_best_idx;
}
}
}
if (idx >= 0)
@ -2454,19 +2519,6 @@ loop_end:
avio_closep(&pb);
}
#if FF_API_LAVF_AVCTX
for (i = nb_output_streams - oc->nb_streams; i < nb_output_streams; i++) { //for all streams of this output file
AVDictionaryEntry *e;
ost = output_streams[i];
if ((ost->stream_copy || ost->attachment_filename)
&& (e = av_dict_get(o->g->codec_opts, "flags", NULL, AV_DICT_IGNORE_SUFFIX))
&& (!e->key[5] || check_stream_specifier(oc, ost->st, e->key+6)))
if (av_opt_set(ost->st->codec, "flags", e->value, 0) < 0)
exit_program(1);
}
#endif
if (!oc->nb_streams && !(oc->oformat->flags & AVFMT_NOSTREAMS)) {
av_dump_format(oc, nb_output_files - 1, oc->url, 1);
av_log(NULL, AV_LOG_ERROR, "Output file #%d does not contain any stream\n", nb_output_files - 1);

@ -29,6 +29,7 @@
typedef struct VTContext {
AVFrame *tmp_frame;
int log_once;
} VTContext;
__thread char *videotoolbox_pixfmt;
@ -44,6 +45,13 @@ static int videotoolbox_retrieve_data(AVCodecContext *s, AVFrame *frame)
int linesize[4] = { 0 };
int planes, ret, i;
if (frame->format == ist->hwaccel_output_format) {
av_log_once(s, AV_LOG_INFO, AV_LOG_TRACE, &vt->log_once,
"There is no video filter for videotoolbox pix_fmt now, remove the "
"-hwaccel_output_format option if video filter doesn't work\n");
return 0;
}
av_frame_unref(vt->tmp_frame);
switch (pixel_format) {
@ -67,7 +75,7 @@ static int videotoolbox_retrieve_data(AVCodecContext *s, AVFrame *frame)
vt->tmp_frame->width = frame->width;
vt->tmp_frame->height = frame->height;
ret = av_frame_get_buffer(vt->tmp_frame, 32);
ret = av_frame_get_buffer(vt->tmp_frame, 0);
if (ret < 0)
return ret;

@ -40,6 +40,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
#include "libavutil/hash.h"
#include "libavutil/hdr_dynamic_metadata.h"
@ -122,6 +123,11 @@ __thread int use_byte_value_binary_prefix = 0;
__thread int use_value_sexagesimal_format = 0;
__thread int show_private_data = 1;
#define SHOW_OPTIONAL_FIELDS_AUTO -1
#define SHOW_OPTIONAL_FIELDS_NEVER 0
#define SHOW_OPTIONAL_FIELDS_ALWAYS 1
__thread int show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO;
__thread char *print_format;
__thread char *stream_specifier;
__thread char *show_data_hash;
@ -260,7 +266,7 @@ __thread OptionDef *ffprobe_options = NULL;
/* FFprobe context */
__thread const char *input_filename;
__thread const char *print_input_filename;
__thread AVInputFormat *iformat = NULL;
__thread const AVInputFormat *iformat = NULL;
__thread struct AVHashContext *hash;
@ -751,8 +757,10 @@ static inline int writer_print_string(WriterContext *wctx,
const struct section *section = wctx->section[wctx->level];
int ret = 0;
if ((flags & PRINT_STRING_OPT)
&& !(wctx->writer->flags & WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS))
if (show_optional_fields == SHOW_OPTIONAL_FIELDS_NEVER ||
(show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO
&& (flags & PRINT_STRING_OPT)
&& !(wctx->writer->flags & WRITER_FLAG_DISPLAY_OPTIONAL_FIELDS)))
return 0;
if (section->show_all_entries || av_dict_get(section->entries_to_show, key, NULL, 0)) {
@ -1666,36 +1674,11 @@ static av_cold int xml_init(WriterContext *wctx)
CHECK_COMPLIANCE(show_private_data, "private");
CHECK_COMPLIANCE(show_value_unit, "unit");
CHECK_COMPLIANCE(use_value_prefix, "prefix");
if (do_show_frames && do_show_packets) {
av_log(wctx, AV_LOG_ERROR,
"Interleaved frames and packets are not allowed in XSD. "
"Select only one between the -show_frames and the -show_packets options.\n");
return AVERROR(EINVAL);
}
}
return 0;
}
static const char *xml_escape_str(AVBPrint *dst, const char *src, void *log_ctx)
{
const char *p;
for (p = src; *p; p++) {
switch (*p) {
case '&' : av_bprintf(dst, "%s", "&amp;"); break;
case '<' : av_bprintf(dst, "%s", "&lt;"); break;
case '>' : av_bprintf(dst, "%s", "&gt;"); break;
case '"' : av_bprintf(dst, "%s", "&quot;"); break;
case '\'': av_bprintf(dst, "%s", "&apos;"); break;
default: av_bprint_chars(dst, *p, 1);
}
}
return dst->str;
}
#define XML_INDENT() av_log(NULL, AV_LOG_STDERR, "%*c", xml->indent_level * 4, ' ')
static void xml_print_section_header(WriterContext *wctx)
@ -1706,9 +1689,9 @@ static void xml_print_section_header(WriterContext *wctx)
wctx->section[wctx->level-1] : NULL;
if (wctx->level == 0) {
const char *qual = " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "
"xmlns:ffprobe='http://www.ffmpeg.org/schema/ffprobe' "
"xsi:schemaLocation='http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd'";
const char *qual = " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
"xmlns:ffprobe=\"http://www.ffmpeg.org/schema/ffprobe\" "
"xsi:schemaLocation=\"http://www.ffmpeg.org/schema/ffprobe ffprobe.xsd\"";
av_log(NULL, AV_LOG_STDERR, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
av_log(NULL, AV_LOG_STDERR, "<%sffprobe%s>\n",
@ -1767,14 +1750,22 @@ static void xml_print_str(WriterContext *wctx, const char *key, const char *valu
if (section->flags & SECTION_FLAG_HAS_VARIABLE_FIELDS) {
XML_INDENT();
av_bprint_escape(&buf, key, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, "<%s key=\"%s\"",
section->element_name, xml_escape_str(&buf, key, wctx));
section->element_name, buf.str);
av_bprint_clear(&buf);
av_log(NULL, AV_LOG_STDERR, " value=\"%s\"/>\n", xml_escape_str(&buf, value, wctx));
av_bprint_escape(&buf, value, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, " value=\"%s\"/>\n", buf.str);
} else {
if (wctx->nb_item[wctx->level])
av_log(NULL, AV_LOG_STDERR, " ");
av_log(NULL, AV_LOG_STDERR, "%s=\"%s\"", key, xml_escape_str(&buf, value, wctx));
av_bprint_escape(&buf, value, NULL,
AV_ESCAPE_MODE_XML, AV_ESCAPE_FLAG_XML_DOUBLE_QUOTES);
av_log(NULL, AV_LOG_STDERR, "%s=\"%s\"", key, buf.str);
}
av_bprint_finalize(&buf, NULL);
@ -2040,6 +2031,23 @@ static void print_pkt_side_data(WriterContext *w,
print_int("el_present_flag", dovi->el_present_flag);
print_int("bl_present_flag", dovi->bl_present_flag);
print_int("dv_bl_signal_compatibility_id", dovi->dv_bl_signal_compatibility_id);
} else if (sd->type == AV_PKT_DATA_AUDIO_SERVICE_TYPE) {
enum AVAudioServiceType *t = (enum AVAudioServiceType *)sd->data;
print_int("service_type", *t);
} else if (sd->type == AV_PKT_DATA_MPEGTS_STREAM_ID) {
print_int("id", *sd->data);
} else if (sd->type == AV_PKT_DATA_CPB_PROPERTIES) {
const AVCPBProperties *prop = (AVCPBProperties *)sd->data;
print_int("max_bitrate", prop->max_bitrate);
print_int("min_bitrate", prop->min_bitrate);
print_int("avg_bitrate", prop->avg_bitrate);
print_int("buffer_size", prop->buffer_size);
print_int("vbv_delay", prop->vbv_delay);
} else if (sd->type == AV_PKT_DATA_WEBVTT_IDENTIFIER ||
sd->type == AV_PKT_DATA_WEBVTT_SETTINGS) {
if (do_show_data)
writer_print_data(w, "data", sd->data, sd->size);
writer_print_data_hash(w, "data_hash", sd->data, sd->size);
}
writer_print_section_footer(w);
}
@ -2169,8 +2177,6 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
print_time("dts_time", pkt->dts, &st->time_base);
print_duration_ts("duration", pkt->duration);
print_duration_time("duration_time", pkt->duration, &st->time_base);
print_duration_ts("convergence_duration", pkt->convergence_duration);
print_duration_time("convergence_duration_time", pkt->convergence_duration, &st->time_base);
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");
@ -2178,7 +2184,7 @@ static void show_packet(WriterContext *w, InputFile *ifile, AVPacket *pkt, int p
pkt->flags & AV_PKT_FLAG_DISCARD ? 'D' : '_');
if (pkt->side_data_elems) {
int size;
size_t size;
const uint8_t *side_metadata;
side_metadata = av_packet_get_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, &size);
@ -2243,8 +2249,8 @@ static void show_frame(WriterContext *w, AVFrame *frame, AVStream *stream,
else print_str_opt("media_type", "unknown");
print_int("stream_index", stream->index);
print_int("key_frame", frame->key_frame);
print_ts ("pkt_pts", frame->pts);
print_time("pkt_pts_time", frame->pts, &stream->time_base);
print_ts ("pts", frame->pts);
print_time("pts_time", frame->pts, &stream->time_base);
print_ts ("pkt_dts", frame->pkt_dts);
print_time("pkt_dts_time", frame->pkt_dts, &stream->time_base);
print_ts ("best_effort_timestamp", frame->best_effort_timestamp);
@ -2469,14 +2475,12 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
const ReadInterval *interval, int64_t *cur_ts)
{
AVFormatContext *fmt_ctx = ifile->fmt_ctx;
AVPacket pkt;
AVPacket *pkt = NULL;
AVFrame *frame = NULL;
int ret = 0, i = 0, frame_count = 0;
int64_t start = -INT64_MAX, end = interval->end;
int has_start = 0, has_end = interval->has_end && !interval->end_is_offset;
av_init_packet(&pkt);
av_log(NULL, AV_LOG_VERBOSE, "Processing read interval ");
log_read_interval(interval, NULL, AV_LOG_VERBOSE);
@ -2509,18 +2513,23 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
ret = AVERROR(ENOMEM);
goto end;
}
while (!av_read_frame(fmt_ctx, &pkt)) {
pkt = av_packet_alloc();
if (!pkt) {
ret = AVERROR(ENOMEM);
goto end;
}
while (!av_read_frame(fmt_ctx, pkt)) {
if (fmt_ctx->nb_streams > nb_streams) {
REALLOCZ_ARRAY_STREAM(nb_streams_frames, nb_streams, fmt_ctx->nb_streams);
REALLOCZ_ARRAY_STREAM(nb_streams_packets, nb_streams, fmt_ctx->nb_streams);
REALLOCZ_ARRAY_STREAM(selected_streams, nb_streams, fmt_ctx->nb_streams);
nb_streams = fmt_ctx->nb_streams;
}
if (selected_streams[pkt.stream_index]) {
AVRational tb = ifile->streams[pkt.stream_index].st->time_base;
if (selected_streams[pkt->stream_index]) {
AVRational tb = ifile->streams[pkt->stream_index].st->time_base;
if (pkt.pts != AV_NOPTS_VALUE)
*cur_ts = av_rescale_q(pkt.pts, tb, AV_TIME_BASE_Q);
if (pkt->pts != AV_NOPTS_VALUE)
*cur_ts = av_rescale_q(pkt->pts, tb, AV_TIME_BASE_Q);
if (!has_start && *cur_ts != AV_NOPTS_VALUE) {
start = *cur_ts;
@ -2542,26 +2551,27 @@ static int read_interval_packets(WriterContext *w, InputFile *ifile,
frame_count++;
if (do_read_packets) {
if (do_show_packets)
show_packet(w, ifile, &pkt, i++);
nb_streams_packets[pkt.stream_index]++;
show_packet(w, ifile, pkt, i++);
nb_streams_packets[pkt->stream_index]++;
}
if (do_read_frames) {
int packet_new = 1;
while (process_frame(w, ifile, frame, &pkt, &packet_new) > 0);
while (process_frame(w, ifile, frame, pkt, &packet_new) > 0);
}
}
av_packet_unref(&pkt);
av_packet_unref(pkt);
}
av_packet_unref(&pkt);
av_packet_unref(pkt);
//Flush remaining frames that are cached in the decoder
for (i = 0; i < fmt_ctx->nb_streams; i++) {
pkt.stream_index = i;
pkt->stream_index = i;
if (do_read_frames)
while (process_frame(w, ifile, frame, &pkt, &(int){1}) > 0);
while (process_frame(w, ifile, frame, pkt, &(int){1}) > 0);
}
end:
av_frame_free(&frame);
av_packet_free(&pkt);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Could not read packets in interval ");
log_read_interval(interval, NULL, AV_LOG_ERROR);
@ -2637,10 +2647,6 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
s = av_get_media_type_string(par->codec_type);
if (s) print_str ("codec_type", s);
else print_str_opt("codec_type", "unknown");
#if FF_API_LAVF_AVCTX
if (dec_ctx)
print_q("codec_time_base", dec_ctx->time_base, '/');
#endif
/* print AVI/FourCC tag */
print_str("codec_tag_string", av_fourcc2str(par->codec_tag));
@ -2650,13 +2656,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
case AVMEDIA_TYPE_VIDEO:
print_int("width", par->width);
print_int("height", par->height);
#if FF_API_LAVF_AVCTX
if (dec_ctx) {
print_int("coded_width", dec_ctx->coded_width);
print_int("coded_height", dec_ctx->coded_height);
print_int("closed_captions", !!(dec_ctx->properties & FF_CODEC_PROPERTY_CLOSED_CAPTIONS));
}
#endif
print_int("has_b_frames", par->video_delay);
sar = av_guess_sample_aspect_ratio(fmt_ctx, stream, NULL);
if (sar.num) {
@ -2694,15 +2698,6 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
else
print_str_opt("field_order", "unknown");
#if FF_API_PRIVATE_OPT
if (dec_ctx && dec_ctx->timecode_frame_start >= 0) {
char tcbuf[AV_TIMECODE_STR_SIZE];
av_timecode_make_mpeg_tc_string(tcbuf, dec_ctx->timecode_frame_start);
print_str("timecode", tcbuf);
} else {
print_str_opt("timecode", "N/A");
}
#endif
if (dec_ctx)
print_int("refs", dec_ctx->refs);
break;
@ -2741,7 +2736,7 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
const AVOption *opt = NULL;
while ((opt = av_opt_next(dec_ctx->priv_data,opt))) {
uint8_t *str;
if (opt->flags) continue;
if (!(opt->flags & AV_OPT_FLAG_EXPORT)) continue;
if (av_opt_get(dec_ctx->priv_data, opt->name, 0, &str) >= 0) {
print_str(opt->name, str);
av_free(str);
@ -2760,10 +2755,10 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
print_time("duration", stream->duration, &stream->time_base);
if (par->bit_rate > 0) print_val ("bit_rate", par->bit_rate, unit_bit_per_second_str);
else print_str_opt("bit_rate", "N/A");
#if FF_API_LAVF_AVCTX
if (stream->codec->rc_max_rate > 0) print_val ("max_bit_rate", stream->codec->rc_max_rate, unit_bit_per_second_str);
else print_str_opt("max_bit_rate", "N/A");
#endif
if (dec_ctx && dec_ctx->rc_max_rate > 0)
print_val ("max_bit_rate", dec_ctx->rc_max_rate, unit_bit_per_second_str);
else
print_str_opt("max_bit_rate", "N/A");
if (dec_ctx && dec_ctx->bits_per_raw_sample > 0) print_fmt("bits_per_raw_sample", "%d", dec_ctx->bits_per_raw_sample);
else print_str_opt("bits_per_raw_sample", "N/A");
if (stream->nb_frames) print_fmt ("nb_frames", "%"PRId64, stream->nb_frames);
@ -2775,8 +2770,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
if (do_show_data)
writer_print_data(w, "extradata", par->extradata,
par->extradata_size);
writer_print_data_hash(w, "extradata_hash", par->extradata,
if (par->extradata_size > 0) {
writer_print_data_hash(w, "extradata_hash", par->extradata,
par->extradata_size);
}
/* Print disposition information */
#define PRINT_DISPOSITION(flagname, name) do { \
@ -2797,6 +2795,11 @@ static int show_stream(WriterContext *w, AVFormatContext *fmt_ctx, int stream_id
PRINT_DISPOSITION(CLEAN_EFFECTS, "clean_effects");
PRINT_DISPOSITION(ATTACHED_PIC, "attached_pic");
PRINT_DISPOSITION(TIMED_THUMBNAILS, "timed_thumbnails");
PRINT_DISPOSITION(CAPTIONS, "captions");
PRINT_DISPOSITION(DESCRIPTIONS, "descriptions");
PRINT_DISPOSITION(METADATA, "metadata");
PRINT_DISPOSITION(DEPENDENT, "dependent");
PRINT_DISPOSITION(STILL_IMAGE, "still_image");
writer_print_section_footer(w);
}
@ -3016,7 +3019,7 @@ static int open_input_file(InputFile *ifile, const char *filename, const char *p
for (i = 0; i < fmt_ctx->nb_streams; i++) {
InputStream *ist = &ifile->streams[i];
AVStream *stream = fmt_ctx->streams[i];
AVCodec *codec;
const AVCodec *codec;
ist->st = stream;
@ -3054,12 +3057,6 @@ static int open_input_file(InputFile *ifile, const char *filename, const char *p
}
ist->dec_ctx->pkt_timebase = stream->time_base;
ist->dec_ctx->framerate = stream->avg_frame_rate;
#if FF_API_LAVF_AVCTX
ist->dec_ctx->properties = stream->codec->properties;
ist->dec_ctx->coded_width = stream->codec->coded_width;
ist->dec_ctx->coded_height = stream->codec->coded_height;
#endif
if (avcodec_open2(ist->dec_ctx, codec, &opts) < 0) {
av_log(NULL, AV_LOG_WARNING, "Could not open codec for input stream %d\n",
@ -3085,8 +3082,7 @@ static void close_input_file(InputFile *ifile)
/* close decoder for each stream */
for (i = 0; i < ifile->nb_streams; i++)
if (ifile->streams[i].st->codecpar->codec_id != AV_CODEC_ID_NONE)
avcodec_free_context(&ifile->streams[i].dec_ctx);
avcodec_free_context(&ifile->streams[i].dec_ctx);
av_freep(&ifile->streams);
ifile->nb_streams = 0;
@ -3259,9 +3255,6 @@ static void ffprobe_show_pixel_formats(WriterContext *w)
PRINT_PIX_FMT_FLAG(HWACCEL, "hwaccel");
PRINT_PIX_FMT_FLAG(PLANAR, "planar");
PRINT_PIX_FMT_FLAG(RGB, "rgb");
#if FF_API_PSEUDOPAL
PRINT_PIX_FMT_FLAG(PSEUDOPAL, "pseudopal");
#endif
PRINT_PIX_FMT_FLAG(ALPHA, "alpha");
writer_print_section_footer(w);
}
@ -3280,6 +3273,17 @@ static void ffprobe_show_pixel_formats(WriterContext *w)
writer_print_section_footer(w);
}
static int opt_show_optional_fields(void *optctx, const char *opt, const char *arg)
{
if (!av_strcasecmp(arg, "always")) show_optional_fields = SHOW_OPTIONAL_FIELDS_ALWAYS;
else if (!av_strcasecmp(arg, "never")) show_optional_fields = SHOW_OPTIONAL_FIELDS_NEVER;
else if (!av_strcasecmp(arg, "auto")) show_optional_fields = SHOW_OPTIONAL_FIELDS_AUTO;
if (show_optional_fields == SHOW_OPTIONAL_FIELDS_AUTO && av_strcasecmp(arg, "auto"))
show_optional_fields = parse_number_or_die("show_optional_fields", arg, OPT_INT, SHOW_OPTIONAL_FIELDS_AUTO, SHOW_OPTIONAL_FIELDS_ALWAYS);
return 0;
}
static int opt_format(void *optctx, const char *opt, const char *arg)
{
iformat = av_find_input_format(arg);
@ -3743,6 +3747,7 @@ int ffprobe_execute(int argc, char **argv)
{ "report", 0, { .func_arg = opt_report }, "generate a report" },
{ "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" },
{ "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" },
{ "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" },
{ "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" },
#if CONFIG_AVDEVICE
@ -3788,6 +3793,7 @@ int ffprobe_execute(int argc, char **argv)
{ "show_library_versions", 0, { .func_arg = &opt_show_library_versions }, "show library versions" },
{ "show_versions", 0, { .func_arg = &opt_show_versions }, "show program and library versions" },
{ "show_pixel_formats", 0, { .func_arg = &opt_show_pixel_formats }, "show pixel format descriptions" },
{ "show_optional_fields", HAS_ARG, { .func_arg = &opt_show_optional_fields }, "show optional fields" },
{ "show_private_data", OPT_BOOL, { &show_private_data }, "show private data" },
{ "private", OPT_BOOL, { &show_private_data }, "same as show_private_data" },
{ "bitexact", OPT_BOOL, {&do_bitexact}, "force bitexact output" },
@ -3825,7 +3831,6 @@ int ffprobe_execute(int argc, char **argv)
ffprobe_options = options;
parse_loglevel(argc, argv, options);
avformat_network_init();
init_opts();
#if CONFIG_AVDEVICE
avdevice_register_all();
#endif

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,8 +63,7 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structures</div> </div>
<div class="headertitle"><div class="title">Data Structures</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory">
@ -108,7 +107,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,62 +63,61 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">Data Structure Index</div> </div>
<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>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_F">F</a>&#160;|&#160;<a class="qindex" href="#letter_H">H</a>&#160;|&#160;<a class="qindex" href="#letter_I">I</a>&#160;|&#160;<a class="qindex" href="#letter_J">J</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_O">O</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|&#160;<a class="qindex" href="#letter_S">S</a>&#160;|&#160;<a class="qindex" href="#letter_U">U</a>&#160;|&#160;<a class="qindex" href="#letter_W">W</a>&#160;|&#160;<a class="qindex" href="#letter_X">X</a></div>
<div class="classindex">
<dl class="classindex even">
<dt class="alphachar"><a name="letter_A">A</a></dt>
<dt class="alphachar"><a id="letter_A" name="letter_A">A</a></dt>
<dd><a class="el" href="d6/d2c/struct_audio_channel_map.html">AudioChannelMap</a></dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_B">B</a></dt>
<dt class="alphachar"><a id="letter_B" name="letter_B">B</a></dt>
<dd><a class="el" href="d5/d8e/struct_benchmark_time_stamps.html">BenchmarkTimeStamps</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_C">C</a></dt>
<dt class="alphachar"><a id="letter_C" name="letter_C">C</a></dt>
<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 name="letter_D">D</a></dt>
<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>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_F">F</a></dt>
<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>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_H">H</a></dt>
<dt class="alphachar"><a id="letter_H" name="letter_H">H</a></dt>
<dd><a class="el" href="df/d37/struct_h_w_accel.html">HWAccel</a></dd><dd><a class="el" href="de/dc7/struct_h_w_device.html">HWDevice</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_I">I</a></dt>
<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">
<dt class="alphachar"><a name="letter_J">J</a></dt>
<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 even">
<dt class="alphachar"><a name="letter_L">L</a></dt>
<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>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_O">O</a></dt>
<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>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_R">R</a></dt>
<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">
<dt class="alphachar"><a name="letter_S">S</a></dt>
<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>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_U">U</a></dt>
<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>
<dl class="classindex odd">
<dt class="alphachar"><a name="letter_W">W</a></dt>
<dt class="alphachar"><a id="letter_W" name="letter_W">W</a></dt>
<dd><a class="el" href="d6/dff/struct_writer.html">Writer</a></dd><dd><a class="el" href="d1/da2/struct_writer_context.html">WriterContext</a></dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a name="letter_X">X</a></dt>
<dt class="alphachar"><a id="letter_X" name="letter_X">X</a></dt>
<dd><a class="el" href="d7/db2/struct_x_m_l_context.html">XMLContext</a></dd></dl>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -66,14 +66,13 @@ $(function() {
<div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ffmpegkit_abidetect.h File Reference</div> </div>
<div class="headertitle"><div class="title">ffmpegkit_abidetect.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="../../d0/d07/ffmpegkit__abidetect_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 name="define-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:aa0528bb977fb058f35088a123f024040"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aa0528bb977fb058f35088a123f024040">ABI_ARMV7A_NEON</a>&#160;&#160;&#160;&quot;armeabi-v7a-neon&quot;</td></tr>
<tr class="separator:aa0528bb977fb058f35088a123f024040"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -90,7 +89,7 @@ Macros</h2></td></tr>
<tr class="memitem:ae1ac408cde1fef8015e817132c82f90f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ae1ac408cde1fef8015e817132c82f90f">ABI_UNKNOWN</a>&#160;&#160;&#160;&quot;unknown&quot;</td></tr>
<tr class="separator:ae1ac408cde1fef8015e817132c82f90f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ad6df138dfa7f0139d3bc00a128a3349f"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jstring JNICALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ad6df138dfa7f0139d3bc00a128a3349f">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi</a> (JNIEnv *, jclass)</td></tr>
<tr class="separator:ad6df138dfa7f0139d3bc00a128a3349f"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -102,7 +101,7 @@ Functions</h2></td></tr>
<tr class="separator:a7942b894172687b98c86668b49a37356"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a8542ed76f69cc1f6905ec045deb67b19"></a>
<a id="a8542ed76f69cc1f6905ec045deb67b19" name="a8542ed76f69cc1f6905ec045deb67b19"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8542ed76f69cc1f6905ec045deb67b19">&#9670;&nbsp;</a></span>ABI_ARM</h2>
<div class="memitem">
@ -113,13 +112,13 @@ 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"></a>
<a id="aecf047197c8d184994bd8391c89dafd9" name="aecf047197c8d184994bd8391c89dafd9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aecf047197c8d184994bd8391c89dafd9">&#9670;&nbsp;</a></span>ABI_ARM64_V8A</h2>
<div class="memitem">
@ -130,13 +129,13 @@ 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"></a>
<a id="af4bd943711a852348c6fe7a850c68d9c" name="af4bd943711a852348c6fe7a850c68d9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4bd943711a852348c6fe7a850c68d9c">&#9670;&nbsp;</a></span>ABI_ARMV7A</h2>
<div class="memitem">
@ -147,13 +146,13 @@ 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"></a>
<a id="aa0528bb977fb058f35088a123f024040" name="aa0528bb977fb058f35088a123f024040"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0528bb977fb058f35088a123f024040">&#9670;&nbsp;</a></span>ABI_ARMV7A_NEON</h2>
<div class="memitem">
@ -164,13 +163,13 @@ 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"></a>
<a id="ae1ac408cde1fef8015e817132c82f90f" name="ae1ac408cde1fef8015e817132c82f90f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae1ac408cde1fef8015e817132c82f90f">&#9670;&nbsp;</a></span>ABI_UNKNOWN</h2>
<div class="memitem">
@ -181,13 +180,13 @@ 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"></a>
<a id="aa8b590581b911e09a91165e1bfe1af4e" name="aa8b590581b911e09a91165e1bfe1af4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8b590581b911e09a91165e1bfe1af4e">&#9670;&nbsp;</a></span>ABI_X86</h2>
<div class="memitem">
@ -198,13 +197,13 @@ 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"></a>
<a id="a651b92d66b0514569b6c1e70ab56ccbd" name="a651b92d66b0514569b6c1e70ab56ccbd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a651b92d66b0514569b6c1e70ab56ccbd">&#9670;&nbsp;</a></span>ABI_X86_64</h2>
<div class="memitem">
@ -215,14 +214,14 @@ 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>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ad6df138dfa7f0139d3bc00a128a3349f"></a>
<a id="ad6df138dfa7f0139d3bc00a128a3349f" name="ad6df138dfa7f0139d3bc00a128a3349f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6df138dfa7f0139d3bc00a128a3349f">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi()</h2>
<div class="memitem">
@ -247,7 +246,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 +260,7 @@ Functions</h2></td></tr>
</div>
</div>
<a id="a7942b894172687b98c86668b49a37356"></a>
<a id="a7942b894172687b98c86668b49a37356" name="a7942b894172687b98c86668b49a37356"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7942b894172687b98c86668b49a37356">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf()</h2>
<div class="memitem">
@ -286,7 +285,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 +299,7 @@ Functions</h2></td></tr>
</div>
</div>
<a id="aae17a92df44b12fe7e39c93f88c3e6be"></a>
<a id="aae17a92df44b12fe7e39c93f88c3e6be" name="aae17a92df44b12fe7e39c93f88c3e6be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae17a92df44b12fe7e39c93f88c3e6be">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi()</h2>
<div class="memitem">
@ -325,7 +324,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 +338,7 @@ Functions</h2></td></tr>
</div>
</div>
<a id="a76872252b93761eeef4e67b9995e61b1"></a>
<a id="a76872252b93761eeef4e67b9995e61b1" name="a76872252b93761eeef4e67b9995e61b1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76872252b93761eeef4e67b9995e61b1">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild()</h2>
<div class="memitem">
@ -364,8 +363,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>
@ -382,7 +381,7 @@ Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,73 +63,72 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">ffmpegkit_abidetect.h</div> </div>
<div class="headertitle"><div class="title">ffmpegkit_abidetect.h</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d0/d07/ffmpegkit__abidetect_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2018-2021 Taner Sener</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef FFMPEG_KIT_ABIDETECT_H</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define FFMPEG_KIT_ABIDETECT_H</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;jni.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a>&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aa0528bb977fb058f35088a123f024040"> 27</a></span>&#160;<span class="preprocessor">#define ABI_ARMV7A_NEON &quot;armeabi-v7a-neon&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#af4bd943711a852348c6fe7a850c68d9c"> 30</a></span>&#160;<span class="preprocessor">#define ABI_ARMV7A &quot;armeabi-v7a&quot;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a8542ed76f69cc1f6905ec045deb67b19"> 33</a></span>&#160;<span class="preprocessor">#define ABI_ARM &quot;armeabi&quot;</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aa8b590581b911e09a91165e1bfe1af4e"> 36</a></span>&#160;<span class="preprocessor">#define ABI_X86 &quot;x86&quot;</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a651b92d66b0514569b6c1e70ab56ccbd"> 39</a></span>&#160;<span class="preprocessor">#define ABI_X86_64 &quot;x86_64&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aecf047197c8d184994bd8391c89dafd9"> 42</a></span>&#160;<span class="preprocessor">#define ABI_ARM64_V8A &quot;arm64-v8a&quot;</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ae1ac408cde1fef8015e817132c82f90f"> 45</a></span>&#160;<span class="preprocessor">#define ABI_UNKNOWN &quot;unknown&quot;</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"> * Method: getNativeAbi</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ad6df138dfa7f0139d3bc00a128a3349f">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi</a>(JNIEnv *, jclass);</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> * Method: getNativeCpuAbi</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aae17a92df44b12fe7e39c93f88c3e6be">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi</a>(JNIEnv *, jclass);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; </div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;JNIEXPORT jboolean JNICALL <a class="code" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a76872252b93761eeef4e67b9995e61b1">Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild</a>(JNIEnv *, jclass);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment"> * Method: getNativeBuildConf</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;JNIEXPORT jstring JNICALL <a class="code" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a7942b894172687b98c86668b49a37356">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf</a>(JNIEnv *, jclass);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* FFMPEG_KIT_ABIDETECT_H */</span><span class="preprocessor"></span></div>
<a href="../../d0/d07/ffmpegkit__abidetect_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"> * Copyright (c) 2018-2021 Taner Sener</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifndef FFMPEG_KIT_ABIDETECT_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define FFMPEG_KIT_ABIDETECT_H</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;jni.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &quot;<a class="code" href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a>&quot;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aa0528bb977fb058f35088a123f024040"> 27</a></span><span class="preprocessor">#define ABI_ARMV7A_NEON &quot;armeabi-v7a-neon&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#af4bd943711a852348c6fe7a850c68d9c"> 30</a></span><span class="preprocessor">#define ABI_ARMV7A &quot;armeabi-v7a&quot;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a8542ed76f69cc1f6905ec045deb67b19"> 33</a></span><span class="preprocessor">#define ABI_ARM &quot;armeabi&quot;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aa8b590581b911e09a91165e1bfe1af4e"> 36</a></span><span class="preprocessor">#define ABI_X86 &quot;x86&quot;</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a651b92d66b0514569b6c1e70ab56ccbd"> 39</a></span><span class="preprocessor">#define ABI_X86_64 &quot;x86_64&quot;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aecf047197c8d184994bd8391c89dafd9"> 42</a></span><span class="preprocessor">#define ABI_ARM64_V8A &quot;arm64-v8a&quot;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ae1ac408cde1fef8015e817132c82f90f"> 45</a></span><span class="preprocessor">#define ABI_UNKNOWN &quot;unknown&quot;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="comment">/*</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> * Method: getNativeAbi</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="comment"> */</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span>JNIEXPORT jstring JNICALL <a class="code hl_function" href="../../d0/d07/ffmpegkit__abidetect_8h.html#ad6df138dfa7f0139d3bc00a128a3349f">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeAbi</a>(JNIEnv *, jclass);</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="comment">/*</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="comment"> * Method: getNativeCpuAbi</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> */</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span>JNIEXPORT jstring JNICALL <a class="code hl_function" href="../../d0/d07/ffmpegkit__abidetect_8h.html#aae17a92df44b12fe7e39c93f88c3e6be">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeCpuAbi</a>(JNIEnv *, jclass);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span>JNIEXPORT jboolean JNICALL <a class="code hl_function" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a76872252b93761eeef4e67b9995e61b1">Java_com_arthenica_ffmpegkit_AbiDetect_isNativeLTSBuild</a>(JNIEnv *, jclass);</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment">/*</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> * Class: com_arthenica_ffmpegkit_AbiDetect</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * Method: getNativeBuildConf</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> * Signature: ()Ljava/lang/String;</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> */</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span>JNIEXPORT jstring JNICALL <a class="code hl_function" href="../../d0/d07/ffmpegkit__abidetect_8h.html#a7942b894172687b98c86668b49a37356">Java_com_arthenica_ffmpegkit_AbiDetect_getNativeBuildConf</a>(JNIEnv *, jclass);</div>
<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>
@ -138,7 +137,7 @@ $(function() {
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:50 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">OutputFilter Struct Reference</div> </div>
<div class="headertitle"><div class="title">OutputFilter Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a52b3bac2e051f48e5eabbff6a227881c"><td class="memItemLeft" align="right" valign="top">AVFilterContext *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d0f/struct_output_filter.html#a52b3bac2e051f48e5eabbff6a227881c">filter</a></td></tr>
<tr class="separator:a52b3bac2e051f48e5eabbff6a227881c"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -105,9 +106,9 @@ 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#l00287">287</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#l00288">288</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="ae591539feb7f41d19236244a0dcf3896"></a>
<a id="ae591539feb7f41d19236244a0dcf3896" name="ae591539feb7f41d19236244a0dcf3896"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae591539feb7f41d19236244a0dcf3896">&#9670;&nbsp;</a></span>channel_layout</h2>
<div class="memitem">
@ -119,11 +120,11 @@ 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#l00302">302</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#l00303">303</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a4f141db3516fc737c8876f817a68b16b"></a>
<a id="a4f141db3516fc737c8876f817a68b16b" name="a4f141db3516fc737c8876f817a68b16b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f141db3516fc737c8876f817a68b16b">&#9670;&nbsp;</a></span>channel_layouts</h2>
<div class="memitem">
@ -135,11 +136,11 @@ 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#l00307">307</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a52b3bac2e051f48e5eabbff6a227881c"></a>
<a id="a52b3bac2e051f48e5eabbff6a227881c" name="a52b3bac2e051f48e5eabbff6a227881c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a52b3bac2e051f48e5eabbff6a227881c">&#9670;&nbsp;</a></span>filter</h2>
<div class="memitem">
@ -151,11 +152,11 @@ 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#l00288">288</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#l00289">289</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aeba350050d2035d755254154e6551c49"></a>
<a id="aeba350050d2035d755254154e6551c49" name="aeba350050d2035d755254154e6551c49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeba350050d2035d755254154e6551c49">&#9670;&nbsp;</a></span>format</h2>
<div class="memitem">
@ -167,11 +168,11 @@ 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#l00300">300</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#l00301">301</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="acd4f04cfb3db05beef2507e397aef9aa"></a>
<a id="acd4f04cfb3db05beef2507e397aef9aa" name="acd4f04cfb3db05beef2507e397aef9aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acd4f04cfb3db05beef2507e397aef9aa">&#9670;&nbsp;</a></span>formats</h2>
<div class="memitem">
@ -183,11 +184,11 @@ 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#l00306">306</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad45013a89f85087d03166652a94d1453"></a>
<a id="ad45013a89f85087d03166652a94d1453" name="ad45013a89f85087d03166652a94d1453"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad45013a89f85087d03166652a94d1453">&#9670;&nbsp;</a></span>frame_rate</h2>
<div class="memitem">
@ -199,11 +200,11 @@ 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#l00299">299</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#l00300">300</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa1e455271d4a952bc771b9951beded8e"></a>
<a id="aa1e455271d4a952bc771b9951beded8e" name="aa1e455271d4a952bc771b9951beded8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa1e455271d4a952bc771b9951beded8e">&#9670;&nbsp;</a></span>graph</h2>
<div class="memitem">
@ -215,11 +216,11 @@ 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#l00290">290</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#l00291">291</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aaf9223843b6d814783f74c85b38de080"></a>
<a id="aaf9223843b6d814783f74c85b38de080" name="aaf9223843b6d814783f74c85b38de080"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf9223843b6d814783f74c85b38de080">&#9670;&nbsp;</a></span>height</h2>
<div class="memitem">
@ -231,11 +232,11 @@ 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#l00298">298</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#l00299">299</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a7713667d07c3f7605e6dd24f0ca19940"></a>
<a id="a7713667d07c3f7605e6dd24f0ca19940" name="a7713667d07c3f7605e6dd24f0ca19940"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7713667d07c3f7605e6dd24f0ca19940">&#9670;&nbsp;</a></span>name</h2>
<div class="memitem">
@ -247,11 +248,11 @@ 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#l00291">291</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#l00292">292</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a2d283eee3e140f822b5eb381890ba035"></a>
<a id="a2d283eee3e140f822b5eb381890ba035" name="a2d283eee3e140f822b5eb381890ba035"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d283eee3e140f822b5eb381890ba035">&#9670;&nbsp;</a></span>ost</h2>
<div class="memitem">
@ -263,11 +264,11 @@ 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#l00289">289</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#l00290">290</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a1571021ae59382241c925f7ee613cd7d"></a>
<a id="a1571021ae59382241c925f7ee613cd7d" name="a1571021ae59382241c925f7ee613cd7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1571021ae59382241c925f7ee613cd7d">&#9670;&nbsp;</a></span>out_tmp</h2>
<div class="memitem">
@ -279,11 +280,11 @@ 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#l00294">294</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#l00295">295</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ab0be1ec413ca98912667f1bf76fd2588"></a>
<a id="ab0be1ec413ca98912667f1bf76fd2588" name="ab0be1ec413ca98912667f1bf76fd2588"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab0be1ec413ca98912667f1bf76fd2588">&#9670;&nbsp;</a></span>sample_rate</h2>
<div class="memitem">
@ -295,11 +296,11 @@ 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#l00301">301</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#l00302">302</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a9f66eff9402b2790dfcea63a0010aecc"></a>
<a id="a9f66eff9402b2790dfcea63a0010aecc" name="a9f66eff9402b2790dfcea63a0010aecc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f66eff9402b2790dfcea63a0010aecc">&#9670;&nbsp;</a></span>sample_rates</h2>
<div class="memitem">
@ -311,11 +312,11 @@ 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#l00308">308</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aed4c46a5df26ff71f3f718a0056af294"></a>
<a id="aed4c46a5df26ff71f3f718a0056af294" name="aed4c46a5df26ff71f3f718a0056af294"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed4c46a5df26ff71f3f718a0056af294">&#9670;&nbsp;</a></span>type</h2>
<div class="memitem">
@ -327,11 +328,11 @@ 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#l00294">294</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#l00296">296</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a0a621d752f3ab33e67f0a8f22bee4118"></a>
<a id="a0a621d752f3ab33e67f0a8f22bee4118" name="a0a621d752f3ab33e67f0a8f22bee4118"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a621d752f3ab33e67f0a8f22bee4118">&#9670;&nbsp;</a></span>width</h2>
<div class="memitem">
@ -343,7 +344,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#l00298">298</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#l00299">299</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
@ -353,7 +354,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">WriterContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">WriterContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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 *&#160;</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">&#160;</td><td class="mdescRight">class of the writer <a href="../../d1/da2/struct_writer_context.html#a9a134275e24f0ed7ceb2108e144b031d">More...</a><br /></td></tr>
@ -117,9 +116,9 @@ 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#l00459">459</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#l00465">465</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="a9a134275e24f0ed7ceb2108e144b031d"></a>
<a id="a9a134275e24f0ed7ceb2108e144b031d" name="a9a134275e24f0ed7ceb2108e144b031d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9a134275e24f0ed7ceb2108e144b031d">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -133,11 +132,11 @@ 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#l00460">460</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#l00466">466</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a70f4367919173df339905042a73df0f4"></a>
<a id="a70f4367919173df339905042a73df0f4" name="a70f4367919173df339905042a73df0f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70f4367919173df339905042a73df0f4">&#9670;&nbsp;</a></span>level</h2>
<div class="memitem">
@ -151,11 +150,11 @@ 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#l00468">468</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#l00474">474</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a366a8bd11cf898f02beca2f14478ed97"></a>
<a id="a366a8bd11cf898f02beca2f14478ed97" name="a366a8bd11cf898f02beca2f14478ed97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a366a8bd11cf898f02beca2f14478ed97">&#9670;&nbsp;</a></span>name</h2>
<div class="memitem">
@ -169,11 +168,11 @@ 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#l00462">462</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#l00468">468</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a146664adf19a884f214fe3729343dc1a"></a>
<a id="a146664adf19a884f214fe3729343dc1a" name="a146664adf19a884f214fe3729343dc1a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a146664adf19a884f214fe3729343dc1a">&#9670;&nbsp;</a></span>nb_item</h2>
<div class="memitem">
@ -184,13 +183,13 @@ 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#l00471">471</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#l00477">477</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a0a6292cb0341b8c989f463d17c2b1c49"></a>
<a id="a0a6292cb0341b8c989f463d17c2b1c49" name="a0a6292cb0341b8c989f463d17c2b1c49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0a6292cb0341b8c989f463d17c2b1c49">&#9670;&nbsp;</a></span>nb_section_frame</h2>
<div class="memitem">
@ -204,11 +203,11 @@ 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#l00479">479</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#l00485">485</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a735c05fb40aac83eeaa72ec9f3bd9c8d"></a>
<a id="a735c05fb40aac83eeaa72ec9f3bd9c8d" name="a735c05fb40aac83eeaa72ec9f3bd9c8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a735c05fb40aac83eeaa72ec9f3bd9c8d">&#9670;&nbsp;</a></span>nb_section_packet</h2>
<div class="memitem">
@ -222,11 +221,11 @@ 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#l00478">478</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#l00484">484</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a70cdd0ee0389abba9865de653aac4de1"></a>
<a id="a70cdd0ee0389abba9865de653aac4de1" name="a70cdd0ee0389abba9865de653aac4de1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70cdd0ee0389abba9865de653aac4de1">&#9670;&nbsp;</a></span>nb_section_packet_frame</h2>
<div class="memitem">
@ -240,11 +239,11 @@ 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#l00480">480</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#l00486">486</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a802ea030a8d391905498183a514a7e0c"></a>
<a id="a802ea030a8d391905498183a514a7e0c" name="a802ea030a8d391905498183a514a7e0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a802ea030a8d391905498183a514a7e0c">&#9670;&nbsp;</a></span>nb_sections</h2>
<div class="memitem">
@ -258,11 +257,11 @@ 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#l00466">466</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#l00472">472</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a5b071322a7adc4478ba1c381bdc68202"></a>
<a id="a5b071322a7adc4478ba1c381bdc68202" name="a5b071322a7adc4478ba1c381bdc68202"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b071322a7adc4478ba1c381bdc68202">&#9670;&nbsp;</a></span>priv</h2>
<div class="memitem">
@ -276,11 +275,11 @@ 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#l00463">463</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#l00469">469</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a1a3764eca79f01c7935f6b00fb703ae9"></a>
<a id="a1a3764eca79f01c7935f6b00fb703ae9" name="a1a3764eca79f01c7935f6b00fb703ae9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1a3764eca79f01c7935f6b00fb703ae9">&#9670;&nbsp;</a></span>section</h2>
<div class="memitem">
@ -291,13 +290,13 @@ 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#l00474">474</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#l00480">480</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a5c4e2da0240ebfea6358065cfc923e4e"></a>
<a id="a5c4e2da0240ebfea6358065cfc923e4e" name="a5c4e2da0240ebfea6358065cfc923e4e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c4e2da0240ebfea6358065cfc923e4e">&#9670;&nbsp;</a></span>section_pbuf</h2>
<div class="memitem">
@ -308,13 +307,13 @@ 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#l00475">475</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#l00481">481</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="aa7cd84605a2d2d861d6540e07fa8dd73"></a>
<a id="aa7cd84605a2d2d861d6540e07fa8dd73" name="aa7cd84605a2d2d861d6540e07fa8dd73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7cd84605a2d2d861d6540e07fa8dd73">&#9670;&nbsp;</a></span>sections</h2>
<div class="memitem">
@ -328,11 +327,11 @@ 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#l00465">465</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#l00471">471</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ae4d434ae00d70b9f03be447b7c8fc02b"></a>
<a id="ae4d434ae00d70b9f03be447b7c8fc02b" name="ae4d434ae00d70b9f03be447b7c8fc02b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4d434ae00d70b9f03be447b7c8fc02b">&#9670;&nbsp;</a></span>string_validation</h2>
<div class="memitem">
@ -344,11 +343,11 @@ 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#l00482">482</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#l00488">488</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a347ccaf7bdb45104accb665cab1b093f"></a>
<a id="a347ccaf7bdb45104accb665cab1b093f" name="a347ccaf7bdb45104accb665cab1b093f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a347ccaf7bdb45104accb665cab1b093f">&#9670;&nbsp;</a></span>string_validation_replacement</h2>
<div class="memitem">
@ -360,11 +359,11 @@ 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#l00483">483</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#l00489">489</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ac2b79828ee0384f432182d1a03bf0083"></a>
<a id="ac2b79828ee0384f432182d1a03bf0083" name="ac2b79828ee0384f432182d1a03bf0083"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2b79828ee0384f432182d1a03bf0083">&#9670;&nbsp;</a></span>string_validation_utf8_flags</h2>
<div class="memitem">
@ -376,11 +375,11 @@ 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#l00484">484</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#l00490">490</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ae5665d3128f57b9024da5d5d029c83a4"></a>
<a id="ae5665d3128f57b9024da5d5d029c83a4" name="ae5665d3128f57b9024da5d5d029c83a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5665d3128f57b9024da5d5d029c83a4">&#9670;&nbsp;</a></span>writer</h2>
<div class="memitem">
@ -394,7 +393,7 @@ 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#l00461">461</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#l00467">467</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -404,7 +403,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -66,34 +66,33 @@ $(function() {
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">fftools_ffmpeg_hw.c File Reference</div> </div>
<div class="headertitle"><div class="title">fftools_ffmpeg_hw.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="../../d1/dba/fftools__ffmpeg__hw_8c_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 name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ae9e48d5142d26822d8e0c5170248df02"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#ae9e48d5142d26822d8e0c5170248df02">hw_device_get_by_type</a> (enum AVHWDeviceType type)</td></tr>
<tr class="separator:ae9e48d5142d26822d8e0c5170248df02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae46735072274c02ae8a17b80b8faa4dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#ae46735072274c02ae8a17b80b8faa4dd">hw_device_get_by_name</a> (const char *name)</td></tr>
<tr class="separator:ae46735072274c02ae8a17b80b8faa4dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27d1714061bcef2cc6c6ef59c2b54bd3"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a27d1714061bcef2cc6c6ef59c2b54bd3">hw_device_add</a> (void)</td></tr>
<tr class="separator:a27d1714061bcef2cc6c6ef59c2b54bd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2ff6a6bf8a6713b6d9218d5ad537e72b"><td class="memItemLeft" align="right" valign="top">static char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a2ff6a6bf8a6713b6d9218d5ad537e72b">hw_device_default_name</a> (enum AVHWDeviceType type)</td></tr>
<tr class="separator:a2ff6a6bf8a6713b6d9218d5ad537e72b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a73e64183d7f408877039a977b84ab64d"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a73e64183d7f408877039a977b84ab64d">hw_device_get_by_type</a> (enum AVHWDeviceType type)</td></tr>
<tr class="separator:a73e64183d7f408877039a977b84ab64d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a539c1a0fbb455ec027e6ecbabba11d3c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a539c1a0fbb455ec027e6ecbabba11d3c">hw_device_get_by_name</a> (const char *name)</td></tr>
<tr class="separator:a539c1a0fbb455ec027e6ecbabba11d3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac41be9b83ff337fa57579c8b804aad49"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#ac41be9b83ff337fa57579c8b804aad49">hw_device_add</a> (void)</td></tr>
<tr class="separator:ac41be9b83ff337fa57579c8b804aad49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd7a9c296e273f36897b0f4607b896a0"><td class="memItemLeft" align="right" valign="top">static char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#afd7a9c296e273f36897b0f4607b896a0">hw_device_default_name</a> (enum AVHWDeviceType type)</td></tr>
<tr class="separator:afd7a9c296e273f36897b0f4607b896a0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fdd5667b2f22f69baa2f711b13537fb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a3fdd5667b2f22f69baa2f711b13537fb">hw_device_init_from_string</a> (const char *arg, <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> **dev_out)</td></tr>
<tr class="separator:a3fdd5667b2f22f69baa2f711b13537fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2df78054133e8e90276b1d12af466da"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#ac2df78054133e8e90276b1d12af466da">hw_device_init_from_type</a> (enum AVHWDeviceType type, const char *device, <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> **dev_out)</td></tr>
<tr class="separator:ac2df78054133e8e90276b1d12af466da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b352c0afc44da703891d7538bbcf737"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a7b352c0afc44da703891d7538bbcf737">hw_device_free_all</a> (void)</td></tr>
<tr class="separator:a7b352c0afc44da703891d7538bbcf737"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9f7b75f708b69b75bf8ca4e980114af"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#af9f7b75f708b69b75bf8ca4e980114af">hw_device_match_by_codec</a> (const AVCodec *codec)</td></tr>
<tr class="separator:af9f7b75f708b69b75bf8ca4e980114af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77e8d12a4bdb9110a2d815b9aa5f8d02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a77e8d12a4bdb9110a2d815b9aa5f8d02">hw_device_setup_for_decode</a> (<a class="el" href="../../d3/d6e/struct_input_stream.html">InputStream</a> *ist)</td></tr>
<tr class="memitem:aae07987d3556e3507f0bb2e6c451ec2a"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#aae07987d3556e3507f0bb2e6c451ec2a">hw_device_match_by_codec</a> (const AVCodec *codec)</td></tr>
<tr class="separator:aae07987d3556e3507f0bb2e6c451ec2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77e8d12a4bdb9110a2d815b9aa5f8d02"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a77e8d12a4bdb9110a2d815b9aa5f8d02">hw_device_setup_for_decode</a> (<a class="el" href="../../d3/d6e/struct_input_stream.html">InputStream</a> *<a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a3f094febcaf5eb8767fa1d8f5cacd943">ist</a>)</td></tr>
<tr class="separator:a77e8d12a4bdb9110a2d815b9aa5f8d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01128ebf95f6a3b130f446b13b171c52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a01128ebf95f6a3b130f446b13b171c52">hw_device_setup_for_encode</a> (<a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *ost)</td></tr>
<tr class="memitem:a01128ebf95f6a3b130f446b13b171c52"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a01128ebf95f6a3b130f446b13b171c52">hw_device_setup_for_encode</a> (<a class="el" href="../../db/dde/struct_output_stream.html">OutputStream</a> *<a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a452d4354deb721ac53ff1926fd07ab04">ost</a>)</td></tr>
<tr class="separator:a01128ebf95f6a3b130f446b13b171c52"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a881e2fd908765c2df11400a6c0c7d9"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a5a881e2fd908765c2df11400a6c0c7d9">hwaccel_retrieve_data</a> (AVCodecContext *avctx, AVFrame *input)</td></tr>
<tr class="separator:a5a881e2fd908765c2df11400a6c0c7d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -102,7 +101,7 @@ Functions</h2></td></tr>
<tr class="memitem:a801831a4517a8db980bbf18c6db58cad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#a801831a4517a8db980bbf18c6db58cad">hw_device_setup_for_filter</a> (<a class="el" href="../../d9/de7/struct_filter_graph.html">FilterGraph</a> *fg)</td></tr>
<tr class="separator:a801831a4517a8db980bbf18c6db58cad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:acea1bac2a399307791945b15467b1f75"><td class="memItemLeft" align="right" valign="top">__thread <a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dba/fftools__ffmpeg__hw_8c.html#acea1bac2a399307791945b15467b1f75">nb_hw_devices</a></td></tr>
<tr class="separator:acea1bac2a399307791945b15467b1f75"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -110,8 +109,8 @@ Variables</h2></td></tr>
<tr class="separator:ad66ab6371d9721a18af13707d8b2735c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a27d1714061bcef2cc6c6ef59c2b54bd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27d1714061bcef2cc6c6ef59c2b54bd3">&#9670;&nbsp;</a></span>hw_device_add()</h2>
<a id="ac41be9b83ff337fa57579c8b804aad49" name="ac41be9b83ff337fa57579c8b804aad49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac41be9b83ff337fa57579c8b804aad49">&#9670;&nbsp;</a></span>hw_device_add()</h2>
<div class="memitem">
<div class="memproto">
@ -120,7 +119,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a>* hw_device_add </td>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> * hw_device_add </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
@ -138,8 +137,8 @@ Variables</h2></td></tr>
</div>
</div>
<a id="a2ff6a6bf8a6713b6d9218d5ad537e72b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ff6a6bf8a6713b6d9218d5ad537e72b">&#9670;&nbsp;</a></span>hw_device_default_name()</h2>
<a id="afd7a9c296e273f36897b0f4607b896a0" name="afd7a9c296e273f36897b0f4607b896a0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd7a9c296e273f36897b0f4607b896a0">&#9670;&nbsp;</a></span>hw_device_default_name()</h2>
<div class="memitem">
<div class="memproto">
@ -148,7 +147,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static char* hw_device_default_name </td>
<td class="memname">static char * hw_device_default_name </td>
<td>(</td>
<td class="paramtype">enum AVHWDeviceType&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
@ -166,7 +165,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="a7b352c0afc44da703891d7538bbcf737"></a>
<a id="a7b352c0afc44da703891d7538bbcf737" name="a7b352c0afc44da703891d7538bbcf737"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b352c0afc44da703891d7538bbcf737">&#9670;&nbsp;</a></span>hw_device_free_all()</h2>
<div class="memitem">
@ -186,14 +185,14 @@ Variables</h2></td></tr>
</div>
</div>
<a id="ae46735072274c02ae8a17b80b8faa4dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae46735072274c02ae8a17b80b8faa4dd">&#9670;&nbsp;</a></span>hw_device_get_by_name()</h2>
<a id="a539c1a0fbb455ec027e6ecbabba11d3c" name="a539c1a0fbb455ec027e6ecbabba11d3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a539c1a0fbb455ec027e6ecbabba11d3c">&#9670;&nbsp;</a></span>hw_device_get_by_name()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a>* hw_device_get_by_name </td>
<td class="memname"><a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> * hw_device_get_by_name </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>name</em></td><td>)</td>
@ -206,8 +205,8 @@ Variables</h2></td></tr>
</div>
</div>
<a id="ae9e48d5142d26822d8e0c5170248df02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae9e48d5142d26822d8e0c5170248df02">&#9670;&nbsp;</a></span>hw_device_get_by_type()</h2>
<a id="a73e64183d7f408877039a977b84ab64d" name="a73e64183d7f408877039a977b84ab64d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a73e64183d7f408877039a977b84ab64d">&#9670;&nbsp;</a></span>hw_device_get_by_type()</h2>
<div class="memitem">
<div class="memproto">
@ -216,7 +215,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a>* hw_device_get_by_type </td>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> * hw_device_get_by_type </td>
<td>(</td>
<td class="paramtype">enum AVHWDeviceType&#160;</td>
<td class="paramname"><em>type</em></td><td>)</td>
@ -234,7 +233,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="a3fdd5667b2f22f69baa2f711b13537fb"></a>
<a id="a3fdd5667b2f22f69baa2f711b13537fb" name="a3fdd5667b2f22f69baa2f711b13537fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3fdd5667b2f22f69baa2f711b13537fb">&#9670;&nbsp;</a></span>hw_device_init_from_string()</h2>
<div class="memitem">
@ -264,7 +263,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="ac2df78054133e8e90276b1d12af466da"></a>
<a id="ac2df78054133e8e90276b1d12af466da" name="ac2df78054133e8e90276b1d12af466da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac2df78054133e8e90276b1d12af466da">&#9670;&nbsp;</a></span>hw_device_init_from_type()</h2>
<div class="memitem">
@ -308,8 +307,8 @@ Variables</h2></td></tr>
</div>
</div>
<a id="af9f7b75f708b69b75bf8ca4e980114af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9f7b75f708b69b75bf8ca4e980114af">&#9670;&nbsp;</a></span>hw_device_match_by_codec()</h2>
<a id="aae07987d3556e3507f0bb2e6c451ec2a" name="aae07987d3556e3507f0bb2e6c451ec2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae07987d3556e3507f0bb2e6c451ec2a">&#9670;&nbsp;</a></span>hw_device_match_by_codec()</h2>
<div class="memitem">
<div class="memproto">
@ -318,7 +317,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a>* hw_device_match_by_codec </td>
<td class="memname">static <a class="el" href="../../de/dc7/struct_h_w_device.html">HWDevice</a> * hw_device_match_by_codec </td>
<td>(</td>
<td class="paramtype">const AVCodec *&#160;</td>
<td class="paramname"><em>codec</em></td><td>)</td>
@ -336,7 +335,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="a77e8d12a4bdb9110a2d815b9aa5f8d02"></a>
<a id="a77e8d12a4bdb9110a2d815b9aa5f8d02" name="a77e8d12a4bdb9110a2d815b9aa5f8d02"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77e8d12a4bdb9110a2d815b9aa5f8d02">&#9670;&nbsp;</a></span>hw_device_setup_for_decode()</h2>
<div class="memitem">
@ -356,7 +355,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="a01128ebf95f6a3b130f446b13b171c52"></a>
<a id="a01128ebf95f6a3b130f446b13b171c52" name="a01128ebf95f6a3b130f446b13b171c52"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01128ebf95f6a3b130f446b13b171c52">&#9670;&nbsp;</a></span>hw_device_setup_for_encode()</h2>
<div class="memitem">
@ -372,11 +371,11 @@ 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#l00428">428</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#l00440">440</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"></a>
<a id="a801831a4517a8db980bbf18c6db58cad" name="a801831a4517a8db980bbf18c6db58cad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a801831a4517a8db980bbf18c6db58cad">&#9670;&nbsp;</a></span>hw_device_setup_for_filter()</h2>
<div class="memitem">
@ -392,11 +391,11 @@ 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#l00534">534</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#l00546">546</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"></a>
<a id="a518f7a9a1bd1b5544a39fdbd1d925663" name="a518f7a9a1bd1b5544a39fdbd1d925663"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a518f7a9a1bd1b5544a39fdbd1d925663">&#9670;&nbsp;</a></span>hwaccel_decode_init()</h2>
<div class="memitem">
@ -412,11 +411,11 @@ 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#l00525">525</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#l00537">537</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"></a>
<a id="a5a881e2fd908765c2df11400a6c0c7d9" name="a5a881e2fd908765c2df11400a6c0c7d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5a881e2fd908765c2df11400a6c0c7d9">&#9670;&nbsp;</a></span>hwaccel_retrieve_data()</h2>
<div class="memitem">
@ -450,12 +449,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#l00483">483</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#l00495">495</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"></a>
<a id="ad66ab6371d9721a18af13707d8b2735c" name="ad66ab6371d9721a18af13707d8b2735c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad66ab6371d9721a18af13707d8b2735c">&#9670;&nbsp;</a></span>hw_devices</h2>
<div class="memitem">
@ -471,7 +470,7 @@ Variables</h2></td></tr>
</div>
</div>
<a id="acea1bac2a399307791945b15467b1f75"></a>
<a id="acea1bac2a399307791945b15467b1f75" name="acea1bac2a399307791945b15467b1f75"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acea1bac2a399307791945b15467b1f75">&#9670;&nbsp;</a></span>nb_hw_devices</h2>
<div class="memitem">
@ -490,7 +489,7 @@ Variables</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -66,36 +66,35 @@ $(function() {
<div class="summary">
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">ffprobekit.c File Reference</div> </div>
<div class="headertitle"><div class="title">ffprobekit.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="../../d1/ddd/ffprobekit_8c_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 name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4a459d7e4c3cfbf3e3d38eba042a8d53"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a> (<a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> argc, char **argv)</td></tr>
<tr class="separator:a4a459d7e4c3cfbf3e3d38eba042a8d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22e5090e94d0e805f1282843c14a5849"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a22e5090e94d0e805f1282843c14a5849">addSession</a> (long id)</td></tr>
<tr class="separator:a22e5090e94d0e805f1282843c14a5849"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afec70e0490b0f2e2ccd750f64a13668a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#afec70e0490b0f2e2ccd750f64a13668a">removeSession</a> (long id)</td></tr>
<tr class="separator:afec70e0490b0f2e2ccd750f64a13668a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adde752dd2b1262203a88cab573383d47"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#adde752dd2b1262203a88cab573383d47">resetMessagesInTransmit</a> (long id)</td></tr>
<tr class="separator:adde752dd2b1262203a88cab573383d47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a640b39ead30c29ab4caac1fc28140c15"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a640b39ead30c29ab4caac1fc28140c15">addSession</a> (long sessionId)</td></tr>
<tr class="separator:a640b39ead30c29ab4caac1fc28140c15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f236f20079b407567c62072710656b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a5f236f20079b407567c62072710656b5">removeSession</a> (long sessionId)</td></tr>
<tr class="separator:a5f236f20079b407567c62072710656b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2b13505798c32f04fd3334e399f3a2f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#ab2b13505798c32f04fd3334e399f3a2f">resetMessagesInTransmit</a> (long sessionId)</td></tr>
<tr class="separator:ab2b13505798c32f04fd3334e399f3a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1049ebb2099274feadd0cbf165e9c8ef"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jint JNICALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a> (JNIEnv *env, jclass object, jlong id, jobjectArray stringArray)</td></tr>
<tr class="separator:a1049ebb2099274feadd0cbf165e9c8ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:aefb40225eb03b1329a1fe7931c312eb8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a></td></tr>
<tr class="separator:aefb40225eb03b1329a1fe7931c312eb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19ed73b458e2e6e6117f51d6bd6a9bf7"><td class="memItemLeft" align="right" valign="top">__thread volatile long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#a19ed73b458e2e6e6117f51d6bd6a9bf7">sessionId</a></td></tr>
<tr class="separator:a19ed73b458e2e6e6117f51d6bd6a9bf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af764c3599e5f16ca1cd943b094aa08fc"><td class="memItemLeft" align="right" valign="top">__thread volatile long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/ddd/ffprobekit_8c.html#af764c3599e5f16ca1cd943b094aa08fc">globalSessionId</a></td></tr>
<tr class="separator:af764c3599e5f16ca1cd943b094aa08fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a22e5090e94d0e805f1282843c14a5849"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22e5090e94d0e805f1282843c14a5849">&#9670;&nbsp;</a></span>addSession()</h2>
<a id="a640b39ead30c29ab4caac1fc28140c15" name="a640b39ead30c29ab4caac1fc28140c15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a640b39ead30c29ab4caac1fc28140c15">&#9670;&nbsp;</a></span>addSession()</h2>
<div class="memitem">
<div class="memproto">
@ -109,7 +108,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>
@ -117,11 +116,11 @@ Variables</h2></td></tr>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00357">357</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00358">358</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a4a459d7e4c3cfbf3e3d38eba042a8d53"></a>
<a id="a4a459d7e4c3cfbf3e3d38eba042a8d53" name="a4a459d7e4c3cfbf3e3d38eba042a8d53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4a459d7e4c3cfbf3e3d38eba042a8d53">&#9670;&nbsp;</a></span>ffprobe_execute()</h2>
<div class="memitem">
@ -146,13 +145,13 @@ 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#l03713">3713</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#l03717">3717</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a1049ebb2099274feadd0cbf165e9c8ef"></a>
<a id="a1049ebb2099274feadd0cbf165e9c8ef" name="a1049ebb2099274feadd0cbf165e9c8ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1049ebb2099274feadd0cbf165e9c8ef">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
<div class="memitem">
@ -189,7 +188,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,8 +204,8 @@ Variables</h2></td></tr>
</div>
</div>
<a id="afec70e0490b0f2e2ccd750f64a13668a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afec70e0490b0f2e2ccd750f64a13668a">&#9670;&nbsp;</a></span>removeSession()</h2>
<a id="a5f236f20079b407567c62072710656b5" name="a5f236f20079b407567c62072710656b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5f236f20079b407567c62072710656b5">&#9670;&nbsp;</a></span>removeSession()</h2>
<div class="memitem">
<div class="memproto">
@ -220,7 +219,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>
@ -228,12 +227,12 @@ Variables</h2></td></tr>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00398">398</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00399">399</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="adde752dd2b1262203a88cab573383d47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adde752dd2b1262203a88cab573383d47">&#9670;&nbsp;</a></span>resetMessagesInTransmit()</h2>
<a id="ab2b13505798c32f04fd3334e399f3a2f" name="ab2b13505798c32f04fd3334e399f3a2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2b13505798c32f04fd3334e399f3a2f">&#9670;&nbsp;</a></span>resetMessagesInTransmit()</h2>
<div class="memitem">
<div class="memproto">
@ -247,7 +246,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>
@ -255,12 +254,12 @@ Variables</h2></td></tr>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00430">430</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00431">431</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="aefb40225eb03b1329a1fe7931c312eb8"></a>
<a id="aefb40225eb03b1329a1fe7931c312eb8" name="aefb40225eb03b1329a1fe7931c312eb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aefb40225eb03b1329a1fe7931c312eb8">&#9670;&nbsp;</a></span>configuredLogLevel</h2>
<div class="memitem">
@ -279,14 +278,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#l00108">108</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</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>
</div>
</div>
<a id="a19ed73b458e2e6e6117f51d6bd6a9bf7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19ed73b458e2e6e6117f51d6bd6a9bf7">&#9670;&nbsp;</a></span>sessionId</h2>
<a id="af764c3599e5f16ca1cd943b094aa08fc" name="af764c3599e5f16ca1cd943b094aa08fc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af764c3599e5f16ca1cd943b094aa08fc">&#9670;&nbsp;</a></span>globalSessionId</h2>
<div class="memitem">
<div class="memproto">
@ -295,7 +294,7 @@ Variables</h2></td></tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">__thread volatile long sessionId</td>
<td class="memname">__thread volatile long globalSessionId</td>
</tr>
</table>
</td>
@ -304,16 +303,16 @@ 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#l00105">105</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00106">106</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,117 +63,116 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">ffprobekit.c</div> </div>
<div class="headertitle"><div class="title">ffprobekit.c</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d1/ddd/ffprobekit_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2020-2021 Taner Sener</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;pthread.h&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; </div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;libavcodec/jni.h&quot;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;libavutil/bprint.h&quot;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a>&quot;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a>;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">extern</span> __thread <span class="keyword">volatile</span> <span class="keywordtype">long</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a19ed73b458e2e6e6117f51d6bd6a9bf7">sessionId</a>;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a22e5090e94d0e805f1282843c14a5849">addSession</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#afec70e0490b0f2e2ccd750f64a13668a">removeSession</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="../../d1/ddd/ffprobekit_8c.html#adde752dd2b1262203a88cab573383d47">resetMessagesInTransmit</a>(<span class="keywordtype">long</span> <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef"> 47</a></span>&#160;JNIEXPORT jint JNICALL <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jlong <span class="keywordtype">id</span>, jobjectArray stringArray) {</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; jstring *tempArray = NULL;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordtype">int</span> argumentCount = 1;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keywordtype">char</span> **argv = NULL;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; <span class="comment">// SETS DEFAULT LOG LEVEL BEFORE STARTING A NEW RUN</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; av_log_set_level(<a class="code" href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a>);</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; </div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">if</span> (stringArray) {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">int</span> programArgumentCount = (*env)-&gt;GetArrayLength(env, stringArray);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; argumentCount = programArgumentCount + 1;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; tempArray = (jstring *) av_malloc(<span class="keyword">sizeof</span>(jstring) * programArgumentCount);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="comment">/* PRESERVE USAGE FORMAT</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment"> * ffprobe &lt;arguments&gt;</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; argv = (<span class="keywordtype">char</span> **)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*) * (argumentCount));</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; argv[0] = (<span class="keywordtype">char</span> *)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (strlen(<a class="code" href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>) + 1));</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; strcpy(argv[0], <a class="code" href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>);</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="comment">// PREPARE ARRAY ELEMENTS</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">if</span> (stringArray) {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; tempArray[i] = (jstring) (*env)-&gt;GetObjectArrayElement(env, stringArray, i);</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">if</span> (tempArray[i] != NULL) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; argv[i + 1] = (<span class="keywordtype">char</span> *) (*env)-&gt;GetStringUTFChars(env, tempArray[i], 0);</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; }</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="comment">// REGISTER THE ID BEFORE STARTING THE SESSION</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a19ed73b458e2e6e6117f51d6bd6a9bf7">sessionId</a> = (long) <span class="keywordtype">id</span>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a22e5090e94d0e805f1282843c14a5849">addSession</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; </div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <a class="code" href="../../d1/ddd/ffprobekit_8c.html#adde752dd2b1262203a88cab573383d47">resetMessagesInTransmit</a>(<a class="code" href="../../d1/ddd/ffprobekit_8c.html#a19ed73b458e2e6e6117f51d6bd6a9bf7">sessionId</a>);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="comment">// RUN</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordtype">int</span> returnCode = <a class="code" href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a>(argumentCount, argv);</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="comment">// ALWAYS REMOVE THE ID FROM THE MAP</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="code" href="../../d1/ddd/ffprobekit_8c.html#afec70e0490b0f2e2ccd750f64a13668a">removeSession</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// CLEANUP</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordflow">if</span> (tempArray) {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; (*env)-&gt;ReleaseStringUTFChars(env, tempArray[i], argv[i + 1]);</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; }</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; av_free(tempArray);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; av_free(argv[0]);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; av_free(argv);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordflow">return</span> returnCode;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;}</div>
<a href="../../d1/ddd/ffprobekit_8c.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"> * Copyright (c) 2020-2021 Taner Sener</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#include &lt;pthread.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="preprocessor">#include &lt;sys/stat.h&gt;</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> </div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &quot;libavcodec/jni.h&quot;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &quot;libavutil/bprint.h&quot;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &quot;<a class="code" href="../../d8/dee/ffmpegkit_8h.html">ffmpegkit.h</a>&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv);</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="keyword">extern</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a>;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">extern</span> __thread <span class="keyword">volatile</span> <span class="keywordtype">long</span> <a class="code hl_variable" href="../../d1/ddd/ffprobekit_8c.html#af764c3599e5f16ca1cd943b094aa08fc">globalSessionId</a>;</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a640b39ead30c29ab4caac1fc28140c15">addSession</a>(<span class="keywordtype">long</span> sessionId);</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a5f236f20079b407567c62072710656b5">removeSession</a>(<span class="keywordtype">long</span> sessionId);</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#ab2b13505798c32f04fd3334e399f3a2f">resetMessagesInTransmit</a>(<span class="keywordtype">long</span> sessionId);</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"><a class="line" href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef"> 47</a></span>JNIEXPORT jint JNICALL <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a1049ebb2099274feadd0cbf165e9c8ef">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a>(JNIEnv *env, jclass <span class="keywordtype">object</span>, jlong <span class="keywordtype">id</span>, jobjectArray stringArray) {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> jstring *tempArray = NULL;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="keywordtype">int</span> argumentCount = 1;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">char</span> **argv = NULL;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// SETS DEFAULT LOG LEVEL BEFORE STARTING A NEW RUN</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> av_log_set_level(<a class="code hl_variable" href="../../d1/ddd/ffprobekit_8c.html#aefb40225eb03b1329a1fe7931c312eb8">configuredLogLevel</a>);</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> </div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <span class="keywordflow">if</span> (stringArray) {</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">int</span> programArgumentCount = (*env)-&gt;GetArrayLength(env, stringArray);</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> argumentCount = programArgumentCount + 1;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> tempArray = (jstring *) av_malloc(<span class="keyword">sizeof</span>(jstring) * programArgumentCount);</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> }</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/* PRESERVE USAGE FORMAT</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> *</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> * ffprobe &lt;arguments&gt;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> */</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> argv = (<span class="keywordtype">char</span> **)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>*) * (argumentCount));</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> argv[0] = (<span class="keywordtype">char</span> *)av_malloc(<span class="keyword">sizeof</span>(<span class="keywordtype">char</span>) * (strlen(<a class="code hl_define" href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>) + 1));</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> strcpy(argv[0], <a class="code hl_define" href="../../d8/dee/ffmpegkit_8h.html#a6e43beaa714b1bf01ce2271440786e38">LIB_NAME</a>);</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="comment">// PREPARE ARRAY ELEMENTS</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keywordflow">if</span> (stringArray) {</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> tempArray[i] = (jstring) (*env)-&gt;GetObjectArrayElement(env, stringArray, i);</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> (tempArray[i] != NULL) {</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> argv[i + 1] = (<span class="keywordtype">char</span> *) (*env)-&gt;GetStringUTFChars(env, tempArray[i], 0);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> }</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</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> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">// REGISTER THE ID BEFORE STARTING THE SESSION</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_variable" href="../../d1/ddd/ffprobekit_8c.html#af764c3599e5f16ca1cd943b094aa08fc">globalSessionId</a> = (long) <span class="keywordtype">id</span>;</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a640b39ead30c29ab4caac1fc28140c15">addSession</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#ab2b13505798c32f04fd3334e399f3a2f">resetMessagesInTransmit</a>(<a class="code hl_variable" href="../../d1/ddd/ffprobekit_8c.html#af764c3599e5f16ca1cd943b094aa08fc">globalSessionId</a>);</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// RUN</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordtype">int</span> returnCode = <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a4a459d7e4c3cfbf3e3d38eba042a8d53">ffprobe_execute</a>(argumentCount, argv);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// ALWAYS REMOVE THE ID FROM THE MAP</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_function" href="../../d1/ddd/ffprobekit_8c.html#a5f236f20079b407567c62072710656b5">removeSession</a>((<span class="keywordtype">long</span>) <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// CLEANUP</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span> (tempArray) {</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; (argumentCount - 1); i++) {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> (*env)-&gt;ReleaseStringUTFChars(env, tempArray[i], argv[i + 1]);</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> av_free(tempArray);</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> }</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> av_free(argv[0]);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> av_free(argv);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="keywordflow">return</span> returnCode;</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</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#l00047">ffprobekit.c:47</a></div></div>
<div class="ttc" id="affprobekit_8c_html_a19ed73b458e2e6e6117f51d6bd6a9bf7"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a19ed73b458e2e6e6117f51d6bd6a9bf7">sessionId</a></div><div class="ttdeci">__thread volatile long sessionId</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00105">ffmpegkit.c:105</a></div></div>
<div class="ttc" id="affprobekit_8c_html_a22e5090e94d0e805f1282843c14a5849"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#a22e5090e94d0e805f1282843c14a5849">addSession</a></div><div class="ttdeci">void addSession(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00357">ffmpegkit.c:357</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#l03713">fftools_ffprobe.c:3713</a></div></div>
<div class="ttc" id="affprobekit_8c_html_adde752dd2b1262203a88cab573383d47"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#adde752dd2b1262203a88cab573383d47">resetMessagesInTransmit</a></div><div class="ttdeci">void resetMessagesInTransmit(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00430">ffmpegkit.c:430</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#l00108">ffmpegkit.c:108</a></div></div>
<div class="ttc" id="affprobekit_8c_html_afec70e0490b0f2e2ccd750f64a13668a"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#afec70e0490b0f2e2ccd750f64a13668a">removeSession</a></div><div class="ttdeci">void removeSession(long id)</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00398">ffmpegkit.c:398</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#l03717">fftools_ffprobe.c:3717</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#l00399">ffmpegkit.c:399</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#l00358">ffmpegkit.c:358</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#l00431">ffmpegkit.c:431</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#l00109">ffmpegkit.c:109</a></div></div>
<div class="ttc" id="affprobekit_8c_html_af764c3599e5f16ca1cd943b094aa08fc"><div class="ttname"><a href="../../d1/ddd/ffprobekit_8c.html#af764c3599e5f16ca1cd943b094aa08fc">globalSessionId</a></div><div class="ttdeci">__thread volatile long globalSessionId</div><div class="ttdef"><b>Definition:</b> <a href="../../dc/dd3/ffmpegkit_8c_source.html#l00106">ffmpegkit.c:106</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:50 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,20 +65,19 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ffprobekit.h File Reference</div> </div>
<div class="headertitle"><div class="title">ffprobekit.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="../../d2/dbf/ffprobekit_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 name="func-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a22b43bda480738857bff636161c61a58"><td class="memItemLeft" align="right" valign="top">JNIEXPORT jint JNICALL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dbf/ffprobekit_8h.html#a22b43bda480738857bff636161c61a58">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a> (JNIEnv *, jclass, jlong, jobjectArray)</td></tr>
<tr class="separator:a22b43bda480738857bff636161c61a58"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="a22b43bda480738857bff636161c61a58"></a>
<a id="a22b43bda480738857bff636161c61a58" name="a22b43bda480738857bff636161c61a58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a22b43bda480738857bff636161c61a58">&#9670;&nbsp;</a></span>Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute()</h2>
<div class="memitem">
@ -115,7 +114,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>
@ -134,7 +133,7 @@ Functions</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,47 +63,46 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">ffprobekit.h</div> </div>
<div class="headertitle"><div class="title">ffprobekit.h</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d2/dbf/ffprobekit_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2020-2021 Taner Sener</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef FFPROBE_KIT_H</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define FFPROBE_KIT_H</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;jni.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> * Class: com_arthenica_ffmpegkit_FFmpegKitConfig</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * Method: nativeFFprobeExecute</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * Signature: (J[Ljava/lang/String;)I</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;JNIEXPORT jint JNICALL <a class="code" href="../../d2/dbf/ffprobekit_8h.html#a22b43bda480738857bff636161c61a58">Java_com_arthenica_ffmpegkit_FFmpegKitConfig_nativeFFprobeExecute</a>(JNIEnv *, jclass, jlong, jobjectArray);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* FFPROBE_KIT_H */</span><span class="preprocessor"></span></div>
<a href="../../d2/dbf/ffprobekit_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"> * Copyright (c) 2020-2021 Taner Sener</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifndef FFPROBE_KIT_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define FFPROBE_KIT_H</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;jni.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment">/*</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * Class: com_arthenica_ffmpegkit_FFmpegKitConfig</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * Method: nativeFFprobeExecute</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> * Signature: (J[Ljava/lang/String;)I</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> */</span></div>
<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#l00047">ffprobekit.c:47</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:50 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">CallbackData Struct Reference</div> </div>
<div class="headertitle"><div class="title">CallbackData Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a24877dd94bec8b5bad7a0ed6893f7c28"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/dc3/struct_callback_data.html#a24877dd94bec8b5bad7a0ed6893f7c28">type</a></td></tr>
<tr class="separator:a24877dd94bec8b5bad7a0ed6893f7c28"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -98,11 +97,11 @@ Data Fields</h2></td></tr>
<tr class="separator:a2e5d0fd0859aca2c5a304b4823b86ccd"><td class="memSeparator" colspan="2">&#160;</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#l00036">36</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</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"></a>
<a id="ae7661f79a95fe7d0eaa118264431f9c2" name="ae7661f79a95fe7d0eaa118264431f9c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae7661f79a95fe7d0eaa118264431f9c2">&#9670;&nbsp;</a></span>logData</h2>
<div class="memitem">
@ -114,11 +113,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00041">41</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00042">42</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a0108648839b77d246e659a7eefdde4fb"></a>
<a id="a0108648839b77d246e659a7eefdde4fb" name="a0108648839b77d246e659a7eefdde4fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0108648839b77d246e659a7eefdde4fb">&#9670;&nbsp;</a></span>logLevel</h2>
<div class="memitem">
@ -130,11 +129,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00040">40</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00041">41</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a2e5d0fd0859aca2c5a304b4823b86ccd"></a>
<a id="a2e5d0fd0859aca2c5a304b4823b86ccd" name="a2e5d0fd0859aca2c5a304b4823b86ccd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e5d0fd0859aca2c5a304b4823b86ccd">&#9670;&nbsp;</a></span>next</h2>
<div class="memitem">
@ -146,11 +145,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00051">51</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00052">52</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="ad8af170b5f3057c34dc1221a65a8c4af"></a>
<a id="ad8af170b5f3057c34dc1221a65a8c4af" name="ad8af170b5f3057c34dc1221a65a8c4af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad8af170b5f3057c34dc1221a65a8c4af">&#9670;&nbsp;</a></span>sessionId</h2>
<div class="memitem">
@ -162,11 +161,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00038">38</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00039">39</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a0e02eb985ed5c68bdf82a3445c0b4514"></a>
<a id="a0e02eb985ed5c68bdf82a3445c0b4514" name="a0e02eb985ed5c68bdf82a3445c0b4514"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e02eb985ed5c68bdf82a3445c0b4514">&#9670;&nbsp;</a></span>statisticsBitrate</h2>
<div class="memitem">
@ -178,11 +177,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00048">48</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00049">49</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="ad4ef14e9625fe915267d644480e9410f"></a>
<a id="ad4ef14e9625fe915267d644480e9410f" name="ad4ef14e9625fe915267d644480e9410f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4ef14e9625fe915267d644480e9410f">&#9670;&nbsp;</a></span>statisticsFps</h2>
<div class="memitem">
@ -194,11 +193,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00044">44</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00045">45</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a6ea1c5fbcf7ad64a04687d738a9c6559"></a>
<a id="a6ea1c5fbcf7ad64a04687d738a9c6559" name="a6ea1c5fbcf7ad64a04687d738a9c6559"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ea1c5fbcf7ad64a04687d738a9c6559">&#9670;&nbsp;</a></span>statisticsFrameNumber</h2>
<div class="memitem">
@ -210,11 +209,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00043">43</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00044">44</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a0eba672f8309ce08c41eeb63c48091af"></a>
<a id="a0eba672f8309ce08c41eeb63c48091af" name="a0eba672f8309ce08c41eeb63c48091af"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0eba672f8309ce08c41eeb63c48091af">&#9670;&nbsp;</a></span>statisticsQuality</h2>
<div class="memitem">
@ -226,11 +225,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00045">45</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00046">46</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="aee6855bc657b56db6c8a32656b3018c4"></a>
<a id="aee6855bc657b56db6c8a32656b3018c4" name="aee6855bc657b56db6c8a32656b3018c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee6855bc657b56db6c8a32656b3018c4">&#9670;&nbsp;</a></span>statisticsSize</h2>
<div class="memitem">
@ -242,11 +241,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00046">46</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00047">47</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a577a99dc4c2767d1946ac174f7a0c69e"></a>
<a id="a577a99dc4c2767d1946ac174f7a0c69e" name="a577a99dc4c2767d1946ac174f7a0c69e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a577a99dc4c2767d1946ac174f7a0c69e">&#9670;&nbsp;</a></span>statisticsSpeed</h2>
<div class="memitem">
@ -258,11 +257,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00049">49</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00050">50</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="abe4eff38e39d603bd966c554e9e5afc8"></a>
<a id="abe4eff38e39d603bd966c554e9e5afc8" name="abe4eff38e39d603bd966c554e9e5afc8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe4eff38e39d603bd966c554e9e5afc8">&#9670;&nbsp;</a></span>statisticsTime</h2>
<div class="memitem">
@ -274,11 +273,11 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00047">47</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00048">48</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
<a id="a24877dd94bec8b5bad7a0ed6893f7c28"></a>
<a id="a24877dd94bec8b5bad7a0ed6893f7c28" name="a24877dd94bec8b5bad7a0ed6893f7c28"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24877dd94bec8b5bad7a0ed6893f7c28">&#9670;&nbsp;</a></span>type</h2>
<div class="memitem">
@ -290,7 +289,7 @@ Data Fields</h2></td></tr>
</table>
</div><div class="memdoc">
<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>
<p class="definition">Definition at line <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html#l00038">38</a> of file <a class="el" href="../../dc/dd3/ffmpegkit_8c_source.html">ffmpegkit.c</a>.</p>
</div>
</div>
@ -300,7 +299,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">CompactContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">CompactContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a8e0108669bebe76f67bb8ae4869f4843"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#a8e0108669bebe76f67bb8ae4869f4843">class</a></td></tr>
<tr class="separator:a8e0108669bebe76f67bb8ae4869f4843"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -84,8 +83,8 @@ Data Fields</h2></td></tr>
<tr class="separator:af0b37847b18bd84f3d786c7e824356ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9d56249a5965a5ec47f3a1241ce6b1e"><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#ad9d56249a5965a5ec47f3a1241ce6b1e">escape_mode_str</a></td></tr>
<tr class="separator:ad9d56249a5965a5ec47f3a1241ce6b1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca6e0530af4ddb5ed96f8198e57c7250"><td class="memItemLeft" align="right" valign="top">const char *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#aca6e0530af4ddb5ed96f8198e57c7250">escape_str</a> )(AVBPrint *dst, const char *src, const char sep, void *log_ctx)</td></tr>
<tr class="separator:aca6e0530af4ddb5ed96f8198e57c7250"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75a85295a2f8026ff95330866cf563aa"><td class="memItemLeft" align="right" valign="top">const char *(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#a75a85295a2f8026ff95330866cf563aa">escape_str</a> )(AVBPrint *dst, const char *src, const char sep, void *log_ctx)</td></tr>
<tr class="separator:a75a85295a2f8026ff95330866cf563aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b8d470952d1051c0fd6b89b13a35e1e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#a2b8d470952d1051c0fd6b89b13a35e1e">nested_section</a> [<a class="el" href="../../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93">SECTION_MAX_NB_LEVELS</a>]</td></tr>
<tr class="separator:a2b8d470952d1051c0fd6b89b13a35e1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2384aee850920cabfaece87e4c368931"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d2/ddd/struct_compact_context.html#a2384aee850920cabfaece87e4c368931">has_nested_elems</a> [<a class="el" href="../../d8/d78/fftools__ffprobe_8c.html#a2f442d8e70375b779fedabf97069dd93">SECTION_MAX_NB_LEVELS</a>]</td></tr>
@ -95,9 +94,9 @@ 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#l01078">1078</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#l01086">1086</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"></a>
<a id="a8e0108669bebe76f67bb8ae4869f4843" name="a8e0108669bebe76f67bb8ae4869f4843"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e0108669bebe76f67bb8ae4869f4843">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -109,11 +108,11 @@ 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#l01079">1079</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#l01087">1087</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ad9d56249a5965a5ec47f3a1241ce6b1e"></a>
<a id="ad9d56249a5965a5ec47f3a1241ce6b1e" name="ad9d56249a5965a5ec47f3a1241ce6b1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad9d56249a5965a5ec47f3a1241ce6b1e">&#9670;&nbsp;</a></span>escape_mode_str</h2>
<div class="memitem">
@ -125,27 +124,27 @@ 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#l01084">1084</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#l01092">1092</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="aca6e0530af4ddb5ed96f8198e57c7250"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aca6e0530af4ddb5ed96f8198e57c7250">&#9670;&nbsp;</a></span>escape_str</h2>
<a id="a75a85295a2f8026ff95330866cf563aa" name="a75a85295a2f8026ff95330866cf563aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75a85295a2f8026ff95330866cf563aa">&#9670;&nbsp;</a></span>escape_str</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char*(* CompactContext::escape_str) (AVBPrint *dst, const char *src, const char sep, void *log_ctx)</td>
<td class="memname">const char *(* CompactContext::escape_str) (AVBPrint *dst, const char *src, const char sep, void *log_ctx)</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l01085">1085</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#l01093">1093</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a2384aee850920cabfaece87e4c368931"></a>
<a id="a2384aee850920cabfaece87e4c368931" name="a2384aee850920cabfaece87e4c368931"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2384aee850920cabfaece87e4c368931">&#9670;&nbsp;</a></span>has_nested_elems</h2>
<div class="memitem">
@ -157,11 +156,11 @@ 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#l01087">1087</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#l01095">1095</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a803eb26c6bc39957c885f8f58dfee861"></a>
<a id="a803eb26c6bc39957c885f8f58dfee861" name="a803eb26c6bc39957c885f8f58dfee861"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a803eb26c6bc39957c885f8f58dfee861">&#9670;&nbsp;</a></span>item_sep</h2>
<div class="memitem">
@ -173,11 +172,11 @@ 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#l01081">1081</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#l01089">1089</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ab69db67b807887e2e11247ff28f0482c"></a>
<a id="ab69db67b807887e2e11247ff28f0482c" name="ab69db67b807887e2e11247ff28f0482c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab69db67b807887e2e11247ff28f0482c">&#9670;&nbsp;</a></span>item_sep_str</h2>
<div class="memitem">
@ -189,11 +188,11 @@ 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#l01080">1080</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#l01088">1088</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a2b8d470952d1051c0fd6b89b13a35e1e"></a>
<a id="a2b8d470952d1051c0fd6b89b13a35e1e" name="a2b8d470952d1051c0fd6b89b13a35e1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b8d470952d1051c0fd6b89b13a35e1e">&#9670;&nbsp;</a></span>nested_section</h2>
<div class="memitem">
@ -205,11 +204,11 @@ 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#l01086">1086</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#l01094">1094</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a4d211d2b2ba9c83a0613ec9c79af1f71"></a>
<a id="a4d211d2b2ba9c83a0613ec9c79af1f71" name="a4d211d2b2ba9c83a0613ec9c79af1f71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d211d2b2ba9c83a0613ec9c79af1f71">&#9670;&nbsp;</a></span>nokey</h2>
<div class="memitem">
@ -221,11 +220,11 @@ 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#l01082">1082</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#l01090">1090</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="af0b37847b18bd84f3d786c7e824356ee"></a>
<a id="af0b37847b18bd84f3d786c7e824356ee" name="af0b37847b18bd84f3d786c7e824356ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0b37847b18bd84f3d786c7e824356ee">&#9670;&nbsp;</a></span>print_section</h2>
<div class="memitem">
@ -237,11 +236,11 @@ 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#l01083">1083</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#l01091">1091</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a14c571b1a684a9d550b5649fcbaa93f8"></a>
<a id="a14c571b1a684a9d550b5649fcbaa93f8" name="a14c571b1a684a9d550b5649fcbaa93f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a14c571b1a684a9d550b5649fcbaa93f8">&#9670;&nbsp;</a></span>terminate_line</h2>
<div class="memitem">
@ -253,7 +252,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#l01088">1088</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#l01096">1096</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -263,7 +262,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">Option Struct Reference</div> </div>
<div class="headertitle"><div class="title">Option Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a3b25df629d81a005daeb930f12560edc"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc">opt</a></td></tr>
<tr class="separator:a3b25df629d81a005daeb930f12560edc"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -80,11 +81,11 @@ Data Fields</h2></td></tr>
<tr class="separator:a4dc04a99a38324c37ad89101d720e236"><td class="memSeparator" colspan="2">&#160;</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#l00276">276</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><h2 class="groupheader">Field Documentation</h2>
<a id="a16d977bce49a6da603426937ff7b6617"></a>
<a id="a16d977bce49a6da603426937ff7b6617" name="a16d977bce49a6da603426937ff7b6617"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16d977bce49a6da603426937ff7b6617">&#9670;&nbsp;</a></span>key</h2>
<div class="memitem">
@ -96,11 +97,11 @@ 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#l00278">278</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>
<a id="a3b25df629d81a005daeb930f12560edc"></a>
<a id="a3b25df629d81a005daeb930f12560edc" name="a3b25df629d81a005daeb930f12560edc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b25df629d81a005daeb930f12560edc">&#9670;&nbsp;</a></span>opt</h2>
<div class="memitem">
@ -112,11 +113,11 @@ 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#l00277">277</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="a4dc04a99a38324c37ad89101d720e236"></a>
<a id="a4dc04a99a38324c37ad89101d720e236" name="a4dc04a99a38324c37ad89101d720e236"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4dc04a99a38324c37ad89101d720e236">&#9670;&nbsp;</a></span>val</h2>
<div class="memitem">
@ -128,7 +129,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#l00279">279</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#l00282">282</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
@ -138,7 +139,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -66,17 +66,18 @@ $(function() {
<div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">InputStream Struct Reference</div> </div>
<div class="headertitle"><div class="title">InputStream Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html">sub2video</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:ad47d834630eee2dca258aa449fb1df47"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#ad47d834630eee2dca258aa449fb1df47">file_index</a></td></tr>
<tr class="separator:ad47d834630eee2dca258aa449fb1df47"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -90,16 +91,21 @@ Data Fields</h2></td></tr>
<tr class="separator:ac9fc51324b931c1db5c5c1445fe70c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a550ceee60cb995b284b52962dcba6597"><td class="memItemLeft" align="right" valign="top">AVCodecContext *&#160;</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">&#160;</td></tr>
<tr class="memitem:a6147a2f3e7cfec58b3f790dfc318e4bc"><td class="memItemLeft" align="right" valign="top">AVCodec *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a6147a2f3e7cfec58b3f790dfc318e4bc">dec</a></td></tr>
<tr class="separator:a6147a2f3e7cfec58b3f790dfc318e4bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec71efef67656157f493555fddbbc1c9"><td class="memItemLeft" align="right" valign="top">const AVCodec *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aec71efef67656157f493555fddbbc1c9">dec</a></td></tr>
<tr class="separator:aec71efef67656157f493555fddbbc1c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1492e008c195bbd4e2c84bccbc5ee216"><td class="memItemLeft" align="right" valign="top">AVFrame *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a1492e008c195bbd4e2c84bccbc5ee216">decoded_frame</a></td></tr>
<tr class="separator:a1492e008c195bbd4e2c84bccbc5ee216"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa43597e5120768ad60b4dc1819942907"><td class="memItemLeft" align="right" valign="top">AVFrame *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#aa43597e5120768ad60b4dc1819942907">filter_frame</a></td></tr>
<tr class="separator:aa43597e5120768ad60b4dc1819942907"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9d7d1e08713e8fb98d18d1ef6367e8e6"><td class="memItemLeft" align="right" valign="top">AVPacket *&#160;</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">&#160;</td></tr>
<tr class="memitem:a6718f5f7b2206b2848af5e35ae3a9186"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6e/struct_input_stream.html#a6718f5f7b2206b2848af5e35ae3a9186">start</a></td></tr>
<tr class="separator:a6718f5f7b2206b2848af5e35ae3a9186"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8026af86b300d31432bc1bf74910aea5"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</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">&#160;</td></tr>
<tr class="memitem:aa4918133b75f0447192deea8c21f822e"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</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">&#160;</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="separator:aa4918133b75f0447192deea8c21f822e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</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">&#160;</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="separator:a1e7893cdf661d9ad7c24fdccc60fa05e"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -193,9 +199,9 @@ 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#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#l00324">324</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"></a>
<a id="abcb8222561f1ee84a2f7a2157bed356c" name="abcb8222561f1ee84a2f7a2157bed356c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcb8222561f1ee84a2f7a2157bed356c">&#9670;&nbsp;</a></span>autorotate</h2>
<div class="memitem">
@ -207,11 +213,11 @@ 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#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#l00368">368</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a3a0034bb2959a06111810d2813975b24"></a>
<a id="a3a0034bb2959a06111810d2813975b24" name="a3a0034bb2959a06111810d2813975b24"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a0034bb2959a06111810d2813975b24">&#9670;&nbsp;</a></span>cfr_next_pts</h2>
<div class="memitem">
@ -223,11 +229,11 @@ 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#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="a6f49309998ba92804b9d16761817811e"></a>
<a id="a6f49309998ba92804b9d16761817811e" name="a6f49309998ba92804b9d16761817811e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6f49309998ba92804b9d16761817811e">&#9670;&nbsp;</a></span>data_size</h2>
<div class="memitem">
@ -239,27 +245,27 @@ 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#l00412">412</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a6147a2f3e7cfec58b3f790dfc318e4bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6147a2f3e7cfec58b3f790dfc318e4bc">&#9670;&nbsp;</a></span>dec</h2>
<a id="aec71efef67656157f493555fddbbc1c9" name="aec71efef67656157f493555fddbbc1c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec71efef67656157f493555fddbbc1c9">&#9670;&nbsp;</a></span>dec</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">AVCodec* InputStream::dec</td>
<td class="memname">const AVCodec* InputStream::dec</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00333">333</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#l00334">334</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a550ceee60cb995b284b52962dcba6597"></a>
<a id="a550ceee60cb995b284b52962dcba6597" name="a550ceee60cb995b284b52962dcba6597"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a550ceee60cb995b284b52962dcba6597">&#9670;&nbsp;</a></span>dec_ctx</h2>
<div class="memitem">
@ -271,11 +277,11 @@ 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#l00332">332</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#l00333">333</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a1492e008c195bbd4e2c84bccbc5ee216"></a>
<a id="a1492e008c195bbd4e2c84bccbc5ee216" name="a1492e008c195bbd4e2c84bccbc5ee216"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1492e008c195bbd4e2c84bccbc5ee216">&#9670;&nbsp;</a></span>decoded_frame</h2>
<div class="memitem">
@ -287,11 +293,11 @@ 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#l00334">334</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#l00335">335</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ae73dddf18b49b6660263bc3a73a44290"></a>
<a id="ae73dddf18b49b6660263bc3a73a44290" name="ae73dddf18b49b6660263bc3a73a44290"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae73dddf18b49b6660263bc3a73a44290">&#9670;&nbsp;</a></span>decoder_opts</h2>
<div class="memitem">
@ -303,11 +309,11 @@ 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#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="ac9fc51324b931c1db5c5c1445fe70c3b"></a>
<a id="ac9fc51324b931c1db5c5c1445fe70c3b" name="ac9fc51324b931c1db5c5c1445fe70c3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac9fc51324b931c1db5c5c1445fe70c3b">&#9670;&nbsp;</a></span>decoding_needed</h2>
<div class="memitem">
@ -319,11 +325,11 @@ 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#l00328">328</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#l00329">329</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ac39249a26eeec2ed084fcc433ec9825e"></a>
<a id="ac39249a26eeec2ed084fcc433ec9825e" name="ac39249a26eeec2ed084fcc433ec9825e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac39249a26eeec2ed084fcc433ec9825e">&#9670;&nbsp;</a></span>discard</h2>
<div class="memitem">
@ -335,11 +341,11 @@ 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#l00326">326</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#l00327">327</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a68e82e58b21bef725bb85f96ede7cc63"></a>
<a id="a68e82e58b21bef725bb85f96ede7cc63" name="a68e82e58b21bef725bb85f96ede7cc63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a68e82e58b21bef725bb85f96ede7cc63">&#9670;&nbsp;</a></span>dr1</h2>
<div class="memitem">
@ -351,11 +357,11 @@ 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#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="a1e7893cdf661d9ad7c24fdccc60fa05e"></a>
<a id="a1e7893cdf661d9ad7c24fdccc60fa05e" name="a1e7893cdf661d9ad7c24fdccc60fa05e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1e7893cdf661d9ad7c24fdccc60fa05e">&#9670;&nbsp;</a></span>dts</h2>
<div class="memitem">
@ -369,11 +375,11 @@ 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#l00341">341</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>
</div>
<a id="a1690691cd9bdc598717be8aa911b01ad"></a>
<a id="a1690691cd9bdc598717be8aa911b01ad" name="a1690691cd9bdc598717be8aa911b01ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1690691cd9bdc598717be8aa911b01ad">&#9670;&nbsp;</a></span>dts_buffer</h2>
<div class="memitem">
@ -385,11 +391,11 @@ 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#l00419">419</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad47d834630eee2dca258aa449fb1df47"></a>
<a id="ad47d834630eee2dca258aa449fb1df47" name="ad47d834630eee2dca258aa449fb1df47"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad47d834630eee2dca258aa449fb1df47">&#9670;&nbsp;</a></span>file_index</h2>
<div class="memitem">
@ -401,11 +407,11 @@ 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#l00325">325</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa43597e5120768ad60b4dc1819942907"></a>
<a id="aa43597e5120768ad60b4dc1819942907" name="aa43597e5120768ad60b4dc1819942907"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa43597e5120768ad60b4dc1819942907">&#9670;&nbsp;</a></span>filter_frame</h2>
<div class="memitem">
@ -417,11 +423,11 @@ 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#l00335">335</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#l00336">336</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a7ff433fc7a48e7b58a4b91e8ff05cf25"></a>
<a id="a7ff433fc7a48e7b58a4b91e8ff05cf25" name="a7ff433fc7a48e7b58a4b91e8ff05cf25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7ff433fc7a48e7b58a4b91e8ff05cf25">&#9670;&nbsp;</a></span>filter_in_rescale_delta_last</h2>
<div class="memitem">
@ -433,11 +439,11 @@ 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#l00350">350</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad76700001c97c3ce465539f0c698e6bc"></a>
<a id="ad76700001c97c3ce465539f0c698e6bc" name="ad76700001c97c3ce465539f0c698e6bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad76700001c97c3ce465539f0c698e6bc">&#9670;&nbsp;</a></span>filters</h2>
<div class="memitem">
@ -449,11 +455,29 @@ 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>
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00390">390</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a1ed159d9bc9d71428699968505629b38"></a>
<a id="aa4918133b75f0447192deea8c21f822e" name="aa4918133b75f0447192deea8c21f822e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4918133b75f0447192deea8c21f822e">&#9670;&nbsp;</a></span>first_dts</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int64_t InputStream::first_dts</td>
</tr>
</table>
</div><div class="memdoc">
<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#l00343">343</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">&#9670;&nbsp;</a></span>fix_sub_duration</h2>
<div class="memitem">
@ -465,11 +489,11 @@ 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#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#l00370">370</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="afbaeaac6e0b1fc3095bb90f17d58621d"></a>
<a id="afbaeaac6e0b1fc3095bb90f17d58621d" name="afbaeaac6e0b1fc3095bb90f17d58621d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afbaeaac6e0b1fc3095bb90f17d58621d">&#9670;&nbsp;</a></span>framerate</h2>
<div class="memitem">
@ -481,11 +505,11 @@ 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#l00361">361</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="ac61e0f854402b58a64e676bdcfa75dfd"></a>
<a id="ac61e0f854402b58a64e676bdcfa75dfd" name="ac61e0f854402b58a64e676bdcfa75dfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac61e0f854402b58a64e676bdcfa75dfd">&#9670;&nbsp;</a></span>frames_decoded</h2>
<div class="memitem">
@ -497,11 +521,11 @@ 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#l00413">413</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#l00416">416</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a408a0502c42d26b196c524812d70a7e8"></a>
<a id="a408a0502c42d26b196c524812d70a7e8" name="a408a0502c42d26b196c524812d70a7e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a408a0502c42d26b196c524812d70a7e8">&#9670;&nbsp;</a></span>got_output</h2>
<div class="memitem">
@ -513,11 +537,11 @@ 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#l00372">372</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a99e6bf56ec091f8af11744e4b0499327"></a>
<a id="a99e6bf56ec091f8af11744e4b0499327" name="a99e6bf56ec091f8af11744e4b0499327"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a99e6bf56ec091f8af11744e4b0499327">&#9670;&nbsp;</a></span>guess_layout_max</h2>
<div class="memitem">
@ -529,11 +553,11 @@ 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#l00366">366</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a604ca5401ed734e8b1acb1f416f3210f"></a>
<a id="a604ca5401ed734e8b1acb1f416f3210f" name="a604ca5401ed734e8b1acb1f416f3210f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a604ca5401ed734e8b1acb1f416f3210f">&#9670;&nbsp;</a></span>hw_frames_ctx</h2>
<div class="memitem">
@ -545,11 +569,11 @@ 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#l00405">405</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#l00408">408</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa455c67610467c0d79f42b9c2e620d9f"></a>
<a id="aa455c67610467c0d79f42b9c2e620d9f" name="aa455c67610467c0d79f42b9c2e620d9f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa455c67610467c0d79f42b9c2e620d9f">&#9670;&nbsp;</a></span>hwaccel_ctx</h2>
<div class="memitem">
@ -561,11 +585,11 @@ 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#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="ae48685e82826c6b5922014d47e2cb6bb"></a>
<a id="ae48685e82826c6b5922014d47e2cb6bb" name="ae48685e82826c6b5922014d47e2cb6bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae48685e82826c6b5922014d47e2cb6bb">&#9670;&nbsp;</a></span>hwaccel_device</h2>
<div class="memitem">
@ -577,11 +601,11 @@ 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#l00398">398</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="af577e45cb148e174ef437f3cbaa8b628"></a>
<a id="af577e45cb148e174ef437f3cbaa8b628" name="af577e45cb148e174ef437f3cbaa8b628"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af577e45cb148e174ef437f3cbaa8b628">&#9670;&nbsp;</a></span>hwaccel_device_type</h2>
<div class="memitem">
@ -593,11 +617,11 @@ 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#l00390">390</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#l00397">397</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a7243fc5f2d9fcbb9249c8a036dc4eb1b"></a>
<a id="a7243fc5f2d9fcbb9249c8a036dc4eb1b" name="a7243fc5f2d9fcbb9249c8a036dc4eb1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7243fc5f2d9fcbb9249c8a036dc4eb1b">&#9670;&nbsp;</a></span>hwaccel_get_buffer</h2>
<div class="memitem">
@ -609,11 +633,11 @@ 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#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#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="a6c3473c28e30500adb3fa7886e6d7c3e"></a>
<a id="a6c3473c28e30500adb3fa7886e6d7c3e" name="a6c3473c28e30500adb3fa7886e6d7c3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6c3473c28e30500adb3fa7886e6d7c3e">&#9670;&nbsp;</a></span>hwaccel_id</h2>
<div class="memitem">
@ -625,11 +649,11 @@ 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#l00390">390</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#l00396">396</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a252184ceda81f2d65f63f0470b877bd4"></a>
<a id="a252184ceda81f2d65f63f0470b877bd4" name="a252184ceda81f2d65f63f0470b877bd4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a252184ceda81f2d65f63f0470b877bd4">&#9670;&nbsp;</a></span>hwaccel_output_format</h2>
<div class="memitem">
@ -641,11 +665,11 @@ 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#l00399">399</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a05769ba0518105626a6d64386795b48f"></a>
<a id="a05769ba0518105626a6d64386795b48f" name="a05769ba0518105626a6d64386795b48f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05769ba0518105626a6d64386795b48f">&#9670;&nbsp;</a></span>hwaccel_pix_fmt</h2>
<div class="memitem">
@ -657,11 +681,11 @@ 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#l00406">406</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad983487b3e7c29f53bb3336190f14051"></a>
<a id="ad983487b3e7c29f53bb3336190f14051" name="ad983487b3e7c29f53bb3336190f14051"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad983487b3e7c29f53bb3336190f14051">&#9670;&nbsp;</a></span>hwaccel_retrieve_data</h2>
<div class="memitem">
@ -673,11 +697,11 @@ 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#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="a91c6f154cc61c348f644987044423e57"></a>
<a id="a91c6f154cc61c348f644987044423e57" name="a91c6f154cc61c348f644987044423e57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a91c6f154cc61c348f644987044423e57">&#9670;&nbsp;</a></span>hwaccel_retrieved_pix_fmt</h2>
<div class="memitem">
@ -689,11 +713,11 @@ 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#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="a45c7ee6dae692d19ff3d275032aeea94"></a>
<a id="a45c7ee6dae692d19ff3d275032aeea94" name="a45c7ee6dae692d19ff3d275032aeea94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a45c7ee6dae692d19ff3d275032aeea94">&#9670;&nbsp;</a></span>hwaccel_uninit</h2>
<div class="memitem">
@ -705,11 +729,11 @@ 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#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="a911d752902aa8d4666ccefd8c912c91e"></a>
<a id="a911d752902aa8d4666ccefd8c912c91e" name="a911d752902aa8d4666ccefd8c912c91e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a911d752902aa8d4666ccefd8c912c91e">&#9670;&nbsp;</a></span>max_pts</h2>
<div class="memitem">
@ -721,11 +745,11 @@ 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#l00350">350</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#l00353">353</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aeb79819841b6d172faf8c108db4ffbd0"></a>
<a id="aeb79819841b6d172faf8c108db4ffbd0" name="aeb79819841b6d172faf8c108db4ffbd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeb79819841b6d172faf8c108db4ffbd0">&#9670;&nbsp;</a></span>min_pts</h2>
<div class="memitem">
@ -737,11 +761,11 @@ 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#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="a4b6db5d0fb15c8262b1ba543495fe628"></a>
<a id="a4b6db5d0fb15c8262b1ba543495fe628" name="a4b6db5d0fb15c8262b1ba543495fe628"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b6db5d0fb15c8262b1ba543495fe628">&#9670;&nbsp;</a></span>nb_dts_buffer</h2>
<div class="memitem">
@ -753,11 +777,11 @@ 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#l00420">420</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a7c2c9b58a4db2101414f2d106f4244b0"></a>
<a id="a7c2c9b58a4db2101414f2d106f4244b0" name="a7c2c9b58a4db2101414f2d106f4244b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7c2c9b58a4db2101414f2d106f4244b0">&#9670;&nbsp;</a></span>nb_filters</h2>
<div class="memitem">
@ -769,11 +793,11 @@ 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#l00388">388</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#l00391">391</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ade4b46981af499da120e4e2b30517bef"></a>
<a id="ade4b46981af499da120e4e2b30517bef" name="ade4b46981af499da120e4e2b30517bef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade4b46981af499da120e4e2b30517bef">&#9670;&nbsp;</a></span>nb_packets</h2>
<div class="memitem">
@ -785,11 +809,11 @@ 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#l00411">411</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="af76c7165931c721b63008034c94d9275"></a>
<a id="af76c7165931c721b63008034c94d9275" name="af76c7165931c721b63008034c94d9275"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af76c7165931c721b63008034c94d9275">&#9670;&nbsp;</a></span>nb_samples</h2>
<div class="memitem">
@ -801,11 +825,11 @@ 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#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="a8026af86b300d31432bc1bf74910aea5"></a>
<a id="a8026af86b300d31432bc1bf74910aea5" name="a8026af86b300d31432bc1bf74910aea5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8026af86b300d31432bc1bf74910aea5">&#9670;&nbsp;</a></span>next_dts</h2>
<div class="memitem">
@ -817,11 +841,11 @@ 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#l00340">340</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#l00342">342</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ab14ac8d1cdb5c1dd6472dd4c13867368"></a>
<a id="ab14ac8d1cdb5c1dd6472dd4c13867368" name="ab14ac8d1cdb5c1dd6472dd4c13867368"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab14ac8d1cdb5c1dd6472dd4c13867368">&#9670;&nbsp;</a></span>next_pts</h2>
<div class="memitem">
@ -835,25 +859,41 @@ 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#l00343">343</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="a9d7d1e08713e8fb98d18d1ef6367e8e6" name="a9d7d1e08713e8fb98d18d1ef6367e8e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9d7d1e08713e8fb98d18d1ef6367e8e6">&#9670;&nbsp;</a></span>pkt</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">AVPacket* InputStream::pkt</td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00337">337</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a620e4a8547e0bedc99f562539fc30421"></a>
<a id="a620e4a8547e0bedc99f562539fc30421" name="a620e4a8547e0bedc99f562539fc30421"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a620e4a8547e0bedc99f562539fc30421">&#9670;&nbsp;</a></span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct { ... } InputStream::prev_sub</td>
<td class="memname">struct { ... } InputStream::prev_sub</td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a5e77505bdc5afbc6ab5cf613894925b4"></a>
<a id="a5e77505bdc5afbc6ab5cf613894925b4" name="a5e77505bdc5afbc6ab5cf613894925b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e77505bdc5afbc6ab5cf613894925b4">&#9670;&nbsp;</a></span>pts</h2>
<div class="memitem">
@ -867,11 +907,11 @@ 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#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#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="a809d93e64e76fe2f142102e58dc82a1e"></a>
<a id="a809d93e64e76fe2f142102e58dc82a1e" name="a809d93e64e76fe2f142102e58dc82a1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a809d93e64e76fe2f142102e58dc82a1e">&#9670;&nbsp;</a></span>reinit_filters</h2>
<div class="memitem">
@ -883,11 +923,11 @@ 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#l00390">390</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#l00393">393</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a6ae65382f22317b94b7ccfe00024d31a"></a>
<a id="a6ae65382f22317b94b7ccfe00024d31a" name="a6ae65382f22317b94b7ccfe00024d31a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ae65382f22317b94b7ccfe00024d31a">&#9670;&nbsp;</a></span>ret</h2>
<div class="memitem">
@ -899,11 +939,11 @@ 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#l00370">370</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#l00373">373</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa8aa609acb39eb21da43f02cdfb036eb"></a>
<a id="aa8aa609acb39eb21da43f02cdfb036eb" name="aa8aa609acb39eb21da43f02cdfb036eb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8aa609acb39eb21da43f02cdfb036eb">&#9670;&nbsp;</a></span>samples_decoded</h2>
<div class="memitem">
@ -915,11 +955,11 @@ 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#l00414">414</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="a09d78f4795c4ff17dd54204450f2d394"></a>
<a id="a09d78f4795c4ff17dd54204450f2d394" name="a09d78f4795c4ff17dd54204450f2d394"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09d78f4795c4ff17dd54204450f2d394">&#9670;&nbsp;</a></span>saw_first_ts</h2>
<div class="memitem">
@ -931,11 +971,11 @@ 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#l00362">362</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="acf438e2a33238676cb3f68b39ae18049"></a>
<a id="acf438e2a33238676cb3f68b39ae18049" name="acf438e2a33238676cb3f68b39ae18049"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf438e2a33238676cb3f68b39ae18049">&#9670;&nbsp;</a></span>st</h2>
<div class="memitem">
@ -947,11 +987,11 @@ 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#l00326">326</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a6718f5f7b2206b2848af5e35ae3a9186"></a>
<a id="a6718f5f7b2206b2848af5e35ae3a9186" name="a6718f5f7b2206b2848af5e35ae3a9186"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6718f5f7b2206b2848af5e35ae3a9186">&#9670;&nbsp;</a></span>start</h2>
<div class="memitem">
@ -963,11 +1003,11 @@ 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#l00337">337</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#l00339">339</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="acc9fee6e45ff302a2c1a06a053cbaa22"></a>
<a id="acc9fee6e45ff302a2c1a06a053cbaa22" name="acc9fee6e45ff302a2c1a06a053cbaa22"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc9fee6e45ff302a2c1a06a053cbaa22">&#9670;&nbsp;</a></span>sub2video</h2>
<div class="memitem">
@ -981,7 +1021,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="ae37fb0410a65c6b2e5a38614f4481f07"></a>
<a id="ae37fb0410a65c6b2e5a38614f4481f07" name="ae37fb0410a65c6b2e5a38614f4481f07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae37fb0410a65c6b2e5a38614f4481f07">&#9670;&nbsp;</a></span>subtitle</h2>
<div class="memitem">
@ -993,11 +1033,11 @@ 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#l00374">374</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="abc71c343e0ade7e102adb45badfc6243"></a>
<a id="abc71c343e0ade7e102adb45badfc6243" name="abc71c343e0ade7e102adb45badfc6243"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abc71c343e0ade7e102adb45badfc6243">&#9670;&nbsp;</a></span>top_field_first</h2>
<div class="memitem">
@ -1009,11 +1049,11 @@ 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#l00362">362</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="a0dae26daa277d99147113de4ea449bc1"></a>
<a id="a0dae26daa277d99147113de4ea449bc1" name="a0dae26daa277d99147113de4ea449bc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0dae26daa277d99147113de4ea449bc1">&#9670;&nbsp;</a></span>ts_scale</h2>
<div class="memitem">
@ -1025,11 +1065,11 @@ 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#l00358">358</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#l00361">361</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a86b730f87f0f8ebd088f94af51d91b96"></a>
<a id="a86b730f87f0f8ebd088f94af51d91b96" name="a86b730f87f0f8ebd088f94af51d91b96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86b730f87f0f8ebd088f94af51d91b96">&#9670;&nbsp;</a></span>user_set_discard</h2>
<div class="memitem">
@ -1041,11 +1081,11 @@ 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#l00327">327</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#l00328">328</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a8ee44633b600f2b31541b213f0a4b322"></a>
<a id="a8ee44633b600f2b31541b213f0a4b322" name="a8ee44633b600f2b31541b213f0a4b322"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ee44633b600f2b31541b213f0a4b322">&#9670;&nbsp;</a></span>wrap_correction_done</h2>
<div class="memitem">
@ -1057,7 +1097,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#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#l00348">348</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
@ -1068,7 +1108,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,20 +65,19 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">ffmpegkit_exception.h File Reference</div> </div>
<div class="headertitle"><div class="title">ffmpegkit_exception.h File Reference</div></div>
</div><!--header-->
<div class="contents">
<p><a href="../../d3/dad/ffmpegkit__exception_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 name="var-members"></a>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a602bfc62417fcbda9f5e3e6604917b3c"><td class="memItemLeft" align="right" valign="top">__thread jmp_buf&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c">ex_buf__</a></td></tr>
<tr class="separator:a602bfc62417fcbda9f5e3e6604917b3c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Variable Documentation</h2>
<a id="a602bfc62417fcbda9f5e3e6604917b3c"></a>
<a id="a602bfc62417fcbda9f5e3e6604917b3c" name="a602bfc62417fcbda9f5e3e6604917b3c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a602bfc62417fcbda9f5e3e6604917b3c">&#9670;&nbsp;</a></span>ex_buf__</h2>
<div class="memitem">
@ -97,7 +96,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>
@ -106,7 +105,7 @@ Variables</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,43 +63,42 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">ffmpegkit_exception.h</div> </div>
<div class="headertitle"><div class="title">ffmpegkit_exception.h</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d3/dad/ffmpegkit__exception_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Copyright (c) 2018-2021 Taner Sener</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#ifndef FFMPEG_KIT_EXCEPTION_H</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#define FFMPEG_KIT_EXCEPTION_H</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;setjmp.h&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">extern</span> __thread jmp_buf <a class="code" href="../../d3/dad/ffmpegkit__exception_8h.html#a602bfc62417fcbda9f5e3e6604917b3c">ex_buf__</a>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; </div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// FFMPEG_KIT_EXCEPTION_H</span></div>
<a href="../../d3/dad/ffmpegkit__exception_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"> * Copyright (c) 2018-2021 Taner Sener</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> * This file is part of FFmpegKit.</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * FFmpegKit is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> *</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * FFmpegKit is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * along with FFmpegKit. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> */</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifndef FFMPEG_KIT_EXCEPTION_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define FFMPEG_KIT_EXCEPTION_H</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="preprocessor">#include &lt;setjmp.h&gt;</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<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><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:50 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">FlatContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">FlatContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:acad059863d0d81b605f384b447e49734"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/db7/struct_flat_context.html#acad059863d0d81b605f384b447e49734">class</a></td></tr>
<tr class="separator:acad059863d0d81b605f384b447e49734"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -83,9 +82,9 @@ 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#l01238">1238</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#l01246">1246</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"></a>
<a id="acad059863d0d81b605f384b447e49734" name="acad059863d0d81b605f384b447e49734"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acad059863d0d81b605f384b447e49734">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -97,11 +96,11 @@ 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#l01239">1239</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#l01247">1247</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="aba2cac86faa289090af7543ff4ffcdcc"></a>
<a id="aba2cac86faa289090af7543ff4ffcdcc" name="aba2cac86faa289090af7543ff4ffcdcc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba2cac86faa289090af7543ff4ffcdcc">&#9670;&nbsp;</a></span>hierarchical</h2>
<div class="memitem">
@ -113,11 +112,11 @@ 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#l01242">1242</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#l01250">1250</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a529baa5a1cba47d2eb62f49b0a4fd03b"></a>
<a id="a529baa5a1cba47d2eb62f49b0a4fd03b" name="a529baa5a1cba47d2eb62f49b0a4fd03b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a529baa5a1cba47d2eb62f49b0a4fd03b">&#9670;&nbsp;</a></span>sep</h2>
<div class="memitem">
@ -129,11 +128,11 @@ 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#l01241">1241</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#l01249">1249</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a509af19cca73c04f13342034fee165c7"></a>
<a id="a509af19cca73c04f13342034fee165c7" name="a509af19cca73c04f13342034fee165c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a509af19cca73c04f13342034fee165c7">&#9670;&nbsp;</a></span>sep_str</h2>
<div class="memitem">
@ -145,7 +144,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#l01240">1240</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#l01248">1248</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -155,7 +154,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">DefaultContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">DefaultContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:afa8e41a1d7f3eb5e48102d58da4c7db3"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/da0/struct_default_context.html#afa8e41a1d7f3eb5e48102d58da4c7db3">class</a></td></tr>
<tr class="separator:afa8e41a1d7f3eb5e48102d58da4c7db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -83,9 +82,9 @@ 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#l00930">930</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#l00938">938</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"></a>
<a id="afa8e41a1d7f3eb5e48102d58da4c7db3" name="afa8e41a1d7f3eb5e48102d58da4c7db3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa8e41a1d7f3eb5e48102d58da4c7db3">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -97,11 +96,11 @@ 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#l00931">931</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#l00939">939</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a98cfc785481b62077206b991234b0f9e"></a>
<a id="a98cfc785481b62077206b991234b0f9e" name="a98cfc785481b62077206b991234b0f9e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98cfc785481b62077206b991234b0f9e">&#9670;&nbsp;</a></span>nested_section</h2>
<div class="memitem">
@ -113,11 +112,11 @@ 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#l00934">934</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#l00942">942</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="aa4fb1e189f6e2788e6ccc23e65dc3d98"></a>
<a id="aa4fb1e189f6e2788e6ccc23e65dc3d98" name="aa4fb1e189f6e2788e6ccc23e65dc3d98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa4fb1e189f6e2788e6ccc23e65dc3d98">&#9670;&nbsp;</a></span>nokey</h2>
<div class="memitem">
@ -129,11 +128,11 @@ 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#l00932">932</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#l00940">940</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a7cae04407b25e67940bc2ff2c70496dd"></a>
<a id="a7cae04407b25e67940bc2ff2c70496dd" name="a7cae04407b25e67940bc2ff2c70496dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7cae04407b25e67940bc2ff2c70496dd">&#9670;&nbsp;</a></span>noprint_wrappers</h2>
<div class="memitem">
@ -145,7 +144,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#l00933">933</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#l00941">941</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -155,7 +154,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -69,12 +69,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">InputStream::sub2video Struct Reference</div> </div>
<div class="headertitle"><div class="title">InputStream::sub2video Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a992c9fe5de3acf5dce388cffda4fdce8"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/dfd/struct_input_stream_1_1sub2video.html#a992c9fe5de3acf5dce388cffda4fdce8">last_pts</a></td></tr>
<tr class="separator:a992c9fe5de3acf5dce388cffda4fdce8"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -95,9 +96,9 @@ 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#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#l00377">377</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"></a>
<a id="aaf500e3a36c6e6a6920a8e18c6478a8e" name="aaf500e3a36c6e6a6920a8e18c6478a8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf500e3a36c6e6a6920a8e18c6478a8e">&#9670;&nbsp;</a></span>end_pts</h2>
<div class="memitem">
@ -109,11 +110,11 @@ 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#l00376">376</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#l00379">379</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a0e7ca3e0eebc5db360ae15f2dac3d622"></a>
<a id="a0e7ca3e0eebc5db360ae15f2dac3d622" name="a0e7ca3e0eebc5db360ae15f2dac3d622"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e7ca3e0eebc5db360ae15f2dac3d622">&#9670;&nbsp;</a></span>frame</h2>
<div class="memitem">
@ -125,11 +126,11 @@ 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#l00381">381</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aeecdbc3f86c3bcbf9c42ac7a867e91db"></a>
<a id="aeecdbc3f86c3bcbf9c42ac7a867e91db" name="aeecdbc3f86c3bcbf9c42ac7a867e91db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeecdbc3f86c3bcbf9c42ac7a867e91db">&#9670;&nbsp;</a></span>h</h2>
<div class="memitem">
@ -141,11 +142,11 @@ 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#l00379">379</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#l00382">382</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a15e606590596931e88ebd0b4626bfe97"></a>
<a id="a15e606590596931e88ebd0b4626bfe97" name="a15e606590596931e88ebd0b4626bfe97"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a15e606590596931e88ebd0b4626bfe97">&#9670;&nbsp;</a></span>initialize</h2>
<div class="memitem">
@ -159,11 +160,11 @@ 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#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#l00383">383</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a992c9fe5de3acf5dce388cffda4fdce8"></a>
<a id="a992c9fe5de3acf5dce388cffda4fdce8" name="a992c9fe5de3acf5dce388cffda4fdce8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a992c9fe5de3acf5dce388cffda4fdce8">&#9670;&nbsp;</a></span>last_pts</h2>
<div class="memitem">
@ -175,11 +176,11 @@ 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#l00375">375</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#l00378">378</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad2b2360342940822238e5ba6c1f48718"></a>
<a id="ad2b2360342940822238e5ba6c1f48718" name="ad2b2360342940822238e5ba6c1f48718"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2b2360342940822238e5ba6c1f48718">&#9670;&nbsp;</a></span>sub_queue</h2>
<div class="memitem">
@ -193,11 +194,11 @@ 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#l00377">377</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#l00380">380</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a0bd83c4ad9f5301d63e49a9f94b8cf7d"></a>
<a id="a0bd83c4ad9f5301d63e49a9f94b8cf7d" name="a0bd83c4ad9f5301d63e49a9f94b8cf7d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0bd83c4ad9f5301d63e49a9f94b8cf7d">&#9670;&nbsp;</a></span>w</h2>
<div class="memitem">
@ -209,7 +210,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#l00379">379</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#l00382">382</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
@ -219,7 +220,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<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,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">BenchmarkTimeStamps Struct Reference</div> </div>
<div class="headertitle"><div class="title">BenchmarkTimeStamps Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a8639f0bbe9044fc765f4ec5b3968a488"><td class="memItemLeft" align="right" valign="top">int64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d8e/struct_benchmark_time_stamps.html#a8639f0bbe9044fc765f4ec5b3968a488">real_usec</a></td></tr>
<tr class="separator:a8639f0bbe9044fc765f4ec5b3968a488"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -83,7 +82,7 @@ Data Fields</h2></td></tr>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="../../d7/d48/fftools__ffmpeg_8c_source.html#l00154">154</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"></a>
<a id="a8639f0bbe9044fc765f4ec5b3968a488" name="a8639f0bbe9044fc765f4ec5b3968a488"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8639f0bbe9044fc765f4ec5b3968a488">&#9670;&nbsp;</a></span>real_usec</h2>
<div class="memitem">
@ -99,7 +98,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="a06a44cae9b837e8481ba86a648cbcc95"></a>
<a id="a06a44cae9b837e8481ba86a648cbcc95" name="a06a44cae9b837e8481ba86a648cbcc95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06a44cae9b837e8481ba86a648cbcc95">&#9670;&nbsp;</a></span>sys_usec</h2>
<div class="memitem">
@ -115,7 +114,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="ad0f18c644b145f2ef6c7bd37c22d7cd6"></a>
<a id="ad0f18c644b145f2ef6c7bd37c22d7cd6" name="ad0f18c644b145f2ef6c7bd37c22d7cd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0f18c644b145f2ef6c7bd37c22d7cd6">&#9670;&nbsp;</a></span>user_usec</h2>
<div class="memitem">
@ -137,7 +136,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: AudioChannelMap Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">AudioChannelMap Struct Reference</div> </div>
<div class="headertitle"><div class="title">AudioChannelMap Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a81b4cfad9b7f201c8a0be6a030688839"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d2c/struct_audio_channel_map.html#a81b4cfad9b7f201c8a0be6a030688839">file_idx</a></td></tr>
<tr class="separator:a81b4cfad9b7f201c8a0be6a030688839"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -87,7 +88,7 @@ Data Fields</h2></td></tr>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html#l00112">112</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="a8f4845075e76274d0c577c258b24d0bf"></a>
<a id="a8f4845075e76274d0c577c258b24d0bf" name="a8f4845075e76274d0c577c258b24d0bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f4845075e76274d0c577c258b24d0bf">&#9670;&nbsp;</a></span>channel_idx</h2>
<div class="memitem">
@ -103,7 +104,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="a81b4cfad9b7f201c8a0be6a030688839"></a>
<a id="a81b4cfad9b7f201c8a0be6a030688839" name="a81b4cfad9b7f201c8a0be6a030688839"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81b4cfad9b7f201c8a0be6a030688839">&#9670;&nbsp;</a></span>file_idx</h2>
<div class="memitem">
@ -119,7 +120,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="a8174d989c9c3c6bacd2ff229900e3edf"></a>
<a id="a8174d989c9c3c6bacd2ff229900e3edf" name="a8174d989c9c3c6bacd2ff229900e3edf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8174d989c9c3c6bacd2ff229900e3edf">&#9670;&nbsp;</a></span>ofile_idx</h2>
<div class="memitem">
@ -135,7 +136,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="a3e51062d85dde52c40982e5af3b4bc03"></a>
<a id="a3e51062d85dde52c40982e5af3b4bc03" name="a3e51062d85dde52c40982e5af3b4bc03"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e51062d85dde52c40982e5af3b4bc03">&#9670;&nbsp;</a></span>ostream_idx</h2>
<div class="memitem">
@ -151,7 +152,7 @@ Data Fields</h2></td></tr>
</div>
</div>
<a id="a32f90014a8e83a47c8ef3893bc1c100e"></a>
<a id="a32f90014a8e83a47c8ef3893bc1c100e" name="a32f90014a8e83a47c8ef3893bc1c100e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32f90014a8e83a47c8ef3893bc1c100e">&#9670;&nbsp;</a></span>stream_idx</h2>
<div class="memitem">
@ -173,7 +174,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: JSONContext Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">JSONContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">JSONContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a9eab88f84786f4e69f9aaf2e34048b70"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d53/struct_j_s_o_n_context.html#a9eab88f84786f4e69f9aaf2e34048b70">class</a></td></tr>
<tr class="separator:a9eab88f84786f4e69f9aaf2e34048b70"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -85,9 +84,9 @@ 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#l01466">1466</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#l01474">1474</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="a9eab88f84786f4e69f9aaf2e34048b70"></a>
<a id="a9eab88f84786f4e69f9aaf2e34048b70" name="a9eab88f84786f4e69f9aaf2e34048b70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9eab88f84786f4e69f9aaf2e34048b70">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -99,11 +98,11 @@ 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#l01467">1467</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#l01475">1475</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a1986ad1d679d913fb573ddde03fb83b2"></a>
<a id="a1986ad1d679d913fb573ddde03fb83b2" name="a1986ad1d679d913fb573ddde03fb83b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1986ad1d679d913fb573ddde03fb83b2">&#9670;&nbsp;</a></span>compact</h2>
<div class="memitem">
@ -115,11 +114,11 @@ 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#l01469">1469</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#l01477">1477</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ab9ee5e75f018a7f47e611c7c78d84c7a"></a>
<a id="ab9ee5e75f018a7f47e611c7c78d84c7a" name="ab9ee5e75f018a7f47e611c7c78d84c7a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9ee5e75f018a7f47e611c7c78d84c7a">&#9670;&nbsp;</a></span>indent_level</h2>
<div class="memitem">
@ -131,11 +130,11 @@ 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#l01468">1468</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#l01476">1476</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a27449760861f156d74c410634dc402f7"></a>
<a id="a27449760861f156d74c410634dc402f7" name="a27449760861f156d74c410634dc402f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27449760861f156d74c410634dc402f7">&#9670;&nbsp;</a></span>item_sep</h2>
<div class="memitem">
@ -147,11 +146,11 @@ 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#l01470">1470</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#l01478">1478</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="aec96064d069baeaa2ca81b9abbed0132"></a>
<a id="aec96064d069baeaa2ca81b9abbed0132" name="aec96064d069baeaa2ca81b9abbed0132"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec96064d069baeaa2ca81b9abbed0132">&#9670;&nbsp;</a></span>item_start_end</h2>
<div class="memitem">
@ -163,7 +162,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#l01470">1470</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#l01478">1478</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -173,7 +172,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: OptionGroup Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">OptionGroup Struct Reference</div> </div>
<div class="headertitle"><div class="title">OptionGroup Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a6a5a1da6410548df3f0290dafd1075dd"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd">group_def</a></td></tr>
<tr class="separator:a6a5a1da6410548df3f0290dafd1075dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -93,9 +94,9 @@ 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/d4e/fftools__cmdutils_8h_source.html#l00297">297</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#l00300">300</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="ade02874f0cc6716575a7d02e3c38ac95"></a>
<a id="ade02874f0cc6716575a7d02e3c38ac95" name="ade02874f0cc6716575a7d02e3c38ac95"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade02874f0cc6716575a7d02e3c38ac95">&#9670;&nbsp;</a></span>arg</h2>
<div class="memitem">
@ -107,11 +108,11 @@ 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#l00299">299</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#l00302">302</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="aad0856a7bcf51e6d5e8b9d007d083910"></a>
<a id="aad0856a7bcf51e6d5e8b9d007d083910" name="aad0856a7bcf51e6d5e8b9d007d083910"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad0856a7bcf51e6d5e8b9d007d083910">&#9670;&nbsp;</a></span>codec_opts</h2>
<div class="memitem">
@ -123,11 +124,11 @@ 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#l00304">304</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#l00307">307</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="aeac5e8e830df2e99aadfe65a471ce8fb"></a>
<a id="aeac5e8e830df2e99aadfe65a471ce8fb" name="aeac5e8e830df2e99aadfe65a471ce8fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeac5e8e830df2e99aadfe65a471ce8fb">&#9670;&nbsp;</a></span>format_opts</h2>
<div class="memitem">
@ -139,11 +140,11 @@ 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#l00305">305</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#l00308">308</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="a6a5a1da6410548df3f0290dafd1075dd"></a>
<a id="a6a5a1da6410548df3f0290dafd1075dd" name="a6a5a1da6410548df3f0290dafd1075dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a5a1da6410548df3f0290dafd1075dd">&#9670;&nbsp;</a></span>group_def</h2>
<div class="memitem">
@ -155,11 +156,11 @@ 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#l00298">298</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#l00301">301</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="a3f9b2ffe3ca6be24d4c9416a6ff7fe38"></a>
<a id="a3f9b2ffe3ca6be24d4c9416a6ff7fe38" name="a3f9b2ffe3ca6be24d4c9416a6ff7fe38"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f9b2ffe3ca6be24d4c9416a6ff7fe38">&#9670;&nbsp;</a></span>nb_opts</h2>
<div class="memitem">
@ -171,11 +172,11 @@ 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#l00302">302</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#l00305">305</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="ab9bf148a556ccce86462e948dd1dc856"></a>
<a id="ab9bf148a556ccce86462e948dd1dc856" name="ab9bf148a556ccce86462e948dd1dc856"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab9bf148a556ccce86462e948dd1dc856">&#9670;&nbsp;</a></span>opts</h2>
<div class="memitem">
@ -187,11 +188,11 @@ 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#l00301">301</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#l00304">304</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="aee5e1f251f3d88c41a505d0655b410d9"></a>
<a id="aee5e1f251f3d88c41a505d0655b410d9" name="aee5e1f251f3d88c41a505d0655b410d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee5e1f251f3d88c41a505d0655b410d9">&#9670;&nbsp;</a></span>resample_opts</h2>
<div class="memitem">
@ -203,11 +204,11 @@ 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#l00306">306</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#l00309">309</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="aad5bf1f2e0e3da5827b689f94e05937d"></a>
<a id="aad5bf1f2e0e3da5827b689f94e05937d" name="aad5bf1f2e0e3da5827b689f94e05937d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad5bf1f2e0e3da5827b689f94e05937d">&#9670;&nbsp;</a></span>swr_opts</h2>
<div class="memitem">
@ -219,11 +220,11 @@ 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#l00308">308</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#l00311">311</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="ad49cc9faed6022da9329fcd220c8467b"></a>
<a id="ad49cc9faed6022da9329fcd220c8467b" name="ad49cc9faed6022da9329fcd220c8467b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad49cc9faed6022da9329fcd220c8467b">&#9670;&nbsp;</a></span>sws_dict</h2>
<div class="memitem">
@ -235,7 +236,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#l00307">307</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#l00310">310</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
@ -245,7 +246,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: Writer Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">Writer Struct Reference</div> </div>
<div class="headertitle"><div class="title">Writer Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a66be370a26c5bf349d83fc61dd584ca0"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d6/dff/struct_writer.html#a66be370a26c5bf349d83fc61dd584ca0">priv_class</a></td></tr>
<tr class="memdesc:a66be370a26c5bf349d83fc61dd584ca0"><td class="mdescLeft">&#160;</td><td class="mdescRight">private class of the writer, if any <a href="../../d6/dff/struct_writer.html#a66be370a26c5bf349d83fc61dd584ca0">More...</a><br /></td></tr>
@ -100,9 +99,9 @@ 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#l00441">441</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#l00447">447</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="a2d25d61811924a454b85c0bdde04a4e5"></a>
<a id="a2d25d61811924a454b85c0bdde04a4e5" name="a2d25d61811924a454b85c0bdde04a4e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d25d61811924a454b85c0bdde04a4e5">&#9670;&nbsp;</a></span>flags</h2>
<div class="memitem">
@ -116,11 +115,11 @@ Data Fields</h2></td></tr>
<p>a combination or WRITER_FLAG_* </p>
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00454">454</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#l00460">460</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a8f2ad22b58bb3aa55e709f4e1a47846a"></a>
<a id="a8f2ad22b58bb3aa55e709f4e1a47846a" name="a8f2ad22b58bb3aa55e709f4e1a47846a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f2ad22b58bb3aa55e709f4e1a47846a">&#9670;&nbsp;</a></span>init</h2>
<div class="memitem">
@ -132,11 +131,11 @@ 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#l00446">446</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#l00452">452</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a8cbb0eba7905fdb0935fa057c9ab1d10"></a>
<a id="a8cbb0eba7905fdb0935fa057c9ab1d10" name="a8cbb0eba7905fdb0935fa057c9ab1d10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cbb0eba7905fdb0935fa057c9ab1d10">&#9670;&nbsp;</a></span>name</h2>
<div class="memitem">
@ -148,11 +147,11 @@ 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#l00444">444</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#l00450">450</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a6b757628daceb0e7d1271086ed4329a7"></a>
<a id="a6b757628daceb0e7d1271086ed4329a7" name="a6b757628daceb0e7d1271086ed4329a7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b757628daceb0e7d1271086ed4329a7">&#9670;&nbsp;</a></span>print_integer</h2>
<div class="memitem">
@ -164,11 +163,11 @@ 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#l00451">451</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#l00457">457</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a7e1995fb5f379a4b7c63d0b0464f541b"></a>
<a id="a7e1995fb5f379a4b7c63d0b0464f541b" name="a7e1995fb5f379a4b7c63d0b0464f541b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e1995fb5f379a4b7c63d0b0464f541b">&#9670;&nbsp;</a></span>print_rational</h2>
<div class="memitem">
@ -180,11 +179,11 @@ 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#l00452">452</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#l00458">458</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ab59c327a5f35dc6befaa9275e440bf98"></a>
<a id="ab59c327a5f35dc6befaa9275e440bf98" name="ab59c327a5f35dc6befaa9275e440bf98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab59c327a5f35dc6befaa9275e440bf98">&#9670;&nbsp;</a></span>print_section_footer</h2>
<div class="memitem">
@ -196,11 +195,11 @@ 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#l00450">450</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#l00456">456</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a978214b80ca8a1074b18c057215cb423"></a>
<a id="a978214b80ca8a1074b18c057215cb423" name="a978214b80ca8a1074b18c057215cb423"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a978214b80ca8a1074b18c057215cb423">&#9670;&nbsp;</a></span>print_section_header</h2>
<div class="memitem">
@ -212,11 +211,11 @@ 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#l00449">449</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#l00455">455</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a004534de75d5c156c9ad3c5f280a95bd"></a>
<a id="a004534de75d5c156c9ad3c5f280a95bd" name="a004534de75d5c156c9ad3c5f280a95bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a004534de75d5c156c9ad3c5f280a95bd">&#9670;&nbsp;</a></span>print_string</h2>
<div class="memitem">
@ -228,11 +227,11 @@ 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#l00453">453</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#l00459">459</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a66be370a26c5bf349d83fc61dd584ca0"></a>
<a id="a66be370a26c5bf349d83fc61dd584ca0" name="a66be370a26c5bf349d83fc61dd584ca0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a66be370a26c5bf349d83fc61dd584ca0">&#9670;&nbsp;</a></span>priv_class</h2>
<div class="memitem">
@ -246,11 +245,11 @@ Data Fields</h2></td></tr>
<p>private class of the writer, if any </p>
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00442">442</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#l00448">448</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a648833a5a5c772b6b2141559ab7be92a"></a>
<a id="a648833a5a5c772b6b2141559ab7be92a" name="a648833a5a5c772b6b2141559ab7be92a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a648833a5a5c772b6b2141559ab7be92a">&#9670;&nbsp;</a></span>priv_size</h2>
<div class="memitem">
@ -264,11 +263,11 @@ Data Fields</h2></td></tr>
<p>private size for the writer context </p>
<p class="definition">Definition at line <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html#l00443">443</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#l00449">449</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="adfa6b21c67d1c8eafd448cfd1f1b644a"></a>
<a id="adfa6b21c67d1c8eafd448cfd1f1b644a" name="adfa6b21c67d1c8eafd448cfd1f1b644a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfa6b21c67d1c8eafd448cfd1f1b644a">&#9670;&nbsp;</a></span>uninit</h2>
<div class="memitem">
@ -280,7 +279,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#l00447">447</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#l00453">453</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -290,7 +289,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: InputFilter Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">InputFilter Struct Reference</div> </div>
<div class="headertitle"><div class="title">InputFilter Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a572505eef6ba5714df813d454185019d"><td class="memItemLeft" align="right" valign="top">AVFilterContext *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d0c/struct_input_filter.html#a572505eef6ba5714df813d454185019d">filter</a></td></tr>
<tr class="separator:a572505eef6ba5714df813d454185019d"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -105,9 +106,9 @@ 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#l00263">263</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#l00264">264</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="aaf4487a0c41b756199c9dde4ea8962b8"></a>
<a id="aaf4487a0c41b756199c9dde4ea8962b8" name="aaf4487a0c41b756199c9dde4ea8962b8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf4487a0c41b756199c9dde4ea8962b8">&#9670;&nbsp;</a></span>channel_layout</h2>
<div class="memitem">
@ -119,11 +120,11 @@ 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#l00280">280</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#l00281">281</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ae65ce297679c894d4536e8eaaf623b84"></a>
<a id="ae65ce297679c894d4536e8eaaf623b84" name="ae65ce297679c894d4536e8eaaf623b84"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae65ce297679c894d4536e8eaaf623b84">&#9670;&nbsp;</a></span>channels</h2>
<div class="memitem">
@ -135,11 +136,11 @@ 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#l00279">279</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#l00280">280</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ad3e4e5041c3312bb70cc4d1f0bbd4726"></a>
<a id="ad3e4e5041c3312bb70cc4d1f0bbd4726" name="ad3e4e5041c3312bb70cc4d1f0bbd4726"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad3e4e5041c3312bb70cc4d1f0bbd4726">&#9670;&nbsp;</a></span>eof</h2>
<div class="memitem">
@ -151,11 +152,11 @@ 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#l00284">284</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#l00285">285</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a572505eef6ba5714df813d454185019d"></a>
<a id="a572505eef6ba5714df813d454185019d" name="a572505eef6ba5714df813d454185019d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a572505eef6ba5714df813d454185019d">&#9670;&nbsp;</a></span>filter</h2>
<div class="memitem">
@ -167,11 +168,11 @@ 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#l00264">264</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#l00265">265</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ae704ff879704d2ab90dad159526785e2"></a>
<a id="ae704ff879704d2ab90dad159526785e2" name="ae704ff879704d2ab90dad159526785e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae704ff879704d2ab90dad159526785e2">&#9670;&nbsp;</a></span>format</h2>
<div class="memitem">
@ -183,11 +184,11 @@ 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#l00273">273</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#l00274">274</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa3127396f27743175651a8d86e7d0770"></a>
<a id="aa3127396f27743175651a8d86e7d0770" name="aa3127396f27743175651a8d86e7d0770"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3127396f27743175651a8d86e7d0770">&#9670;&nbsp;</a></span>frame_queue</h2>
<div class="memitem">
@ -199,11 +200,11 @@ 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#l00270">270</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#l00271">271</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="ab1730578ae74132f67d2e847df4cc624"></a>
<a id="ab1730578ae74132f67d2e847df4cc624" name="ab1730578ae74132f67d2e847df4cc624"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab1730578ae74132f67d2e847df4cc624">&#9670;&nbsp;</a></span>graph</h2>
<div class="memitem">
@ -215,11 +216,11 @@ 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#l00266">266</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#l00267">267</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a2ad802636d7a1f6b3be4eaaa21929c3f"></a>
<a id="a2ad802636d7a1f6b3be4eaaa21929c3f" name="a2ad802636d7a1f6b3be4eaaa21929c3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ad802636d7a1f6b3be4eaaa21929c3f">&#9670;&nbsp;</a></span>height</h2>
<div class="memitem">
@ -231,11 +232,11 @@ 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#l00275">275</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#l00276">276</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a05a22838e8069f8fdabba7686809494c"></a>
<a id="a05a22838e8069f8fdabba7686809494c" name="a05a22838e8069f8fdabba7686809494c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a05a22838e8069f8fdabba7686809494c">&#9670;&nbsp;</a></span>hw_frames_ctx</h2>
<div class="memitem">
@ -247,11 +248,11 @@ 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#l00282">282</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#l00283">283</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a495a9bf2659a91ffa184a4cd9395469b"></a>
<a id="a495a9bf2659a91ffa184a4cd9395469b" name="a495a9bf2659a91ffa184a4cd9395469b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a495a9bf2659a91ffa184a4cd9395469b">&#9670;&nbsp;</a></span>ist</h2>
<div class="memitem">
@ -263,11 +264,11 @@ 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#l00265">265</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#l00266">266</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a09efa5b4f05e3ca7c08c7ac949466556"></a>
<a id="a09efa5b4f05e3ca7c08c7ac949466556" name="a09efa5b4f05e3ca7c08c7ac949466556"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09efa5b4f05e3ca7c08c7ac949466556">&#9670;&nbsp;</a></span>name</h2>
<div class="memitem">
@ -279,11 +280,11 @@ 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#l00267">267</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#l00268">268</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="abbd8721ddcadbfb453a4f5cdf6301c25"></a>
<a id="abbd8721ddcadbfb453a4f5cdf6301c25" name="abbd8721ddcadbfb453a4f5cdf6301c25"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbd8721ddcadbfb453a4f5cdf6301c25">&#9670;&nbsp;</a></span>sample_aspect_ratio</h2>
<div class="memitem">
@ -295,11 +296,11 @@ 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#l00276">276</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#l00277">277</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="a1c8870375203b3594e67e632119bbc10"></a>
<a id="a1c8870375203b3594e67e632119bbc10" name="a1c8870375203b3594e67e632119bbc10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c8870375203b3594e67e632119bbc10">&#9670;&nbsp;</a></span>sample_rate</h2>
<div class="memitem">
@ -311,11 +312,11 @@ 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#l00278">278</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#l00279">279</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="aa033b48aa4612dc26aa8e66e83f932bc"></a>
<a id="aa033b48aa4612dc26aa8e66e83f932bc" name="aa033b48aa4612dc26aa8e66e83f932bc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa033b48aa4612dc26aa8e66e83f932bc">&#9670;&nbsp;</a></span>type</h2>
<div class="memitem">
@ -327,11 +328,11 @@ 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#l00267">267</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#l00269">269</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
<a id="af86da4dd2e5092c08e8b171b52c6fa66"></a>
<a id="af86da4dd2e5092c08e8b171b52c6fa66" name="af86da4dd2e5092c08e8b171b52c6fa66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af86da4dd2e5092c08e8b171b52c6fa66">&#9670;&nbsp;</a></span>width</h2>
<div class="memitem">
@ -343,7 +344,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#l00275">275</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#l00276">276</a> of file <a class="el" href="../../d7/db3/fftools__ffmpeg_8h_source.html">fftools_ffmpeg.h</a>.</p>
</div>
</div>
@ -353,7 +354,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: OptionGroupList Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,13 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">OptionGroupList Struct Reference</div> </div>
<div class="headertitle"><div class="title">OptionGroupList Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:a8adab84b1aaa305b1aec3add781f0a64"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64">group_def</a></td></tr>
<tr class="separator:a8adab84b1aaa305b1aec3add781f0a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -80,11 +81,11 @@ Data Fields</h2></td></tr>
<tr class="separator:a6ca02ccb04349c3759d6cdf4ef335202"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A list of option groups that all have the same group type (e.g. input files or output files) </p>
<div class="textblock"><p >A list of option groups that all have the same group type (e.g. input files or output files) </p>
<p class="definition">Definition at line <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00315">315</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#l00318">318</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="a8adab84b1aaa305b1aec3add781f0a64"></a>
<a id="a8adab84b1aaa305b1aec3add781f0a64" name="a8adab84b1aaa305b1aec3add781f0a64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8adab84b1aaa305b1aec3add781f0a64">&#9670;&nbsp;</a></span>group_def</h2>
<div class="memitem">
@ -96,11 +97,11 @@ 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#l00316">316</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#l00319">319</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="a825edf37567a1a7b5ccf81ae6b54827a"></a>
<a id="a825edf37567a1a7b5ccf81ae6b54827a" name="a825edf37567a1a7b5ccf81ae6b54827a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a825edf37567a1a7b5ccf81ae6b54827a">&#9670;&nbsp;</a></span>groups</h2>
<div class="memitem">
@ -112,11 +113,11 @@ 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#l00318">318</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#l00321">321</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
<a id="a6ca02ccb04349c3759d6cdf4ef335202"></a>
<a id="a6ca02ccb04349c3759d6cdf4ef335202" name="a6ca02ccb04349c3759d6cdf4ef335202"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6ca02ccb04349c3759d6cdf4ef335202">&#9670;&nbsp;</a></span>nb_groups</h2>
<div class="memitem">
@ -128,7 +129,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#l00319">319</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#l00322">322</a> of file <a class="el" href="../../d8/d4e/fftools__cmdutils_8h_source.html">fftools_cmdutils.h</a>.</p>
</div>
</div>
@ -138,7 +139,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: XMLContext Struct Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
@ -65,12 +65,11 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-attribs">Data Fields</a> </div>
<div class="headertitle">
<div class="title">XMLContext Struct Reference</div> </div>
<div class="headertitle"><div class="title">XMLContext Struct Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
<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:ad6cc91ff4b9016b87e2d7ab9ad6c1a4b"><td class="memItemLeft" align="right" valign="top">const AVClass *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/db2/struct_x_m_l_context.html#ad6cc91ff4b9016b87e2d7ab9ad6c1a4b">class</a></td></tr>
<tr class="separator:ad6cc91ff4b9016b87e2d7ab9ad6c1a4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -85,9 +84,9 @@ 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#l01632">1632</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#l01640">1640</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="ad6cc91ff4b9016b87e2d7ab9ad6c1a4b"></a>
<a id="ad6cc91ff4b9016b87e2d7ab9ad6c1a4b" name="ad6cc91ff4b9016b87e2d7ab9ad6c1a4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6cc91ff4b9016b87e2d7ab9ad6c1a4b">&#9670;&nbsp;</a></span>class</h2>
<div class="memitem">
@ -99,11 +98,11 @@ 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#l01633">1633</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#l01641">1641</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a2ab2d6c54f5cf43f568fb2595de18575"></a>
<a id="a2ab2d6c54f5cf43f568fb2595de18575" name="a2ab2d6c54f5cf43f568fb2595de18575"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2ab2d6c54f5cf43f568fb2595de18575">&#9670;&nbsp;</a></span>fully_qualified</h2>
<div class="memitem">
@ -115,11 +114,11 @@ 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#l01636">1636</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#l01644">1644</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a65afb619ba52f7a7827f170e18affd3e"></a>
<a id="a65afb619ba52f7a7827f170e18affd3e" name="a65afb619ba52f7a7827f170e18affd3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a65afb619ba52f7a7827f170e18affd3e">&#9670;&nbsp;</a></span>indent_level</h2>
<div class="memitem">
@ -131,11 +130,11 @@ 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#l01635">1635</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#l01643">1643</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="ae41c7821d5808844d337094fd2d7537f"></a>
<a id="ae41c7821d5808844d337094fd2d7537f" name="ae41c7821d5808844d337094fd2d7537f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae41c7821d5808844d337094fd2d7537f">&#9670;&nbsp;</a></span>within_tag</h2>
<div class="memitem">
@ -147,11 +146,11 @@ 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#l01634">1634</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#l01642">1642</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
<a id="a1db2a42cba43c5bd67bf41836350e28a"></a>
<a id="a1db2a42cba43c5bd67bf41836350e28a" name="a1db2a42cba43c5bd67bf41836350e28a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1db2a42cba43c5bd67bf41836350e28a">&#9670;&nbsp;</a></span>xsd_strict</h2>
<div class="memitem">
@ -163,7 +162,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#l01637">1637</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#l01645">1645</a> of file <a class="el" href="../../d8/d78/fftools__ffprobe_8c_source.html">fftools_ffprobe.c</a>.</p>
</div>
</div>
@ -173,7 +172,7 @@ Data Fields</h2></td></tr>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:51 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -2,8 +2,8 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>FFmpegKit Android API: fftools_cmdutils.h Source File</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@ -22,8 +22,7 @@
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="../../ffmpeg-kit-icon-v9-small.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">FFmpegKit Android API
&#160;<span id="projectnumber">4.4</span>
<div id="projectname">FFmpegKit Android API<span id="projectnumber">&#160;4.5</span>
</div>
</td>
</tr>
@ -31,21 +30,22 @@
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<!-- Generated by Doxygen 1.9.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search','.html');
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search",'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:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
@ -63,442 +63,441 @@ $(function() {
</div>
<div class="header">
<div class="headertitle">
<div class="title">fftools_cmdutils.h</div> </div>
<div class="headertitle"><div class="title">fftools_cmdutils.h</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d8/d4e/fftools__cmdutils_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> * Various utilities for command line tools</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> * copyright (c) 2003 Fabrice Bellard</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> * This file is part of FFmpeg.</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"> * FFmpeg is free software; you can redistribute it and/or</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> * modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment"> * License as published by the Free Software Foundation; either</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment"> * FFmpeg is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment"> * License along with FFmpeg; if not, write to the Free Software</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; </div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment"> * CHANGES 01.2020</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment"> * - ffprobe support changes</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment"> * - AV_LOG_STDERR introduced</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment"> * CHANGES 12.2019</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment"> * - Concurrent execution support</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment"> * CHANGES 03.2019</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment"> * - config.h include removed</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"> * CHANGES 08.2018</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment"> * - fftools_ prefix added to file name and include guards</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment"> * CHANGES 07.2018</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> * - Include guards renamed</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> * - Unused headers removed</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; </div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="preprocessor">#ifndef FFTOOLS_CMDUTILS_H</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define FFTOOLS_CMDUTILS_H</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;libavcodec/avcodec.h&quot;</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="preprocessor">#include &quot;libavfilter/avfilter.h&quot;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#include &quot;libavformat/avformat.h&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor">#include &quot;libswscale/swscale.h&quot;</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="../../d6/d1f/saf__wrapper_8h.html">saf_wrapper.h</a>&quot;</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#undef main </span><span class="comment">/* We don&#39;t want SDL to override our main() */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1"> 63</a></span>&#160;<span class="preprocessor">#define AV_LOG_STDERR -16</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">char</span> *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886">program_name</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2">program_birth_year</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="keyword">extern</span> __thread AVCodecContext *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a5b7d57e5b7a108a1f788c92c9bb58d8e">avcodec_opts</a>[AVMEDIA_TYPE_NB];</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="keyword">extern</span> __thread AVFormatContext *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a4a485ee1ca1f65f58e326ba65cded348">avformat_opts</a>;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">extern</span> __thread AVDictionary *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d">sws_dict</a>;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="keyword">extern</span> __thread AVDictionary *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3">swr_opts</a>;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9"> 79</a></span>&#160;<span class="keyword">extern</span> __thread AVDictionary *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5">format_opts</a>, *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a>, *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6">resample_opts</a>;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1">hide_banner</a>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753">find_stream_info</a>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f">register_exit</a>(<span class="keywordtype">void</span> (*cb)(<span class="keywordtype">int</span> ret));</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16">exit_program</a>(<span class="keywordtype">int</span> ret) av_noreturn;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c">init_dynload</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; </div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a">init_opts</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee">uninit_opts</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2"> 113</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2">log_callback_help</a>(<span class="keywordtype">void</span>* ptr, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt, va_list vl);</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0bc08eaf2739c5b0977996228a81a129">opt_cpuflags</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed">opt_default</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0655c99b1344272c17f0dc8eb480c598">opt_loglevel</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ae83addf5abc14d1dd046f315499ed6bf">opt_report</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; </div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ae2131affd4cd632364d24b0d0a809fc3">opt_max_alloc</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; </div>
<div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f"> 135</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f">opt_codec_debug</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; </div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa">opt_timelimit</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; </div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="keywordtype">double</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae">parse_number_or_die</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *context, <span class="keyword">const</span> <span class="keywordtype">char</span> *numstr, <span class="keywordtype">int</span> type,</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <span class="keywordtype">double</span> min, <span class="keywordtype">double</span> max);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; </div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;int64_t <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f">parse_time_or_die</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *context, <span class="keyword">const</span> <span class="keywordtype">char</span> *timestr,</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; <span class="keywordtype">int</span> is_duration);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; </div>
<div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html"> 175</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../dd/da5/struct_specifier_opt.html">SpecifierOpt</a> {</div>
<div class="line"><a name="l00176"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81"> 176</a></span>&#160; <span class="keywordtype">char</span> *<a class="code" href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81">specifier</a>; </div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4"> 178</a></span>&#160; uint8_t *<a class="code" href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4">str</a>;</div>
<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f"> 179</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f">i</a>;</div>
<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3"> 180</a></span>&#160; int64_t <a class="code" href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3">i64</a>;</div>
<div class="line"><a name="l00181"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d"> 181</a></span>&#160; uint64_t <a class="code" href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d">ui64</a>;</div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7"> 182</a></span>&#160; <span class="keywordtype">float</span> <a class="code" href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7">f</a>;</div>
<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c"> 183</a></span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c">dbl</a>;</div>
<div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521"> 184</a></span>&#160; } <a class="code" href="../../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521">u</a>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a"> 185</a></span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a">SpecifierOpt</a>;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html"> 187</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> {</div>
<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72"> 188</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72">name</a>;</div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014"> 189</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014">flags</a>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#affec572f11fcba59ce0cd49cbcd0110f"> 190</a></span>&#160;<span class="preprocessor">#define HAS_ARG 0x0001</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a1b1c1cb0b866790034157479d6dd5da6"> 191</a></span>&#160;<span class="preprocessor">#define OPT_BOOL 0x0002</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab8b1131ea532a43a07296dd04c8c9693"> 192</a></span>&#160;<span class="preprocessor">#define OPT_EXPERT 0x0004</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a91fea349332c05eb78ce3c17202e1dc9"> 193</a></span>&#160;<span class="preprocessor">#define OPT_STRING 0x0008</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a0654bdd8f429df3aaf1f532968783bbc"> 194</a></span>&#160;<span class="preprocessor">#define OPT_VIDEO 0x0010</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aac1f37101001610dfbf8c6c679b786da"> 195</a></span>&#160;<span class="preprocessor">#define OPT_AUDIO 0x0020</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a55bdf11c33fc097533cde94b0f64024b"> 196</a></span>&#160;<span class="preprocessor">#define OPT_INT 0x0080</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a56df4dc0401bc7c1ad4c7744c44879f7"> 197</a></span>&#160;<span class="preprocessor">#define OPT_FLOAT 0x0100</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab2f01b015c63102de072d1b04cb54907"> 198</a></span>&#160;<span class="preprocessor">#define OPT_SUBTITLE 0x0200</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a1e6d562f7f8c2883ddc3847a003dc804"> 199</a></span>&#160;<span class="preprocessor">#define OPT_INT64 0x0400</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac6310b4c2290bc63f127bcd3faa117e6"> 200</a></span>&#160;<span class="preprocessor">#define OPT_EXIT 0x0800</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aaf5b4d51091fffdd43550ce4c7f64b88"> 201</a></span>&#160;<span class="preprocessor">#define OPT_DATA 0x1000</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a2cb4d9f4b617e04d8b68fc881fdbb958"> 202</a></span>&#160;<span class="preprocessor">#define OPT_PERFILE 0x2000 </span><span class="comment">/* the option is per-file (currently ffmpeg-only).</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#af8d2573bae8637d92cfb1bd84782e8d5"> 203</a></span>&#160;<span class="comment"> implied by OPT_OFFSET or OPT_SPEC */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a125b062e1ed2e8d929ab67f4721aa463"> 204</a></span>&#160;<span class="preprocessor">#define OPT_OFFSET 0x4000 </span><span class="comment">/* option is specified as an offset in a passed optctx */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00205"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac8fbad19fad03f8e62a8f5d5ccba5782"> 205</a></span>&#160;<span class="preprocessor">#define OPT_SPEC 0x8000 </span><span class="comment">/* option is to be stored in an array of SpecifierOpt.</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a8370d4bb83286c3641c5dd87551f6182"> 206</a></span>&#160;<span class="comment"> Implies OPT_OFFSET. Next element after the offset is</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a70561ef40bba827afd07234175c07d03"> 207</a></span>&#160;<span class="comment"> an int containing element count in the array. */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac8131c70a1e8339c3574c9a08da81d1b"> 208</a></span>&#160;<span class="preprocessor">#define OPT_TIME 0x10000</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#define OPT_DOUBLE 0x20000</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c"> 210</a></span>&#160;<span class="preprocessor">#define OPT_INPUT 0x40000</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841"> 211</a></span>&#160;<span class="preprocessor">#define OPT_OUTPUT 0x80000</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c"> 212</a></span>&#160; <span class="keyword">union </span>{</div>
<div class="line"><a name="l00213"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212"> 213</a></span>&#160; <span class="keywordtype">void</span> *<a class="code" href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c">dst_ptr</a>;</div>
<div class="line"><a name="l00214"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8"> 214</a></span>&#160; <a class="code" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> (*<a class="code" href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841">func_arg</a>)(<span class="keywordtype">void</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f"> 215</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c">off</a>;</div>
<div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3"> 216</a></span>&#160; } <a class="code" href="../../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212">u</a>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8">help</a>;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f">argname</a>;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3">OptionDef</a>;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55">show_help_options</a>(<span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, <span class="keywordtype">int</span> req_flags,</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">int</span> rej_flags, <span class="keywordtype">int</span> alt_flags);</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0833f5d4481c5c8c2362b0e5d65af5f3">show_help_children</a>(<span class="keyword">const</span> AVClass *<span class="keyword">class</span>, <span class="keywordtype">int</span> flags);</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f">show_help_default_ffmpeg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e">show_help_default_ffprobe</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; </div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0ff9db0d178a0397441c0269cea9e48a">show_help</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a188aa7e7bee8039b9399865cc3507336">parse_options</a>(<span class="keywordtype">void</span> *optctx, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keywordtype">void</span> (* parse_arg_function)(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span>*));</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; </div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547">parse_option</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg,</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
<div class="line"><a name="l00279"></a><span class="lineno"><a class="line" href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236"> 279</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d3/d1d/struct_option.html">Option</a> {</div>
<div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515"> 280</a></span>&#160; <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *<a class="code" href="../../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc">opt</a>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617">key</a>;</div>
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="../../db/dd7/struct_option_group_def.html"> 282</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236">val</a>;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515">Option</a>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da"> 284</a></span>&#160; </div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> {</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da">name</a>;</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028">sep</a>;</div>
<div class="line"><a name="l00297"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html"> 297</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7">flags</a>;</div>
<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd"> 298</a></span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ae685e65315debd1ee1fc81b88f45568a">OptionGroupDef</a>;</div>
<div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95"> 299</a></span>&#160; </div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d6/d69/struct_option_group.html">OptionGroup</a> {</div>
<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856"> 301</a></span>&#160; <span class="keyword">const</span> <a class="code" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *<a class="code" href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd">group_def</a>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38"> 302</a></span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95">arg</a>;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; </div>
<div class="line"><a name="l00304"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910"> 304</a></span>&#160; <a class="code" href="../../d3/d1d/struct_option.html">Option</a> *<a class="code" href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856">opts</a>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb"> 305</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38">nb_opts</a>;</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9"> 306</a></span>&#160; </div>
<div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b"> 307</a></span>&#160; AVDictionary *<a class="code" href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910">codec_opts</a>;</div>
<div class="line"><a name="l00308"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d"> 308</a></span>&#160; AVDictionary *<a class="code" href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb">format_opts</a>;</div>
<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760"> 309</a></span>&#160; AVDictionary *<a class="code" href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9">resample_opts</a>;</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; AVDictionary *<a class="code" href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b">sws_dict</a>;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; AVDictionary *<a class="code" href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d">swr_opts</a>;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760">OptionGroup</a>;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; </div>
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a"> 318</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a> {</div>
<div class="line"><a name="l00319"></a><span class="lineno"><a class="line" href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202"> 319</a></span>&#160; <span class="keyword">const</span> <a class="code" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *<a class="code" href="../../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64">group_def</a>;</div>
<div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203"> 320</a></span>&#160; </div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="../../d6/d69/struct_option_group.html">OptionGroup</a> *<a class="code" href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a">groups</a>;</div>
<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html"> 322</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202">nb_groups</a>;</div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32"> 323</a></span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203">OptionGroupList</a>;</div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; </div>
<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993"> 325</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> {</div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7"> 326</a></span>&#160; <a class="code" href="../../d6/d69/struct_option_group.html">OptionGroup</a> <a class="code" href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32">global_opts</a>;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; </div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <a class="code" href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a> *<a class="code" href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993">groups</a>;</div>
<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13"> 329</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7">nb_groups</a>;</div>
<div class="line"><a name="l00330"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8"> 330</a></span>&#160; </div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="comment">/* parsing state */</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <a class="code" href="../../d6/d69/struct_option_group.html">OptionGroup</a> <a class="code" href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13">cur_group</a>;</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;} <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8">OptionParseContext</a>;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; </div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4">parse_optgroup</a>(<span class="keywordtype">void</span> *optctx, <a class="code" href="../../d6/d69/struct_option_group.html">OptionGroup</a> *g);</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; </div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306">split_commandline</a>(<a class="code" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> *octx, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[],</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keyword">const</span> <a class="code" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *groups, <span class="keywordtype">int</span> nb_groups);</div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; </div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad">uninit_parse_context</a>(<a class="code" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> *octx);</div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; </div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a">parse_loglevel</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb">locate_option</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *optname);</div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; </div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8">check_stream_specifier</a>(AVFormatContext *s, AVStream *st, <span class="keyword">const</span> <span class="keywordtype">char</span> *spec);</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;AVDictionary *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a98c102ceb9bca5531e6d43f951e9afed">filter_codec_opts</a>(AVDictionary *opts, <span class="keyword">enum</span> AVCodecID codec_id,</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; AVFormatContext *s, AVStream *st, AVCodec *codec);</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;AVDictionary **<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a6246f47f8e3ef9a3e99e5d1457c7d197">setup_find_stream_info_opts</a>(AVFormatContext *s,</div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; AVDictionary *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a>);</div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160; </div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b">print_error</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">int</span> err);</div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; </div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="keywordtype">void</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701">show_banner</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; </div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a79c0ae205603f7f83f15171ba3413f26">show_version</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf">show_buildconf</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; </div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35">show_license</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; </div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#ac64f66a36c4ca887741fe28475a99b01">show_formats</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; </div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a4c35b5b42d01e850824bc0af1016e71f">show_muxers</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; </div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#af99b4b78c2355c81ff66ae146b92bc7b">show_demuxers</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; </div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5">show_devices</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; </div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor">#if CONFIG_AVDEVICE</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="keywordtype">int</span> show_sinks(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; </div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="keywordtype">int</span> show_sources(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632">show_codecs</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; </div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a051c87d97a1dfd644a97f965dfaa18dc">show_decoders</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160; </div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79">show_encoders</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; </div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a2cad88ee81ff905e2309375818c89020">show_filters</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; </div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a53fb409434bc59eeabbfc52f67a1c641">show_bsfs</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#addb6306dc020aa290075bed9b1f42a3a">show_protocols</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#af34c982b84b7c76d45edc5a7715a4fed">show_pix_fmts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; </div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a6fea7aab2873df1439a71f12e0f1afd8">show_layouts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; </div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a3359dc295afcfd0ee6f592dd37f03080">show_sample_fmts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7">show_colors</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; </div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="keywordtype">int</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700">read_yesno</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; </div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;FILE *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a4ba31d95fc6fc14e603fa86e7a007409">get_preset_file</a>(<span class="keywordtype">char</span> *filename, <span class="keywordtype">size_t</span> filename_size,</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keyword">const</span> <span class="keywordtype">char</span> *preset_name, <span class="keywordtype">int</span> is_path, <span class="keyword">const</span> <span class="keywordtype">char</span> *codec_name);</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; </div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="keywordtype">void</span> *<a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a5a234190bf25a47320f57fd5ba9cea6a">grow_array</a>(<span class="keywordtype">void</span> *array, <span class="keywordtype">int</span> elem_size, <span class="keywordtype">int</span> *size, <span class="keywordtype">int</span> new_size);</div>
<div class="line"><a name="l00609"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aa75501e4e249657d5f0df6d7e8645d4f"> 609</a></span>&#160; </div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor">#define media_type_string av_get_media_type_string</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; </div>
<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a8000828d615667df850114a1d810567f"> 612</a></span>&#160;<span class="preprocessor">#define GROW_ARRAY(array, nb_elems)\</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"> array = grow_array(array, sizeof(*array), &amp;nb_elems, nb_elems + 1)</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; </div>
<div class="line"><a name="l00615"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a4670d4ad86c74b82961d07ff8532defe"> 615</a></span>&#160;<span class="preprocessor">#define GET_PIX_FMT_NAME(pix_fmt)\</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor"> const char *name = av_get_pix_fmt_name(pix_fmt);</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; </div>
<div class="line"><a name="l00618"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04427a6bc0201f8f4a95db84104c8ad"> 618</a></span>&#160;<span class="preprocessor">#define GET_CODEC_NAME(id)\</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor"> const char *name = avcodec_descriptor_get(id)-&gt;name;</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; </div>
<div class="line"><a name="l00621"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a0745a3311be303dc4d6d9da67756e1e9"> 621</a></span>&#160;<span class="preprocessor">#define GET_SAMPLE_FMT_NAME(sample_fmt)\</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="preprocessor"> const char *name = av_get_sample_fmt_name(sample_fmt)</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor">#define GET_SAMPLE_RATE_NAME(rate)\</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a7b25c6a8e4f3e33fa53837200cbee607"> 625</a></span>&#160;<span class="preprocessor"> char name[16];\</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="preprocessor"> snprintf(name, sizeof(name), &quot;%d&quot;</span>, rate);</div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; </div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor">#define GET_CH_LAYOUT_NAME(ch_layout)\</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a950a3e73a77345e482e796c305ef25e4"> 629</a></span>&#160;<span class="preprocessor"> char name[16];\</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor"> snprintf(name, sizeof(name), &quot;0x%&quot;</span>PRIx64, ch_layout);</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; </div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor">#define GET_CH_LAYOUT_DESC(ch_layout)\</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="preprocessor"> char name[128];\</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="preprocessor"> av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; </div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="keywordtype">double</span> <a class="code" href="../../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2">get_rotation</a>(AVStream *st);</div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; </div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* FFTOOLS_CMDUTILS_H */</span><span class="preprocessor"></span></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a011fa5c3ecc237f646a56085659f53f3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3">swr_opts</a></div><div class="ttdeci">__thread AVDictionary * swr_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00102">fftools_cmdutils.c:102</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a051c87d97a1dfd644a97f965dfaa18dc"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01688">fftools_cmdutils.c:1688</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0655c99b1344272c17f0dc8eb480c598"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l00914">fftools_cmdutils.c:914</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0833f5d4481c5c8c2362b0e5d65af5f3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0833f5d4481c5c8c2362b0e5d65af5f3">show_help_children</a></div><div class="ttdeci">void show_help_children(const AVClass *class, int flags)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00239">fftools_cmdutils.c:239</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a08b59fb8c12cbc6db2dd68a367ae49d9"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a></div><div class="ttdeci">__thread AVDictionary * codec_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00079">fftools_cmdutils.h:79</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0bc08eaf2739c5b0977996228a81a129"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l00902">fftools_cmdutils.c:902</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0f4db71e6407040a01316c537db5040c"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c">init_dynload</a></div><div class="ttdeci">void init_dynload(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00150">fftools_cmdutils.c:150</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0f7f4bf6a990541888b7f4ece3456547"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547">parse_option</a></div><div class="ttdeci">int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00384">fftools_cmdutils.c:384</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0ff9db0d178a0397441c0269cea9e48a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l02039">fftools_cmdutils.c:2039</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a13fba56a5674556e879f5733f9b1dd55"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55">show_help_options</a></div><div class="ttdeci">void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00210">fftools_cmdutils.c:210</a></div></div>
<a href="../../d8/d4e/fftools__cmdutils_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"> * Various utilities for command line tools</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * copyright (c) 2003 Fabrice Bellard</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>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> * FFmpeg is free software; you can redistribute it and/or</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * modify it under the terms of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * License as published by the Free Software Foundation; either</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * FFmpeg is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> *</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * You should have received a copy of the GNU Lesser General Public</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * License along with FFmpeg; if not, write to the Free Software</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> */</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment">/*</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * CHANGES 01.2020</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * - ffprobe support changes</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * - AV_LOG_STDERR introduced</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * CHANGES 12.2019</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> * - Concurrent execution support</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="comment"> *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="comment"> * CHANGES 03.2019</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="comment"> * - config.h include removed</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="comment"> *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="comment"> * CHANGES 08.2018</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="comment"> * - fftools_ prefix added to file name and include guards</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment"> *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * CHANGES 07.2018</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> * --------------------------------------------------------</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="comment"> * - Include guards renamed</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="comment"> * - Unused headers removed</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="comment"> */</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#ifndef FFTOOLS_CMDUTILS_H</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span><span class="preprocessor">#define FFTOOLS_CMDUTILS_H</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#include &quot;libavcodec/avcodec.h&quot;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor">#include &quot;libavfilter/avfilter.h&quot;</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor">#include &quot;libavformat/avformat.h&quot;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#include &quot;libswscale/swscale.h&quot;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#undef main </span><span class="comment">/* We don&#39;t want SDL to override our main() */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a632891572be1648c03646028e8bfcac1"> 61</a></span><span class="preprocessor">#define AV_LOG_STDERR -16</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="keyword">extern</span> __thread <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886">program_name</a>;</div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2">program_birth_year</a>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="keyword">extern</span> __thread AVCodecContext *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a5b7d57e5b7a108a1f788c92c9bb58d8e">avcodec_opts</a>[AVMEDIA_TYPE_NB];</div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="keyword">extern</span> __thread AVFormatContext *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a4a485ee1ca1f65f58e326ba65cded348">avformat_opts</a>;</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="keyword">extern</span> __thread AVDictionary *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d">sws_dict</a>;</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="keyword">extern</span> __thread AVDictionary *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3">swr_opts</a>;</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9"> 77</a></span><span class="keyword">extern</span> __thread AVDictionary *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5">format_opts</a>, *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a>, *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6">resample_opts</a>;</div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span><span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1">hide_banner</a>;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span><span class="keyword">extern</span> __thread <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753">find_stream_info</a>;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f">register_exit</a>(<span class="keywordtype">void</span> (*cb)(<span class="keywordtype">int</span> ret));</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16">exit_program</a>(<span class="keywordtype">int</span> ret) av_noreturn;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c">init_dynload</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a"> 100</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a">init_opts</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee">uninit_opts</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> </div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2"> 111</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2">log_callback_help</a>(<span class="keywordtype">void</span>* ptr, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <span class="keywordtype">char</span>* fmt, va_list vl);</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0bc08eaf2739c5b0977996228a81a129">opt_cpuflags</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a8bc82376a974a97ef9384792d30b4cc4">opt_cpucount</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed">opt_default</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0655c99b1344272c17f0dc8eb480c598">opt_loglevel</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ae83addf5abc14d1dd046f315499ed6bf">opt_report</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ae2131affd4cd632364d24b0d0a809fc3">opt_max_alloc</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f"> 138</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f">opt_codec_debug</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa">opt_timelimit</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae">parse_number_or_die</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *context, <span class="keyword">const</span> <span class="keywordtype">char</span> *numstr, <span class="keywordtype">int</span> type,</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="keywordtype">double</span> min, <span class="keywordtype">double</span> max);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span>int64_t <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f">parse_time_or_die</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *context, <span class="keyword">const</span> <span class="keywordtype">char</span> *timestr,</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">int</span> is_duration);</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html"> 178</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../dd/da5/struct_specifier_opt.html">SpecifierOpt</a> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81"> 179</a></span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81">specifier</a>; </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4"> 181</a></span> uint8_t *<a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4">str</a>;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f"> 182</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f">i</a>;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3"> 183</a></span> int64_t <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3">i64</a>;</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d"> 184</a></span> uint64_t <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d">ui64</a>;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7"> 185</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7">f</a>;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c"> 186</a></span> <span class="keywordtype">double</span> <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c">dbl</a>;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="../../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521"> 187</a></span> } <a class="code hl_variable" href="../../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521">u</a>;</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a"> 188</a></span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a">SpecifierOpt</a>;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html"> 190</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> {</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72"> 191</a></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72">name</a>;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014"> 192</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014">flags</a>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#affec572f11fcba59ce0cd49cbcd0110f"> 193</a></span><span class="preprocessor">#define HAS_ARG 0x0001</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a1b1c1cb0b866790034157479d6dd5da6"> 194</a></span><span class="preprocessor">#define OPT_BOOL 0x0002</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab8b1131ea532a43a07296dd04c8c9693"> 195</a></span><span class="preprocessor">#define OPT_EXPERT 0x0004</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a91fea349332c05eb78ce3c17202e1dc9"> 196</a></span><span class="preprocessor">#define OPT_STRING 0x0008</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a0654bdd8f429df3aaf1f532968783bbc"> 197</a></span><span class="preprocessor">#define OPT_VIDEO 0x0010</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aac1f37101001610dfbf8c6c679b786da"> 198</a></span><span class="preprocessor">#define OPT_AUDIO 0x0020</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a55bdf11c33fc097533cde94b0f64024b"> 199</a></span><span class="preprocessor">#define OPT_INT 0x0080</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a56df4dc0401bc7c1ad4c7744c44879f7"> 200</a></span><span class="preprocessor">#define OPT_FLOAT 0x0100</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab2f01b015c63102de072d1b04cb54907"> 201</a></span><span class="preprocessor">#define OPT_SUBTITLE 0x0200</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a1e6d562f7f8c2883ddc3847a003dc804"> 202</a></span><span class="preprocessor">#define OPT_INT64 0x0400</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac6310b4c2290bc63f127bcd3faa117e6"> 203</a></span><span class="preprocessor">#define OPT_EXIT 0x0800</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aaf5b4d51091fffdd43550ce4c7f64b88"> 204</a></span><span class="preprocessor">#define OPT_DATA 0x1000</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a2cb4d9f4b617e04d8b68fc881fdbb958"> 205</a></span><span class="preprocessor">#define OPT_PERFILE 0x2000 </span><span class="comment">/* the option is per-file (currently ffmpeg-only).</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#af8d2573bae8637d92cfb1bd84782e8d5"> 206</a></span><span class="comment"> implied by OPT_OFFSET or OPT_SPEC */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a125b062e1ed2e8d929ab67f4721aa463"> 207</a></span><span class="preprocessor">#define OPT_OFFSET 0x4000 </span><span class="comment">/* option is specified as an offset in a passed optctx */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac8fbad19fad03f8e62a8f5d5ccba5782"> 208</a></span><span class="preprocessor">#define OPT_SPEC 0x8000 </span><span class="comment">/* option is to be stored in an array of SpecifierOpt.</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a8370d4bb83286c3641c5dd87551f6182"> 209</a></span><span class="comment"> Implies OPT_OFFSET. Next element after the offset is</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a70561ef40bba827afd07234175c07d03"> 210</a></span><span class="comment"> an int containing element count in the array. */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ac8131c70a1e8339c3574c9a08da81d1b"> 211</a></span><span class="preprocessor">#define OPT_TIME 0x10000</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="preprocessor">#define OPT_DOUBLE 0x20000</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c"> 213</a></span><span class="preprocessor">#define OPT_INPUT 0x40000</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841"> 214</a></span><span class="preprocessor">#define OPT_OUTPUT 0x80000</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c"> 215</a></span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212"> 216</a></span> <span class="keywordtype">void</span> *<a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c">dst_ptr</a>;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8"> 217</a></span> <a class="code hl_variable" href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a> (*<a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841">func_arg</a>)(<span class="keywordtype">void</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"><a class="line" href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f"> 218</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c">off</a>;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3"> 219</a></span> } <a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212">u</a>;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8">help</a>;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f">argname</a>;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3">OptionDef</a>;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55">show_help_options</a>(<span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg, <span class="keywordtype">int</span> req_flags,</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordtype">int</span> rej_flags, <span class="keywordtype">int</span> alt_flags);</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0833f5d4481c5c8c2362b0e5d65af5f3">show_help_children</a>(<span class="keyword">const</span> AVClass *<span class="keyword">class</span>, <span class="keywordtype">int</span> flags);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f">show_help_default_ffmpeg</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e">show_help_default_ffprobe</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0ff9db0d178a0397441c0269cea9e48a">show_help</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a188aa7e7bee8039b9399865cc3507336">parse_options</a>(<span class="keywordtype">void</span> *optctx, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keywordtype">void</span> (* parse_arg_function)(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span>*));</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547">parse_option</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg,</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236"> 282</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d3/d1d/struct_option.html">Option</a> {</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515"> 283</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *<a class="code hl_variable" href="../../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc">opt</a>;</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617">key</a>;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"><a class="line" href="../../db/dd7/struct_option_group_def.html"> 285</a></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236">val</a>;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515">Option</a>;</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da"> 287</a></span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> {</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da">name</a>;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028">sep</a>;</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html"> 300</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7">flags</a>;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd"> 301</a></span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#ae685e65315debd1ee1fc81b88f45568a">OptionGroupDef</a>;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95"> 302</a></span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d6/d69/struct_option_group.html">OptionGroup</a> {</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856"> 304</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd">group_def</a>;</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38"> 305</a></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95">arg</a>;</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> </div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910"> 307</a></span> <a class="code hl_struct" href="../../d3/d1d/struct_option.html">Option</a> *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856">opts</a>;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb"> 308</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38">nb_opts</a>;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9"> 309</a></span> </div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b"> 310</a></span> AVDictionary *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910">codec_opts</a>;</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d"> 311</a></span> AVDictionary *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb">format_opts</a>;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760"> 312</a></span> AVDictionary *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9">resample_opts</a>;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> AVDictionary *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b">sws_dict</a>;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> AVDictionary *<a class="code hl_variable" href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d">swr_opts</a>;</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760">OptionGroup</a>;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> </div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a"> 321</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a> {</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202"> 322</a></span> <span class="keyword">const</span> <a class="code hl_struct" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *<a class="code hl_variable" href="../../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64">group_def</a>;</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203"> 323</a></span> </div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> <a class="code hl_struct" href="../../d6/d69/struct_option_group.html">OptionGroup</a> *<a class="code hl_variable" href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a">groups</a>;</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html"> 325</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202">nb_groups</a>;</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32"> 326</a></span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203">OptionGroupList</a>;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993"> 328</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> {</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7"> 329</a></span> <a class="code hl_struct" href="../../d6/d69/struct_option_group.html">OptionGroup</a> <a class="code hl_variable" href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32">global_opts</a>;</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> </div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <a class="code hl_struct" href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a> *<a class="code hl_variable" href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993">groups</a>;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13"> 332</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7">nb_groups</a>;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8"> 333</a></span> </div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> <span class="comment">/* parsing state */</span></div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> <a class="code hl_struct" href="../../d6/d69/struct_option_group.html">OptionGroup</a> <a class="code hl_variable" href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13">cur_group</a>;</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span>} <a class="code hl_typedef" href="../../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8">OptionParseContext</a>;</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4">parse_optgroup</a>(<span class="keywordtype">void</span> *optctx, <a class="code hl_struct" href="../../d6/d69/struct_option_group.html">OptionGroup</a> *g);</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306">split_commandline</a>(<a class="code hl_struct" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> *octx, <span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> *argv[],</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> <span class="keyword">const</span> <a class="code hl_struct" href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a> *groups, <span class="keywordtype">int</span> nb_groups);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> </div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad">uninit_parse_context</a>(<a class="code hl_struct" href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a> *octx);</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a">parse_loglevel</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> </div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb">locate_option</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options,</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *optname);</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8">check_stream_specifier</a>(AVFormatContext *s, AVStream *st, <span class="keyword">const</span> <span class="keywordtype">char</span> *spec);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span>AVDictionary *<a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ad0557532a11ce0dfa427a8a9e94b968b">filter_codec_opts</a>(AVDictionary *opts, <span class="keyword">enum</span> AVCodecID codec_id,</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> AVFormatContext *s, AVStream *st, <span class="keyword">const</span> AVCodec *codec);</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span>AVDictionary **<a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#afe6a9f6163ee90a66f85595f7984b982">setup_find_stream_info_opts</a>(AVFormatContext *s,</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> AVDictionary *<a class="code hl_variable" href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a>);</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> </div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b">print_error</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">int</span> err);</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span><span class="keywordtype">void</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701">show_banner</a>(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv, <span class="keyword">const</span> <a class="code hl_struct" href="../../dc/d1e/struct_option_def.html">OptionDef</a> *options);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> </div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a79c0ae205603f7f83f15171ba3413f26">show_version</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a9f7a57bae796faca3c46ba0894f0b7bf">show_buildconf</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a9ac5f2397cd42cd32e4b3cb199739b35">show_license</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> </div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#ac64f66a36c4ca887741fe28475a99b01">show_formats</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> </div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a4c35b5b42d01e850824bc0af1016e71f">show_muxers</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#af99b4b78c2355c81ff66ae146b92bc7b">show_demuxers</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aaf26a4937c16d8b7cb22a6542ebb46a5">show_devices</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> </div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="preprocessor">#if CONFIG_AVDEVICE</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="keywordtype">int</span> show_sinks(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span><span class="keywordtype">int</span> show_sources(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a9d32ed47a0ec2bdf5a11b9ec477af632">show_codecs</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> </div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a051c87d97a1dfd644a97f965dfaa18dc">show_decoders</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> </div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a7271f609adb83bed31f8ef0eb8ee2b79">show_encoders</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a2cad88ee81ff905e2309375818c89020">show_filters</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> </div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a53fb409434bc59eeabbfc52f67a1c641">show_bsfs</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#addb6306dc020aa290075bed9b1f42a3a">show_protocols</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> </div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#af34c982b84b7c76d45edc5a7715a4fed">show_pix_fmts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> </div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a6fea7aab2873df1439a71f12e0f1afd8">show_layouts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> </div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a3359dc295afcfd0ee6f592dd37f03080">show_sample_fmts</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> </div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aed7606e2d2a9218a50ecbbc75a76aab7">show_colors</a>(<span class="keywordtype">void</span> *optctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *opt, <span class="keyword">const</span> <span class="keywordtype">char</span> *arg);</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700">read_yesno</a>(<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> </div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span>FILE *<a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#aae3aef834612a1e1bbd2442ecf839c55">get_preset_file</a>(<span class="keywordtype">char</span> *filename, <span class="keywordtype">size_t</span> filename_size,</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *preset_name, <span class="keywordtype">int</span> is_path, <span class="keyword">const</span> <span class="keywordtype">char</span> *codec_name);</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> </div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span><span class="keywordtype">void</span> *<a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#acd90965dc8c1458acd18b24978ce3c12">grow_array</a>(<span class="keywordtype">void</span> *array, <span class="keywordtype">int</span> elem_size, <span class="keywordtype">int</span> *size, <span class="keywordtype">int</span> new_size);</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#aa75501e4e249657d5f0df6d7e8645d4f"> 612</a></span> </div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span><span class="preprocessor">#define media_type_string av_get_media_type_string</span></div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> </div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a8000828d615667df850114a1d810567f"> 615</a></span><span class="preprocessor">#define GROW_ARRAY(array, nb_elems)\</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span><span class="preprocessor"> array = grow_array(array, sizeof(*array), &amp;nb_elems, nb_elems + 1)</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> </div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a4670d4ad86c74b82961d07ff8532defe"> 618</a></span><span class="preprocessor">#define GET_PIX_FMT_NAME(pix_fmt)\</span></div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span><span class="preprocessor"> const char *name = av_get_pix_fmt_name(pix_fmt);</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> </div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#ab04427a6bc0201f8f4a95db84104c8ad"> 621</a></span><span class="preprocessor">#define GET_CODEC_NAME(id)\</span></div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span><span class="preprocessor"> const char *name = avcodec_descriptor_get(id)-&gt;name;</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> </div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a0745a3311be303dc4d6d9da67756e1e9"> 624</a></span><span class="preprocessor">#define GET_SAMPLE_FMT_NAME(sample_fmt)\</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="preprocessor"> const char *name = av_get_sample_fmt_name(sample_fmt)</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> </div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span><span class="preprocessor">#define GET_SAMPLE_RATE_NAME(rate)\</span></div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a7b25c6a8e4f3e33fa53837200cbee607"> 628</a></span><span class="preprocessor"> char name[16];\</span></div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span><span class="preprocessor"> snprintf(name, sizeof(name), &quot;%d&quot;</span>, rate);</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> </div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span><span class="preprocessor">#define GET_CH_LAYOUT_NAME(ch_layout)\</span></div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"><a class="line" href="../../d8/d4e/fftools__cmdutils_8h.html#a950a3e73a77345e482e796c305ef25e4"> 632</a></span><span class="preprocessor"> char name[16];\</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span><span class="preprocessor"> snprintf(name, sizeof(name), &quot;0x%&quot;</span>PRIx64, ch_layout);</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> </div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span><span class="preprocessor">#define GET_CH_LAYOUT_DESC(ch_layout)\</span></div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span><span class="preprocessor"> char name[128];\</span></div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span><span class="preprocessor"> av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);</span></div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> </div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span><span class="keywordtype">double</span> <a class="code hl_function" href="../../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2">get_rotation</a>(AVStream *st);</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> </div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span><span class="preprocessor">#endif </span><span class="comment">/* FFTOOLS_CMDUTILS_H */</span><span class="preprocessor"></span></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a011fa5c3ecc237f646a56085659f53f3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a011fa5c3ecc237f646a56085659f53f3">swr_opts</a></div><div class="ttdeci">__thread AVDictionary * swr_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00104">fftools_cmdutils.c:104</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a051c87d97a1dfd644a97f965dfaa18dc"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01694">fftools_cmdutils.c:1694</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0655c99b1344272c17f0dc8eb480c598"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l00922">fftools_cmdutils.c:922</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0833f5d4481c5c8c2362b0e5d65af5f3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0833f5d4481c5c8c2362b0e5d65af5f3">show_help_children</a></div><div class="ttdeci">void show_help_children(const AVClass *class, int flags)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00236">fftools_cmdutils.c:236</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a08b59fb8c12cbc6db2dd68a367ae49d9"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a08b59fb8c12cbc6db2dd68a367ae49d9">codec_opts</a></div><div class="ttdeci">__thread AVDictionary * codec_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00077">fftools_cmdutils.h:77</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0bc08eaf2739c5b0977996228a81a129"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l00884">fftools_cmdutils.c:884</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0f4db71e6407040a01316c537db5040c"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0f4db71e6407040a01316c537db5040c">init_dynload</a></div><div class="ttdeci">void init_dynload(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00147">fftools_cmdutils.c:147</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0f7f4bf6a990541888b7f4ece3456547"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a0f7f4bf6a990541888b7f4ece3456547">parse_option</a></div><div class="ttdeci">int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00379">fftools_cmdutils.c:379</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a0ff9db0d178a0397441c0269cea9e48a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l02045">fftools_cmdutils.c:2045</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a13fba56a5674556e879f5733f9b1dd55"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a13fba56a5674556e879f5733f9b1dd55">show_help_options</a></div><div class="ttdeci">void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00207">fftools_cmdutils.c:207</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a188aa7e7bee8039b9399865cc3507336"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a188aa7e7bee8039b9399865cc3507336">parse_options</a></div><div class="ttdeci">void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *))</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a19714c08385a99d977c6d1bcfed4bca5"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5">format_opts</a></div><div class="ttdeci">__thread AVDictionary * format_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00103">fftools_cmdutils.c:103</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a1ab657d3155047b796645c95c54a1f16"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16">exit_program</a></div><div class="ttdeci">void exit_program(int ret) av_noreturn</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00166">fftools_cmdutils.c:166</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a24c4e9b816e053a3facd267d56daf1ed"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed">opt_default</a></div><div class="ttdeci">int opt_default(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00583">fftools_cmdutils.c:583</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a2911387e778b01a25f0e65eabadf1b7b"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b">print_error</a></div><div class="ttdeci">void print_error(const char *filename, int err)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01131">fftools_cmdutils.c:1131</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a19714c08385a99d977c6d1bcfed4bca5"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a19714c08385a99d977c6d1bcfed4bca5">format_opts</a></div><div class="ttdeci">__thread AVDictionary * format_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00105">fftools_cmdutils.c:105</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a1ab657d3155047b796645c95c54a1f16"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a1ab657d3155047b796645c95c54a1f16">exit_program</a></div><div class="ttdeci">void exit_program(int ret) av_noreturn</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00163">fftools_cmdutils.c:163</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a24c4e9b816e053a3facd267d56daf1ed"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a24c4e9b816e053a3facd267d56daf1ed">opt_default</a></div><div class="ttdeci">int opt_default(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00578">fftools_cmdutils.c:578</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a2911387e778b01a25f0e65eabadf1b7b"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a2911387e778b01a25f0e65eabadf1b7b">print_error</a></div><div class="ttdeci">void print_error(const char *filename, int err)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01137">fftools_cmdutils.c:1137</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a2aad8ad96b86a6152e926231c853188f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a2aad8ad96b86a6152e926231c853188f">opt_codec_debug</a></div><div class="ttdeci">int opt_codec_debug(void *optctx, const char *opt, const char *arg)</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a2cad88ee81ff905e2309375818c89020"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01727">fftools_cmdutils.c:1727</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a3359dc295afcfd0ee6f592dd37f03080"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01850">fftools_cmdutils.c:1850</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a40394fd5966088e759ce995186773700"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700">read_yesno</a></div><div class="ttdeci">int read_yesno(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02084">fftools_cmdutils.c:2084</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a2cad88ee81ff905e2309375818c89020"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01733">fftools_cmdutils.c:1733</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a3359dc295afcfd0ee6f592dd37f03080"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01856">fftools_cmdutils.c:1856</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a40394fd5966088e759ce995186773700"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a40394fd5966088e759ce995186773700">read_yesno</a></div><div class="ttdeci">int read_yesno(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02090">fftools_cmdutils.c:2090</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a444d0d05fd7fc8d14513812f9b2161f8"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a444d0d05fd7fc8d14513812f9b2161f8">OptionParseContext</a></div><div class="ttdeci">struct OptionParseContext OptionParseContext</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a44cde5d18cef91556a91e1e2903bb25a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a44cde5d18cef91556a91e1e2903bb25a">SpecifierOpt</a></div><div class="ttdeci">struct SpecifierOpt SpecifierOpt</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4a485ee1ca1f65f58e326ba65cded348"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a4a485ee1ca1f65f58e326ba65cded348">avformat_opts</a></div><div class="ttdeci">__thread AVFormatContext * avformat_opts</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4ba31d95fc6fc14e603fa86e7a007409"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a4ba31d95fc6fc14e603fa86e7a007409">get_preset_file</a></div><div class="ttdeci">FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02095">fftools_cmdutils.c:2095</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4c35b5b42d01e850824bc0af1016e71f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01403">fftools_cmdutils.c:1403</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4e2be8d99206aaa4b7c6fdb3bb612ffb"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb">locate_option</a></div><div class="ttdeci">int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00485">fftools_cmdutils.c:485</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a53fb409434bc59eeabbfc52f67a1c641"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01700">fftools_cmdutils.c:1700</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a5a234190bf25a47320f57fd5ba9cea6a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a5a234190bf25a47320f57fd5ba9cea6a">grow_array</a></div><div class="ttdeci">void * grow_array(void *array, int elem_size, int *size, int new_size)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02230">fftools_cmdutils.c:2230</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4c35b5b42d01e850824bc0af1016e71f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01409">fftools_cmdutils.c:1409</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a4e2be8d99206aaa4b7c6fdb3bb612ffb"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a4e2be8d99206aaa4b7c6fdb3bb612ffb">locate_option</a></div><div class="ttdeci">int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00480">fftools_cmdutils.c:480</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a53fb409434bc59eeabbfc52f67a1c641"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01706">fftools_cmdutils.c:1706</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a5b7d57e5b7a108a1f788c92c9bb58d8e"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a5b7d57e5b7a108a1f788c92c9bb58d8e">avcodec_opts</a></div><div class="ttdeci">__thread AVCodecContext * avcodec_opts[AVMEDIA_TYPE_NB]</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a6246f47f8e3ef9a3e99e5d1457c7d197"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a6246f47f8e3ef9a3e99e5d1457c7d197">setup_find_stream_info_opts</a></div><div class="ttdeci">AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02210">fftools_cmdutils.c:2210</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a632b71e4b56c5ee8556a407bbecbcef8"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8">check_stream_specifier</a></div><div class="ttdeci">int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02145">fftools_cmdutils.c:2145</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a63b299e1c6a109e847bc2416887ce3d6"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6">resample_opts</a></div><div class="ttdeci">__thread AVDictionary * resample_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00079">fftools_cmdutils.h:79</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a6afce516a5adaeabd7087b767bab5886"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886">program_name</a></div><div class="ttdeci">__thread char * program_name</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00098">fftools_cmdutils.c:98</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a6fea7aab2873df1439a71f12e0f1afd8"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01821">fftools_cmdutils.c:1821</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a7271f609adb83bed31f8ef0eb8ee2b79"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01694">fftools_cmdutils.c:1694</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a79c0ae205603f7f83f15171ba3413f26"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01239">fftools_cmdutils.c:1239</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a812390811ecf2673409d4d2191b3696a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a">parse_loglevel</a></div><div class="ttdeci">void parse_loglevel(int argc, char **argv, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00544">fftools_cmdutils.c:544</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a83fbf976c7976ea554e7bda1d266b0a2"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2">program_birth_year</a></div><div class="ttdeci">__thread int program_birth_year</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00099">fftools_cmdutils.c:99</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8bcd5cd3628e5864fa94431d8eb08fad"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad">uninit_parse_context</a></div><div class="ttdeci">void uninit_parse_context(OptionParseContext *octx)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00765">fftools_cmdutils.c:765</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8c8028bff4ba308f54869748db9f692d"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d">sws_dict</a></div><div class="ttdeci">__thread AVDictionary * sws_dict</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00101">fftools_cmdutils.c:101</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8dbe23ab7c8099a82806ae9beb9d4306"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306">split_commandline</a></div><div class="ttdeci">int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00791">fftools_cmdutils.c:791</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a907c42e3f98cc1183a8788033d0aaaf2"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2">get_rotation</a></div><div class="ttdeci">double get_rotation(AVStream *st)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02249">fftools_cmdutils.c:2249</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a632b71e4b56c5ee8556a407bbecbcef8"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a632b71e4b56c5ee8556a407bbecbcef8">check_stream_specifier</a></div><div class="ttdeci">int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02151">fftools_cmdutils.c:2151</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a63b299e1c6a109e847bc2416887ce3d6"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a63b299e1c6a109e847bc2416887ce3d6">resample_opts</a></div><div class="ttdeci">__thread AVDictionary * resample_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00077">fftools_cmdutils.h:77</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a6afce516a5adaeabd7087b767bab5886"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a6afce516a5adaeabd7087b767bab5886">program_name</a></div><div class="ttdeci">__thread char * program_name</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00100">fftools_cmdutils.c:100</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a6fea7aab2873df1439a71f12e0f1afd8"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01827">fftools_cmdutils.c:1827</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a7271f609adb83bed31f8ef0eb8ee2b79"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01700">fftools_cmdutils.c:1700</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a79c0ae205603f7f83f15171ba3413f26"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01245">fftools_cmdutils.c:1245</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a812390811ecf2673409d4d2191b3696a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a812390811ecf2673409d4d2191b3696a">parse_loglevel</a></div><div class="ttdeci">void parse_loglevel(int argc, char **argv, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00539">fftools_cmdutils.c:539</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a83fbf976c7976ea554e7bda1d266b0a2"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a83fbf976c7976ea554e7bda1d266b0a2">program_birth_year</a></div><div class="ttdeci">__thread int program_birth_year</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00101">fftools_cmdutils.c:101</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8bc82376a974a97ef9384792d30b4cc4"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l00896">fftools_cmdutils.c:896</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8bcd5cd3628e5864fa94431d8eb08fad"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8bcd5cd3628e5864fa94431d8eb08fad">uninit_parse_context</a></div><div class="ttdeci">void uninit_parse_context(OptionParseContext *octx)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00747">fftools_cmdutils.c:747</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8c8028bff4ba308f54869748db9f692d"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8c8028bff4ba308f54869748db9f692d">sws_dict</a></div><div class="ttdeci">__thread AVDictionary * sws_dict</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00103">fftools_cmdutils.c:103</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a8dbe23ab7c8099a82806ae9beb9d4306"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a8dbe23ab7c8099a82806ae9beb9d4306">split_commandline</a></div><div class="ttdeci">int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00773">fftools_cmdutils.c:773</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a907c42e3f98cc1183a8788033d0aaaf2"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a907c42e3f98cc1183a8788033d0aaaf2">get_rotation</a></div><div class="ttdeci">double get_rotation(AVStream *st)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02256">fftools_cmdutils.c:2256</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a90b81dc3f851b1894d3c0aecd85d66c2"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a90b81dc3f851b1894d3c0aecd85d66c2">log_callback_help</a></div><div class="ttdeci">void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a96a58c49cf1904b28615fd1778a12753"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753">find_stream_info</a></div><div class="ttdeci">__thread int find_stream_info</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d66/fftools__ffmpeg__opt_8c_source.html#l00207">fftools_ffmpeg_opt.c:207</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a976c7dc9afeb4b0f6ec009a7a084e701"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701">show_banner</a></div><div class="ttdeci">void show_banner(int argc, char **argv, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01228">fftools_cmdutils.c:1228</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a98c102ceb9bca5531e6d43f951e9afed"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a98c102ceb9bca5531e6d43f951e9afed">filter_codec_opts</a></div><div class="ttdeci">AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, AVCodec *codec)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02153">fftools_cmdutils.c:2153</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a995b064d5b67208fae49232687dd5eaa"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa">opt_timelimit</a></div><div class="ttdeci">int opt_timelimit(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01118">fftools_cmdutils.c:1118</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9ac5f2397cd42cd32e4b3cb199739b35"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01254">fftools_cmdutils.c:1254</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9d32ed47a0ec2bdf5a11b9ec477af632"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01593">fftools_cmdutils.c:1593</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9f7a57bae796faca3c46ba0894f0b7bf"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01247">fftools_cmdutils.c:1247</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a96a58c49cf1904b28615fd1778a12753"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a96a58c49cf1904b28615fd1778a12753">find_stream_info</a></div><div class="ttdeci">__thread int find_stream_info</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d66/fftools__ffmpeg__opt_8c_source.html#l00206">fftools_ffmpeg_opt.c:206</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a976c7dc9afeb4b0f6ec009a7a084e701"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a976c7dc9afeb4b0f6ec009a7a084e701">show_banner</a></div><div class="ttdeci">void show_banner(int argc, char **argv, const OptionDef *options)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01234">fftools_cmdutils.c:1234</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a995b064d5b67208fae49232687dd5eaa"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#a995b064d5b67208fae49232687dd5eaa">opt_timelimit</a></div><div class="ttdeci">int opt_timelimit(void *optctx, const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l01124">fftools_cmdutils.c:1124</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9ac5f2397cd42cd32e4b3cb199739b35"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01260">fftools_cmdutils.c:1260</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9d32ed47a0ec2bdf5a11b9ec477af632"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01599">fftools_cmdutils.c:1599</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_a9f7a57bae796faca3c46ba0894f0b7bf"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01253">fftools_cmdutils.c:1253</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aa5e22bb099f340dc6514ee43974f2203"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aa5e22bb099f340dc6514ee43974f2203">OptionGroupList</a></div><div class="ttdeci">struct OptionGroupList OptionGroupList</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aa60d6deab0047c29fc1f6602f812774f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f">parse_time_or_die</a></div><div class="ttdeci">int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00198">fftools_cmdutils.c:198</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aa64dcad44f54da335b337154d9e9950f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f">register_exit</a></div><div class="ttdeci">void register_exit(void(*cb)(int ret))</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00161">fftools_cmdutils.c:161</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aaf26a4937c16d8b7cb22a6542ebb46a5"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01413">fftools_cmdutils.c:1413</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aa60d6deab0047c29fc1f6602f812774f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aa60d6deab0047c29fc1f6602f812774f">parse_time_or_die</a></div><div class="ttdeci">int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00195">fftools_cmdutils.c:195</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aa64dcad44f54da335b337154d9e9950f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aa64dcad44f54da335b337154d9e9950f">register_exit</a></div><div class="ttdeci">void register_exit(void(*cb)(int ret))</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00158">fftools_cmdutils.c:158</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aae3aef834612a1e1bbd2442ecf839c55"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aae3aef834612a1e1bbd2442ecf839c55">get_preset_file</a></div><div class="ttdeci">FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02101">fftools_cmdutils.c:2101</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aaf26a4937c16d8b7cb22a6542ebb46a5"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01419">fftools_cmdutils.c:1419</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ab04ea1b4cb7ae1ddc63e3f014cae5515"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ab04ea1b4cb7ae1ddc63e3f014cae5515">Option</a></div><div class="ttdeci">struct Option Option</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_abf36bf94f15e662e7c435d6571182760"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#abf36bf94f15e662e7c435d6571182760">OptionGroup</a></div><div class="ttdeci">struct OptionGroup OptionGroup</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ac58552bde3a215ae94a3bd114577cbee"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee">uninit_opts</a></div><div class="ttdeci">void uninit_opts(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00121">fftools_cmdutils.c:121</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ac64f66a36c4ca887741fe28475a99b01"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01398">fftools_cmdutils.c:1398</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_acbabca98e694fea5c1b539b475e8cc6e"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e">show_help_default_ffprobe</a></div><div class="ttdeci">void show_help_default_ffprobe(const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l03418">fftools_ffprobe.c:3418</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ad41fedd149e409656cc5e266493d15d1"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1">hide_banner</a></div><div class="ttdeci">__thread int hide_banner</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00107">fftools_cmdutils.c:107</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_addb6306dc020aa290075bed9b1f42a3a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01712">fftools_cmdutils.c:1712</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae0e1bd04fd160c44d7e36623314380e4"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4">parse_optgroup</a></div><div class="ttdeci">int parse_optgroup(void *optctx, OptionGroup *g)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00452">fftools_cmdutils.c:452</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae2131affd4cd632364d24b0d0a809fc3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01104">fftools_cmdutils.c:1104</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ac58552bde3a215ae94a3bd114577cbee"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ac58552bde3a215ae94a3bd114577cbee">uninit_opts</a></div><div class="ttdeci">void uninit_opts(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00118">fftools_cmdutils.c:118</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ac64f66a36c4ca887741fe28475a99b01"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01404">fftools_cmdutils.c:1404</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_acbabca98e694fea5c1b539b475e8cc6e"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#acbabca98e694fea5c1b539b475e8cc6e">show_help_default_ffprobe</a></div><div class="ttdeci">void show_help_default_ffprobe(const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d78/fftools__ffprobe_8c_source.html#l03422">fftools_ffprobe.c:3422</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_acd90965dc8c1458acd18b24978ce3c12"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#acd90965dc8c1458acd18b24978ce3c12">grow_array</a></div><div class="ttdeci">void * grow_array(void *array, int elem_size, int *size, int new_size)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02237">fftools_cmdutils.c:2237</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ad0557532a11ce0dfa427a8a9e94b968b"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ad0557532a11ce0dfa427a8a9e94b968b">filter_codec_opts</a></div><div class="ttdeci">AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02159">fftools_cmdutils.c:2159</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ad41fedd149e409656cc5e266493d15d1"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ad41fedd149e409656cc5e266493d15d1">hide_banner</a></div><div class="ttdeci">__thread int hide_banner</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00109">fftools_cmdutils.c:109</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_addb6306dc020aa290075bed9b1f42a3a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01718">fftools_cmdutils.c:1718</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae0e1bd04fd160c44d7e36623314380e4"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ae0e1bd04fd160c44d7e36623314380e4">parse_optgroup</a></div><div class="ttdeci">int parse_optgroup(void *optctx, OptionGroup *g)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00447">fftools_cmdutils.c:447</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae2131affd4cd632364d24b0d0a809fc3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01110">fftools_cmdutils.c:1110</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae685e65315debd1ee1fc81b88f45568a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#ae685e65315debd1ee1fc81b88f45568a">OptionGroupDef</a></div><div class="ttdeci">struct OptionGroupDef OptionGroupDef</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae83addf5abc14d1dd046f315499ed6bf"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01099">fftools_cmdutils.c:1099</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aeb11173c4516257ff8fa004ad388e41a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a">init_opts</a></div><div class="ttdeci">void init_opts(void)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00116">fftools_cmdutils.c:116</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_ae83addf5abc14d1dd046f315499ed6bf"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01105">fftools_cmdutils.c:1105</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aeb11173c4516257ff8fa004ad388e41a"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aeb11173c4516257ff8fa004ad388e41a">init_opts</a></div><div class="ttdeci">void init_opts(void)</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aebd84ba49731e417f5495974444874b3"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aebd84ba49731e417f5495974444874b3">OptionDef</a></div><div class="ttdeci">struct OptionDef OptionDef</div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aed7606e2d2a9218a50ecbbc75a76aab7"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01774">fftools_cmdutils.c:1774</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aee611299e84dab23d614366f993e96ae"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae">parse_number_or_die</a></div><div class="ttdeci">double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00177">fftools_cmdutils.c:177</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aefe49155ac108fa47eee131a07fd856f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f">show_help_default_ffmpeg</a></div><div class="ttdeci">void show_help_default_ffmpeg(const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d66/fftools__ffmpeg__opt_8c_source.html#l03247">fftools_ffmpeg_opt.c:3247</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_af34c982b84b7c76d45edc5a7715a4fed"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01788">fftools_cmdutils.c:1788</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_af99b4b78c2355c81ff66ae146b92bc7b"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01408">fftools_cmdutils.c:1408</a></div></div>
<div class="ttc" id="afftools__ffmpeg__filter_8c_html_a61569f2965b7a369eb10b6d75d410d11"><div class="ttname"><a href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a></div><div class="ttdeci">int</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00200">fftools_ffmpeg_filter.c:200</a></div></div>
<div class="ttc" id="asaf__wrapper_8h_html"><div class="ttname"><a href="../../d6/d1f/saf__wrapper_8h.html">saf_wrapper.h</a></div></div>
<div class="ttc" id="astruct_option_def_html"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html">OptionDef</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00187">fftools_cmdutils.h:187</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aed7606e2d2a9218a50ecbbc75a76aab7"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01780">fftools_cmdutils.c:1780</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aee611299e84dab23d614366f993e96ae"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aee611299e84dab23d614366f993e96ae">parse_number_or_die</a></div><div class="ttdeci">double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l00174">fftools_cmdutils.c:174</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_aefe49155ac108fa47eee131a07fd856f"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#aefe49155ac108fa47eee131a07fd856f">show_help_default_ffmpeg</a></div><div class="ttdeci">void show_help_default_ffmpeg(const char *opt, const char *arg)</div><div class="ttdef"><b>Definition:</b> <a href="../../da/d66/fftools__ffmpeg__opt_8c_source.html#l03299">fftools_ffmpeg_opt.c:3299</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_af34c982b84b7c76d45edc5a7715a4fed"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01794">fftools_cmdutils.c:1794</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_af99b4b78c2355c81ff66ae146b92bc7b"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_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="../../d7/dcc/fftools__cmdutils_8c_source.html#l01414">fftools_cmdutils.c:1414</a></div></div>
<div class="ttc" id="afftools__cmdutils_8h_html_afe6a9f6163ee90a66f85595f7984b982"><div class="ttname"><a href="../../d8/d4e/fftools__cmdutils_8h.html#afe6a9f6163ee90a66f85595f7984b982">setup_find_stream_info_opts</a></div><div class="ttdeci">AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)</div><div class="ttdef"><b>Definition:</b> <a href="../../d7/dcc/fftools__cmdutils_8c_source.html#l02217">fftools_cmdutils.c:2217</a></div></div>
<div class="ttc" id="afftools__ffmpeg__filter_8c_html_a61569f2965b7a369eb10b6d75d410d11"><div class="ttname"><a href="../../d2/d36/fftools__ffmpeg__filter_8c.html#a61569f2965b7a369eb10b6d75d410d11">int</a></div><div class="ttdeci">int</div><div class="ttdef"><b>Definition:</b> <a href="../../d2/d36/fftools__ffmpeg__filter_8c_source.html#l00166">fftools_ffmpeg_filter.c:166</a></div></div>
<div class="ttc" id="astruct_option_def_html"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html">OptionDef</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00190">fftools_cmdutils.h:190</a></div></div>
<div class="ttc" id="astruct_option_def_html_a05e11e0c85a6fde13e30e19db1e30212"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a05e11e0c85a6fde13e30e19db1e30212">OptionDef::u</a></div><div class="ttdeci">union OptionDef::@1 u</div></div>
<div class="ttc" id="astruct_option_def_html_a061799fb9cc6538bd4af1b5f95d91014"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014">OptionDef::flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00189">fftools_cmdutils.h:189</a></div></div>
<div class="ttc" id="astruct_option_def_html_a1c25e8faf0036e9b0292fa0db6682d6c"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c">OptionDef::off</a></div><div class="ttdeci">size_t off</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00212">fftools_cmdutils.h:212</a></div></div>
<div class="ttc" id="astruct_option_def_html_a2948275f26ee39085beb74be603fde72"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72">OptionDef::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00188">fftools_cmdutils.h:188</a></div></div>
<div class="ttc" id="astruct_option_def_html_a38e18b48cea8c11195541d927361894f"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f">OptionDef::argname</a></div><div class="ttdeci">const char * argname</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00215">fftools_cmdutils.h:215</a></div></div>
<div class="ttc" id="astruct_option_def_html_a8a7986ef3a4c7564410f48f2fbbedf0c"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c">OptionDef::dst_ptr</a></div><div class="ttdeci">void * dst_ptr</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00210">fftools_cmdutils.h:210</a></div></div>
<div class="ttc" id="astruct_option_def_html_a8ec7c4e33bf6f8df2c708731422e9fd8"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8">OptionDef::help</a></div><div class="ttdeci">const char * help</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00214">fftools_cmdutils.h:214</a></div></div>
<div class="ttc" id="astruct_option_def_html_af4ef79476a47881699b234288bb79841"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841">OptionDef::func_arg</a></div><div class="ttdeci">int(* func_arg)(void *, const char *, const char *)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00211">fftools_cmdutils.h:211</a></div></div>
<div class="ttc" id="astruct_option_group_def_html"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00282">fftools_cmdutils.h:282</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a16482fd6723f260b266f8355822d08da"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da">OptionGroupDef::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00284">fftools_cmdutils.h:284</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a611c3e5d93946e4fcb00004ea3def028"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028">OptionGroupDef::sep</a></div><div class="ttdeci">const char * sep</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00289">fftools_cmdutils.h:289</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a901390d71176e1c4dc1f6040666aeff7"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7">OptionGroupDef::flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00294">fftools_cmdutils.h:294</a></div></div>
<div class="ttc" id="astruct_option_group_html"><div class="ttname"><a href="../../d6/d69/struct_option_group.html">OptionGroup</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00297">fftools_cmdutils.h:297</a></div></div>
<div class="ttc" id="astruct_option_group_html_a3f9b2ffe3ca6be24d4c9416a6ff7fe38"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38">OptionGroup::nb_opts</a></div><div class="ttdeci">int nb_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00302">fftools_cmdutils.h:302</a></div></div>
<div class="ttc" id="astruct_option_group_html_a6a5a1da6410548df3f0290dafd1075dd"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd">OptionGroup::group_def</a></div><div class="ttdeci">const OptionGroupDef * group_def</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00298">fftools_cmdutils.h:298</a></div></div>
<div class="ttc" id="astruct_option_group_html_aad0856a7bcf51e6d5e8b9d007d083910"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910">OptionGroup::codec_opts</a></div><div class="ttdeci">AVDictionary * codec_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00304">fftools_cmdutils.h:304</a></div></div>
<div class="ttc" id="astruct_option_group_html_aad5bf1f2e0e3da5827b689f94e05937d"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d">OptionGroup::swr_opts</a></div><div class="ttdeci">AVDictionary * swr_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00308">fftools_cmdutils.h:308</a></div></div>
<div class="ttc" id="astruct_option_group_html_ab9bf148a556ccce86462e948dd1dc856"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856">OptionGroup::opts</a></div><div class="ttdeci">Option * opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00301">fftools_cmdutils.h:301</a></div></div>
<div class="ttc" id="astruct_option_group_html_ad49cc9faed6022da9329fcd220c8467b"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b">OptionGroup::sws_dict</a></div><div class="ttdeci">AVDictionary * sws_dict</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00307">fftools_cmdutils.h:307</a></div></div>
<div class="ttc" id="astruct_option_group_html_ade02874f0cc6716575a7d02e3c38ac95"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95">OptionGroup::arg</a></div><div class="ttdeci">const char * arg</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00299">fftools_cmdutils.h:299</a></div></div>
<div class="ttc" id="astruct_option_group_html_aeac5e8e830df2e99aadfe65a471ce8fb"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb">OptionGroup::format_opts</a></div><div class="ttdeci">AVDictionary * format_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00305">fftools_cmdutils.h:305</a></div></div>
<div class="ttc" id="astruct_option_group_html_aee5e1f251f3d88c41a505d0655b410d9"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9">OptionGroup::resample_opts</a></div><div class="ttdeci">AVDictionary * resample_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00306">fftools_cmdutils.h:306</a></div></div>
<div class="ttc" id="astruct_option_group_list_html"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00315">fftools_cmdutils.h:315</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a6ca02ccb04349c3759d6cdf4ef335202"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202">OptionGroupList::nb_groups</a></div><div class="ttdeci">int nb_groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00319">fftools_cmdutils.h:319</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a825edf37567a1a7b5ccf81ae6b54827a"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a">OptionGroupList::groups</a></div><div class="ttdeci">OptionGroup * groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00318">fftools_cmdutils.h:318</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a8adab84b1aaa305b1aec3add781f0a64"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64">OptionGroupList::group_def</a></div><div class="ttdeci">const OptionGroupDef * group_def</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00316">fftools_cmdutils.h:316</a></div></div>
<div class="ttc" id="astruct_option_html"><div class="ttname"><a href="../../d3/d1d/struct_option.html">Option</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00276">fftools_cmdutils.h:276</a></div></div>
<div class="ttc" id="astruct_option_html_a16d977bce49a6da603426937ff7b6617"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617">Option::key</a></div><div class="ttdeci">const char * key</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00278">fftools_cmdutils.h:278</a></div></div>
<div class="ttc" id="astruct_option_html_a3b25df629d81a005daeb930f12560edc"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc">Option::opt</a></div><div class="ttdeci">const OptionDef * opt</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00277">fftools_cmdutils.h:277</a></div></div>
<div class="ttc" id="astruct_option_html_a4dc04a99a38324c37ad89101d720e236"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236">Option::val</a></div><div class="ttdeci">const char * val</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00279">fftools_cmdutils.h:279</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00322">fftools_cmdutils.h:322</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_a1aea6da0c95924fa2d68bae2a404bd32"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32">OptionParseContext::global_opts</a></div><div class="ttdeci">OptionGroup global_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00323">fftools_cmdutils.h:323</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_a7068ca695402a957d1e326faa065e4f7"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7">OptionParseContext::nb_groups</a></div><div class="ttdeci">int nb_groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00326">fftools_cmdutils.h:326</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_ac495a79844c7d896aadd2d7a3cb95993"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993">OptionParseContext::groups</a></div><div class="ttdeci">OptionGroupList * groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00325">fftools_cmdutils.h:325</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_aeee35d464ee609c78c9363cd54b7db13"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13">OptionParseContext::cur_group</a></div><div class="ttdeci">OptionGroup cur_group</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00329">fftools_cmdutils.h:329</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html">SpecifierOpt</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00175">fftools_cmdutils.h:175</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a09d09953c0263bc3992d7b8f4c1fcfc7"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7">SpecifierOpt::f</a></div><div class="ttdeci">float f</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00182">fftools_cmdutils.h:182</a></div></div>
<div class="ttc" id="astruct_option_def_html_a061799fb9cc6538bd4af1b5f95d91014"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a061799fb9cc6538bd4af1b5f95d91014">OptionDef::flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00192">fftools_cmdutils.h:192</a></div></div>
<div class="ttc" id="astruct_option_def_html_a1c25e8faf0036e9b0292fa0db6682d6c"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a1c25e8faf0036e9b0292fa0db6682d6c">OptionDef::off</a></div><div class="ttdeci">size_t off</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00215">fftools_cmdutils.h:215</a></div></div>
<div class="ttc" id="astruct_option_def_html_a2948275f26ee39085beb74be603fde72"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a2948275f26ee39085beb74be603fde72">OptionDef::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00191">fftools_cmdutils.h:191</a></div></div>
<div class="ttc" id="astruct_option_def_html_a38e18b48cea8c11195541d927361894f"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a38e18b48cea8c11195541d927361894f">OptionDef::argname</a></div><div class="ttdeci">const char * argname</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00218">fftools_cmdutils.h:218</a></div></div>
<div class="ttc" id="astruct_option_def_html_a8a7986ef3a4c7564410f48f2fbbedf0c"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a8a7986ef3a4c7564410f48f2fbbedf0c">OptionDef::dst_ptr</a></div><div class="ttdeci">void * dst_ptr</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00213">fftools_cmdutils.h:213</a></div></div>
<div class="ttc" id="astruct_option_def_html_a8ec7c4e33bf6f8df2c708731422e9fd8"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#a8ec7c4e33bf6f8df2c708731422e9fd8">OptionDef::help</a></div><div class="ttdeci">const char * help</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00217">fftools_cmdutils.h:217</a></div></div>
<div class="ttc" id="astruct_option_def_html_af4ef79476a47881699b234288bb79841"><div class="ttname"><a href="../../dc/d1e/struct_option_def.html#af4ef79476a47881699b234288bb79841">OptionDef::func_arg</a></div><div class="ttdeci">int(* func_arg)(void *, const char *, const char *)</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00214">fftools_cmdutils.h:214</a></div></div>
<div class="ttc" id="astruct_option_group_def_html"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html">OptionGroupDef</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00285">fftools_cmdutils.h:285</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a16482fd6723f260b266f8355822d08da"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a16482fd6723f260b266f8355822d08da">OptionGroupDef::name</a></div><div class="ttdeci">const char * name</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00287">fftools_cmdutils.h:287</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a611c3e5d93946e4fcb00004ea3def028"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a611c3e5d93946e4fcb00004ea3def028">OptionGroupDef::sep</a></div><div class="ttdeci">const char * sep</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00292">fftools_cmdutils.h:292</a></div></div>
<div class="ttc" id="astruct_option_group_def_html_a901390d71176e1c4dc1f6040666aeff7"><div class="ttname"><a href="../../db/dd7/struct_option_group_def.html#a901390d71176e1c4dc1f6040666aeff7">OptionGroupDef::flags</a></div><div class="ttdeci">int flags</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00297">fftools_cmdutils.h:297</a></div></div>
<div class="ttc" id="astruct_option_group_html"><div class="ttname"><a href="../../d6/d69/struct_option_group.html">OptionGroup</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00300">fftools_cmdutils.h:300</a></div></div>
<div class="ttc" id="astruct_option_group_html_a3f9b2ffe3ca6be24d4c9416a6ff7fe38"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#a3f9b2ffe3ca6be24d4c9416a6ff7fe38">OptionGroup::nb_opts</a></div><div class="ttdeci">int nb_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00305">fftools_cmdutils.h:305</a></div></div>
<div class="ttc" id="astruct_option_group_html_a6a5a1da6410548df3f0290dafd1075dd"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#a6a5a1da6410548df3f0290dafd1075dd">OptionGroup::group_def</a></div><div class="ttdeci">const OptionGroupDef * group_def</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00301">fftools_cmdutils.h:301</a></div></div>
<div class="ttc" id="astruct_option_group_html_aad0856a7bcf51e6d5e8b9d007d083910"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aad0856a7bcf51e6d5e8b9d007d083910">OptionGroup::codec_opts</a></div><div class="ttdeci">AVDictionary * codec_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00307">fftools_cmdutils.h:307</a></div></div>
<div class="ttc" id="astruct_option_group_html_aad5bf1f2e0e3da5827b689f94e05937d"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aad5bf1f2e0e3da5827b689f94e05937d">OptionGroup::swr_opts</a></div><div class="ttdeci">AVDictionary * swr_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00311">fftools_cmdutils.h:311</a></div></div>
<div class="ttc" id="astruct_option_group_html_ab9bf148a556ccce86462e948dd1dc856"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ab9bf148a556ccce86462e948dd1dc856">OptionGroup::opts</a></div><div class="ttdeci">Option * opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00304">fftools_cmdutils.h:304</a></div></div>
<div class="ttc" id="astruct_option_group_html_ad49cc9faed6022da9329fcd220c8467b"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ad49cc9faed6022da9329fcd220c8467b">OptionGroup::sws_dict</a></div><div class="ttdeci">AVDictionary * sws_dict</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00310">fftools_cmdutils.h:310</a></div></div>
<div class="ttc" id="astruct_option_group_html_ade02874f0cc6716575a7d02e3c38ac95"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#ade02874f0cc6716575a7d02e3c38ac95">OptionGroup::arg</a></div><div class="ttdeci">const char * arg</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00302">fftools_cmdutils.h:302</a></div></div>
<div class="ttc" id="astruct_option_group_html_aeac5e8e830df2e99aadfe65a471ce8fb"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aeac5e8e830df2e99aadfe65a471ce8fb">OptionGroup::format_opts</a></div><div class="ttdeci">AVDictionary * format_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00308">fftools_cmdutils.h:308</a></div></div>
<div class="ttc" id="astruct_option_group_html_aee5e1f251f3d88c41a505d0655b410d9"><div class="ttname"><a href="../../d6/d69/struct_option_group.html#aee5e1f251f3d88c41a505d0655b410d9">OptionGroup::resample_opts</a></div><div class="ttdeci">AVDictionary * resample_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00309">fftools_cmdutils.h:309</a></div></div>
<div class="ttc" id="astruct_option_group_list_html"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html">OptionGroupList</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00318">fftools_cmdutils.h:318</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a6ca02ccb04349c3759d6cdf4ef335202"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a6ca02ccb04349c3759d6cdf4ef335202">OptionGroupList::nb_groups</a></div><div class="ttdeci">int nb_groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00322">fftools_cmdutils.h:322</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a825edf37567a1a7b5ccf81ae6b54827a"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a825edf37567a1a7b5ccf81ae6b54827a">OptionGroupList::groups</a></div><div class="ttdeci">OptionGroup * groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00321">fftools_cmdutils.h:321</a></div></div>
<div class="ttc" id="astruct_option_group_list_html_a8adab84b1aaa305b1aec3add781f0a64"><div class="ttname"><a href="../../d7/d4f/struct_option_group_list.html#a8adab84b1aaa305b1aec3add781f0a64">OptionGroupList::group_def</a></div><div class="ttdeci">const OptionGroupDef * group_def</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00319">fftools_cmdutils.h:319</a></div></div>
<div class="ttc" id="astruct_option_html"><div class="ttname"><a href="../../d3/d1d/struct_option.html">Option</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00279">fftools_cmdutils.h:279</a></div></div>
<div class="ttc" id="astruct_option_html_a16d977bce49a6da603426937ff7b6617"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a16d977bce49a6da603426937ff7b6617">Option::key</a></div><div class="ttdeci">const char * key</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00281">fftools_cmdutils.h:281</a></div></div>
<div class="ttc" id="astruct_option_html_a3b25df629d81a005daeb930f12560edc"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a3b25df629d81a005daeb930f12560edc">Option::opt</a></div><div class="ttdeci">const OptionDef * opt</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00280">fftools_cmdutils.h:280</a></div></div>
<div class="ttc" id="astruct_option_html_a4dc04a99a38324c37ad89101d720e236"><div class="ttname"><a href="../../d3/d1d/struct_option.html#a4dc04a99a38324c37ad89101d720e236">Option::val</a></div><div class="ttdeci">const char * val</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00282">fftools_cmdutils.h:282</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html">OptionParseContext</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00325">fftools_cmdutils.h:325</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_a1aea6da0c95924fa2d68bae2a404bd32"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#a1aea6da0c95924fa2d68bae2a404bd32">OptionParseContext::global_opts</a></div><div class="ttdeci">OptionGroup global_opts</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00326">fftools_cmdutils.h:326</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_a7068ca695402a957d1e326faa065e4f7"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#a7068ca695402a957d1e326faa065e4f7">OptionParseContext::nb_groups</a></div><div class="ttdeci">int nb_groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00329">fftools_cmdutils.h:329</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_ac495a79844c7d896aadd2d7a3cb95993"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#ac495a79844c7d896aadd2d7a3cb95993">OptionParseContext::groups</a></div><div class="ttdeci">OptionGroupList * groups</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00328">fftools_cmdutils.h:328</a></div></div>
<div class="ttc" id="astruct_option_parse_context_html_aeee35d464ee609c78c9363cd54b7db13"><div class="ttname"><a href="../../db/db5/struct_option_parse_context.html#aeee35d464ee609c78c9363cd54b7db13">OptionParseContext::cur_group</a></div><div class="ttdeci">OptionGroup cur_group</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00332">fftools_cmdutils.h:332</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html">SpecifierOpt</a></div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00178">fftools_cmdutils.h:178</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a09d09953c0263bc3992d7b8f4c1fcfc7"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a09d09953c0263bc3992d7b8f4c1fcfc7">SpecifierOpt::f</a></div><div class="ttdeci">float f</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00185">fftools_cmdutils.h:185</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a396d3e67fde3c170cda70842a1c35521"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a396d3e67fde3c170cda70842a1c35521">SpecifierOpt::u</a></div><div class="ttdeci">union SpecifierOpt::@0 u</div></div>
<div class="ttc" id="astruct_specifier_opt_html_a491092bfda9281b509e9f62195490ce4"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4">SpecifierOpt::str</a></div><div class="ttdeci">uint8_t * str</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00178">fftools_cmdutils.h:178</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a6c08432480e1b685cde8b3f99c87f8a3"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3">SpecifierOpt::i64</a></div><div class="ttdeci">int64_t i64</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00180">fftools_cmdutils.h:180</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a7d6d60788f2f4e5bca13634aba58177f"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f">SpecifierOpt::i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00179">fftools_cmdutils.h:179</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a98076882e1cf6bb72d03e2f313cb0f1d"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d">SpecifierOpt::ui64</a></div><div class="ttdeci">uint64_t ui64</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00181">fftools_cmdutils.h:181</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_aa943620407012bf50d260ec74200d25c"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c">SpecifierOpt::dbl</a></div><div class="ttdeci">double dbl</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00183">fftools_cmdutils.h:183</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_ab83e423aec2a2d42a29daae047dcdb81"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81">SpecifierOpt::specifier</a></div><div class="ttdeci">char * specifier</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00176">fftools_cmdutils.h:176</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a491092bfda9281b509e9f62195490ce4"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a491092bfda9281b509e9f62195490ce4">SpecifierOpt::str</a></div><div class="ttdeci">uint8_t * str</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00181">fftools_cmdutils.h:181</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a6c08432480e1b685cde8b3f99c87f8a3"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a6c08432480e1b685cde8b3f99c87f8a3">SpecifierOpt::i64</a></div><div class="ttdeci">int64_t i64</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00183">fftools_cmdutils.h:183</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a7d6d60788f2f4e5bca13634aba58177f"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a7d6d60788f2f4e5bca13634aba58177f">SpecifierOpt::i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00182">fftools_cmdutils.h:182</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_a98076882e1cf6bb72d03e2f313cb0f1d"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#a98076882e1cf6bb72d03e2f313cb0f1d">SpecifierOpt::ui64</a></div><div class="ttdeci">uint64_t ui64</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00184">fftools_cmdutils.h:184</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_aa943620407012bf50d260ec74200d25c"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#aa943620407012bf50d260ec74200d25c">SpecifierOpt::dbl</a></div><div class="ttdeci">double dbl</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00186">fftools_cmdutils.h:186</a></div></div>
<div class="ttc" id="astruct_specifier_opt_html_ab83e423aec2a2d42a29daae047dcdb81"><div class="ttname"><a href="../../dd/da5/struct_specifier_opt.html#ab83e423aec2a2d42a29daae047dcdb81">SpecifierOpt::specifier</a></div><div class="ttdeci">char * specifier</div><div class="ttdef"><b>Definition:</b> <a href="../../d8/d4e/fftools__cmdutils_8h_source.html#l00179">fftools_cmdutils.h:179</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 1 2021 23:46:50 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
Generated on Sat Sep 18 2021 14:51:02 for FFmpegKit Android API by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2
</small></address>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save