first commit
This commit is contained in:
20
_readme.txt
Normal file
20
_readme.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
0. 모든 cmd 경로에서 python 3.1X 실행 가능하도록 설정
|
||||||
|
1. msvc 2010 express 설치
|
||||||
|
- C:\\PROGRAM FILES (X86)\\MICROSOFT VISUAL STUDIO 10.0\\VC\\BIN
|
||||||
|
필요시 WINDOWS SDK 설치
|
||||||
|
- C:\\PROGRAM FILES (X86)\\MICROSOFT SDKS\\WINDOWS\\V7.0A\\BIN
|
||||||
|
2. Qt Creator 10(?) = IDE 설치 Creator 버전은 특별히 관계 없음
|
||||||
|
3. C:\Qt\5.5 폴더에 Qt SDK(Qt5.5.7z) 압축해제
|
||||||
|
4. C:\home\fmviewer3 에 fmviewer 압축해제
|
||||||
|
5. INNO SETUP 6 설치 (경로 = C:\\PROGRAM FILES (X86)\\INNO SETUP 6)
|
||||||
|
6. C:\home\fmviewer3\script\build.bat 으로 빌드
|
||||||
|
- 아래 경로는 build_fm.py 에서 설정하는 PATH 로 QTCREATOR 설치 경로에 따라 설정 또는 build_fm.py 내의 경로를 수정
|
||||||
|
- 'C:\\QT\\QTCREATOR-4.3.1\\BIN',
|
||||||
|
- 'C:\\QT\\TOOLS\\QTCREATOR\\BIN',
|
||||||
|
- 'C:\\QT\\TOOLS\\QTCREATOR\\BIN\\JOM',
|
||||||
|
7. Qt Creator 실행 후 C:\home\fmviewer3\project\fm_viewer\fm_viewer.pro (프로젝트) 파일 열기
|
||||||
|
- Qt Creator 와 Qt SDK 를 별도로 설치했을 경우
|
||||||
|
- 좌측 Projects->(상단)Manage Kits 에서 -> Qt Versions 탭 에서 Add -> C:\Qt\5.5 폴더를 선택하여 Manual Qt 설정 추가
|
||||||
|
- Compiler C,C++ 모두를 Microsoft Visual C++ Compiler 10.0 선택
|
||||||
|
8. Qt Creator 버전에 따라 코드 편집이 어려울 정도로 Clang (Auto format...) 설정이 되어 있으니 필요시 Gemini AI 참조하여 불필요한 설정 해제
|
||||||
|
|
||||||
392
project/_build_fm/Makefile
Normal file
392
project/_build_fm/Makefile
Normal file
@@ -0,0 +1,392 @@
|
|||||||
|
#############################################################################
|
||||||
|
# Makefile for building: viewer
|
||||||
|
# Generated by qmake (3.0) (Qt 5.5.1)
|
||||||
|
# Project: ..\fm_viewer\fm_viewer.pro
|
||||||
|
# Template: app
|
||||||
|
# Command: C:\QT\5.5\MSVC2010\BIN\qmake.exe -spec win32-msvc2010 "CONFIG+=Release" "DEFINES+=EMT_KOR1" -o Makefile ..\fm_viewer\fm_viewer.pro
|
||||||
|
#############################################################################
|
||||||
|
|
||||||
|
MAKEFILE = Makefile
|
||||||
|
|
||||||
|
first: release
|
||||||
|
install: release-install
|
||||||
|
uninstall: release-uninstall
|
||||||
|
QMAKE = C:\QT\5.5\MSVC2010\BIN\qmake.exe
|
||||||
|
DEL_FILE = del
|
||||||
|
CHK_DIR_EXISTS= if not exist
|
||||||
|
MKDIR = mkdir
|
||||||
|
COPY = copy /y
|
||||||
|
COPY_FILE = copy /y
|
||||||
|
COPY_DIR = xcopy /s /q /y /i
|
||||||
|
INSTALL_FILE = copy /y
|
||||||
|
INSTALL_PROGRAM = copy /y
|
||||||
|
INSTALL_DIR = xcopy /s /q /y /i
|
||||||
|
DEL_FILE = del
|
||||||
|
SYMLINK = $(QMAKE) -install ln -f -s
|
||||||
|
DEL_DIR = rmdir
|
||||||
|
MOVE = move
|
||||||
|
SUBTARGETS = \
|
||||||
|
release \
|
||||||
|
debug
|
||||||
|
|
||||||
|
|
||||||
|
release: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release
|
||||||
|
release-make_first: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release
|
||||||
|
release-all: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release all
|
||||||
|
release-clean: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release clean
|
||||||
|
release-distclean: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release distclean
|
||||||
|
release-install: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release install
|
||||||
|
release-uninstall: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release uninstall
|
||||||
|
debug: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug
|
||||||
|
debug-make_first: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug
|
||||||
|
debug-all: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug all
|
||||||
|
debug-clean: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug clean
|
||||||
|
debug-distclean: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug distclean
|
||||||
|
debug-install: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug install
|
||||||
|
debug-uninstall: FORCE
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug uninstall
|
||||||
|
|
||||||
|
Makefile: ..\fm_viewer\fm_viewer.pro ..\..\..\..\QT\5.5\MSVC2010\mkspecs\win32-msvc2010\qmake.conf ..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\spec_pre.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\common\msvc-desktop.conf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\qconfig.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcollision.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcollision_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcore.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcore_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dinput.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dinput_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dlogic.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dlogic_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquick.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquick_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquickrenderer.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquickrenderer_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3drenderer.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3drenderer_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axbase.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axbase_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axcontainer.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axcontainer_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axserver.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axserver_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bluetooth.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bluetooth_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bootstrap_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_clucene_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_concurrent.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_concurrent_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_core.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_core_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_dbus.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_dbus_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_declarative.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_declarative_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designer.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designer_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designercomponents_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_enginio.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_enginio_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_gui.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_gui_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_help.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_help_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_location.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_location_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimedia.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimedia_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimediawidgets.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimediawidgets_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_network.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_network_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_nfc.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_nfc_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_opengl.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_opengl_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_openglextensions.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_openglextensions_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_platformsupport_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_positioning.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_positioning_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_printsupport.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_printsupport_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qml.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qml_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmldevtools_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmltest.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmltest_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quick.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quick_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickparticles_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickwidgets.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickwidgets_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_script.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_script_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_scripttools.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_scripttools_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sensors.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sensors_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_serialport.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_serialport_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sql.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sql_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_svg.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_svg_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_testlib.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_testlib_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uiplugin.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uitools.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uitools_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webchannel.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webchannel_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkit.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkit_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkitwidgets.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkitwidgets_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_websockets.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_websockets_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_widgets.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_widgets_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_winextras.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_winextras_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xml.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xml_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xmlpatterns.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xmlpatterns_private.pri \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt_functions.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt_config.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\qt_config.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\win32-msvc2010\qmake.conf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\spec_post.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exclusive_builds.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\default_pre.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\default_pre.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\resolve_config.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exclusive_builds_post.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\default_post.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\rtti.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\precompile_header.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\warn_on.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\resources.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\moc.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\opengl.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\uic.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\dumpcpp.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\windows.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\testcase_targets.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exceptions.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\yacc.prf \
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\lex.prf \
|
||||||
|
..\fm_viewer\fm_viewer.pro \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/qtmain.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5AxContainer.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5AxBase.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Widgets.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Gui.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Concurrent.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Network.prl \
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Core.prl
|
||||||
|
$(QMAKE) -spec win32-msvc2010 "CONFIG+=Release" "DEFINES+=EMT_KOR1" -o Makefile ..\fm_viewer\fm_viewer.pro
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\spec_pre.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\common\msvc-desktop.conf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\qconfig.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcollision.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcollision_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcore.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dcore_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dinput.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dinput_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dlogic.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dlogic_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquick.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquick_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquickrenderer.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3dquickrenderer_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3drenderer.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_3drenderer_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axbase.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axbase_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axcontainer.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axcontainer_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axserver.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_axserver_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bluetooth.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bluetooth_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_bootstrap_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_clucene_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_concurrent.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_concurrent_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_core.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_core_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_dbus.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_dbus_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_declarative.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_declarative_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designer.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designer_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_designercomponents_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_enginio.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_enginio_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_gui.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_gui_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_help.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_help_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_location.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_location_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimedia.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimedia_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimediawidgets.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_multimediawidgets_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_network.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_network_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_nfc.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_nfc_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_opengl.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_opengl_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_openglextensions.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_openglextensions_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_platformsupport_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_positioning.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_positioning_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_printsupport.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_printsupport_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qml.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qml_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmldevtools_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmltest.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qmltest_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_qtmultimediaquicktools_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quick.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quick_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickparticles_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickwidgets.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_quickwidgets_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_script.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_script_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_scripttools.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_scripttools_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sensors.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sensors_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_serialport.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_serialport_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sql.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_sql_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_svg.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_svg_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_testlib.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_testlib_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uiplugin.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uitools.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_uitools_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webchannel.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webchannel_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkit.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkit_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkitwidgets.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_webkitwidgets_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_websockets.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_websockets_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_widgets.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_widgets_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_winextras.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_winextras_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xml.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xml_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xmlpatterns.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\modules\qt_lib_xmlpatterns_private.pri:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt_functions.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt_config.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\qt_config.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\win32-msvc2010\qmake.conf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\spec_post.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exclusive_builds.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\default_pre.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\default_pre.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\resolve_config.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exclusive_builds_post.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\default_post.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\rtti.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\precompile_header.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\warn_on.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\qt.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\resources.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\moc.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\opengl.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\uic.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\dumpcpp.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\win32\windows.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\testcase_targets.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\exceptions.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\yacc.prf:
|
||||||
|
..\..\..\..\QT\5.5\MSVC2010\mkspecs\features\lex.prf:
|
||||||
|
..\fm_viewer\fm_viewer.pro:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/qtmain.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5AxContainer.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5AxBase.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Widgets.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Gui.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Concurrent.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Network.prl:
|
||||||
|
C:/QT/5.5/MSVC2010/lib/Qt5Core.prl:
|
||||||
|
qmake: FORCE
|
||||||
|
@$(QMAKE) -spec win32-msvc2010 "CONFIG+=Release" "DEFINES+=EMT_KOR1" -o Makefile ..\fm_viewer\fm_viewer.pro
|
||||||
|
|
||||||
|
qmake_all: FORCE
|
||||||
|
|
||||||
|
make_first: release-make_first debug-make_first FORCE
|
||||||
|
all: release-all debug-all FORCE
|
||||||
|
clean: release-clean debug-clean FORCE
|
||||||
|
-$(DEL_FILE) viewer.exp
|
||||||
|
distclean: release-distclean debug-distclean FORCE
|
||||||
|
-$(DEL_FILE) Makefile
|
||||||
|
-$(DEL_FILE) viewer.lib viewer.pdb
|
||||||
|
|
||||||
|
release-mocclean:
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release mocclean
|
||||||
|
debug-mocclean:
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug mocclean
|
||||||
|
mocclean: release-mocclean debug-mocclean
|
||||||
|
|
||||||
|
release-mocables:
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Release mocables
|
||||||
|
debug-mocables:
|
||||||
|
@set MAKEFLAGS=$(MAKEFLAGS)
|
||||||
|
$(MAKE) -f $(MAKEFILE).Debug mocables
|
||||||
|
mocables: release-mocables debug-mocables
|
||||||
|
|
||||||
|
check: first
|
||||||
|
FORCE:
|
||||||
|
|
||||||
|
$(MAKEFILE).Release: Makefile
|
||||||
|
$(MAKEFILE).Debug: Makefile
|
||||||
43994
project/_build_fm/Makefile.Debug
Normal file
43994
project/_build_fm/Makefile.Debug
Normal file
File diff suppressed because one or more lines are too long
43983
project/_build_fm/Makefile.Release
Normal file
43983
project/_build_fm/Makefile.Release
Normal file
File diff suppressed because one or more lines are too long
BIN
project/_build_fm/release/D3Dcompiler_43.dll
Normal file
BIN
project/_build_fm/release/D3Dcompiler_43.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/Qt5Core.dll
Normal file
BIN
project/_build_fm/release/Qt5Core.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/Qt5Gui.dll
Normal file
BIN
project/_build_fm/release/Qt5Gui.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/Qt5Network.dll
Normal file
BIN
project/_build_fm/release/Qt5Network.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/Qt5Svg.dll
Normal file
BIN
project/_build_fm/release/Qt5Svg.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/Qt5Widgets.dll
Normal file
BIN
project/_build_fm/release/Qt5Widgets.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/avcodec-57.dll
Normal file
BIN
project/_build_fm/release/avcodec-57.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/avfilter-6.dll
Normal file
BIN
project/_build_fm/release/avfilter-6.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/avformat-57.dll
Normal file
BIN
project/_build_fm/release/avformat-57.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/avresample-3.dll
Normal file
BIN
project/_build_fm/release/avresample-3.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/avutil-55.dll
Normal file
BIN
project/_build_fm/release/avutil-55.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/bearer/qgenericbearer.dll
Normal file
BIN
project/_build_fm/release/bearer/qgenericbearer.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/bearer/qnativewifibearer.dll
Normal file
BIN
project/_build_fm/release/bearer/qnativewifibearer.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/iconengines/qsvgicon.dll
Normal file
BIN
project/_build_fm/release/iconengines/qsvgicon.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qdds.dll
Normal file
BIN
project/_build_fm/release/imageformats/qdds.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qgif.dll
Normal file
BIN
project/_build_fm/release/imageformats/qgif.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qicns.dll
Normal file
BIN
project/_build_fm/release/imageformats/qicns.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qico.dll
Normal file
BIN
project/_build_fm/release/imageformats/qico.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qjp2.dll
Normal file
BIN
project/_build_fm/release/imageformats/qjp2.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qjpeg.dll
Normal file
BIN
project/_build_fm/release/imageformats/qjpeg.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qmng.dll
Normal file
BIN
project/_build_fm/release/imageformats/qmng.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qsvg.dll
Normal file
BIN
project/_build_fm/release/imageformats/qsvg.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qtga.dll
Normal file
BIN
project/_build_fm/release/imageformats/qtga.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qtiff.dll
Normal file
BIN
project/_build_fm/release/imageformats/qtiff.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qwbmp.dll
Normal file
BIN
project/_build_fm/release/imageformats/qwbmp.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/imageformats/qwebp.dll
Normal file
BIN
project/_build_fm/release/imageformats/qwebp.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/libEGL.dll
Normal file
BIN
project/_build_fm/release/libEGL.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/libGLESV2.dll
Normal file
BIN
project/_build_fm/release/libGLESV2.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/libeay32.dll
Normal file
BIN
project/_build_fm/release/libeay32.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/libwebview2.dll
Normal file
BIN
project/_build_fm/release/libwebview2.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/msvcp100.dll
Normal file
BIN
project/_build_fm/release/msvcp100.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/msvcr100.dll
Normal file
BIN
project/_build_fm/release/msvcr100.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/opengl32sw.dll
Normal file
BIN
project/_build_fm/release/opengl32sw.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/platforms/qwindows.dll
Normal file
BIN
project/_build_fm/release/platforms/qwindows.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/portaudio_x86.dll
Normal file
BIN
project/_build_fm/release/portaudio_x86.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/ssleay32.dll
Normal file
BIN
project/_build_fm/release/ssleay32.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/swresample-2.dll
Normal file
BIN
project/_build_fm/release/swresample-2.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/swscale-4.dll
Normal file
BIN
project/_build_fm/release/swscale-4.dll
Normal file
Binary file not shown.
BIN
project/_build_fm/release/viewer.exe
Normal file
BIN
project/_build_fm/release/viewer.exe
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/avcodec-57.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/avcodec-57.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/avfilter-6.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/avfilter-6.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/avformat-57.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/avformat-57.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/avresample-3.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/avresample-3.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/avutil-55.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/avutil-55.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/portaudio_x86.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/portaudio_x86.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/swresample-2.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/swresample-2.dll
Normal file
Binary file not shown.
BIN
project/ffmpeg_dll_compact_348/bin/swscale-4.dll
Normal file
BIN
project/ffmpeg_dll_compact_348/bin/swscale-4.dll
Normal file
Binary file not shown.
@@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* AC-3 parser prototypes
|
||||||
|
* Copyright (c) 2003 Fabrice Bellard
|
||||||
|
* Copyright (c) 2003 Michael Niedermayer
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_AC3_PARSER_H
|
||||||
|
#define AVCODEC_AC3_PARSER_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract the bitstream ID and the frame size from AC-3 data.
|
||||||
|
*/
|
||||||
|
int av_ac3_parse_header(const uint8_t *buf, size_t size,
|
||||||
|
uint8_t *bitstream_id, uint16_t *frame_size);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* AVCODEC_AC3_PARSER_H */
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_ADTS_PARSER_H
|
||||||
|
#define AVCODEC_ADTS_PARSER_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define AV_AAC_ADTS_HEADER_SIZE 7
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extract the number of samples and frames from AAC data.
|
||||||
|
* @param[in] buf pointer to AAC data buffer
|
||||||
|
* @param[out] samples Pointer to where number of samples is written
|
||||||
|
* @param[out] frames Pointer to where number of frames is written
|
||||||
|
* @return Returns 0 on success, error code on failure.
|
||||||
|
*/
|
||||||
|
int av_adts_header_parse(const uint8_t *buf, uint32_t *samples,
|
||||||
|
uint8_t *frames);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_ADTS_PARSER_H */
|
||||||
6425
project/ffmpeg_dll_compact_348/include/libavcodec/avcodec.h
Normal file
6425
project/ffmpeg_dll_compact_348/include/libavcodec/avcodec.h
Normal file
File diff suppressed because it is too large
Load Diff
84
project/ffmpeg_dll_compact_348/include/libavcodec/avdct.h
Normal file
84
project/ffmpeg_dll_compact_348/include/libavcodec/avdct.h
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_AVDCT_H
|
||||||
|
#define AVCODEC_AVDCT_H
|
||||||
|
|
||||||
|
#include "libavutil/opt.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AVDCT context.
|
||||||
|
* @note function pointers can be NULL if the specific features have been
|
||||||
|
* disabled at build time.
|
||||||
|
*/
|
||||||
|
typedef struct AVDCT {
|
||||||
|
const AVClass *av_class;
|
||||||
|
|
||||||
|
void (*idct)(int16_t *block /* align 16 */);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IDCT input permutation.
|
||||||
|
* Several optimized IDCTs need a permutated input (relative to the
|
||||||
|
* normal order of the reference IDCT).
|
||||||
|
* This permutation must be performed before the idct_put/add.
|
||||||
|
* Note, normally this can be merged with the zigzag/alternate scan<br>
|
||||||
|
* An example to avoid confusion:
|
||||||
|
* - (->decode coeffs -> zigzag reorder -> dequant -> reference IDCT -> ...)
|
||||||
|
* - (x -> reference DCT -> reference IDCT -> x)
|
||||||
|
* - (x -> reference DCT -> simple_mmx_perm = idct_permutation
|
||||||
|
* -> simple_idct_mmx -> x)
|
||||||
|
* - (-> decode coeffs -> zigzag reorder -> simple_mmx_perm -> dequant
|
||||||
|
* -> simple_idct_mmx -> ...)
|
||||||
|
*/
|
||||||
|
uint8_t idct_permutation[64];
|
||||||
|
|
||||||
|
void (*fdct)(int16_t *block /* align 16 */);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DCT algorithm.
|
||||||
|
* must use AVOptions to set this field.
|
||||||
|
*/
|
||||||
|
int dct_algo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IDCT algorithm.
|
||||||
|
* must use AVOptions to set this field.
|
||||||
|
*/
|
||||||
|
int idct_algo;
|
||||||
|
|
||||||
|
void (*get_pixels)(int16_t *block /* align 16 */,
|
||||||
|
const uint8_t *pixels /* align 8 */,
|
||||||
|
ptrdiff_t line_size);
|
||||||
|
|
||||||
|
int bits_per_sample;
|
||||||
|
} AVDCT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates a AVDCT context.
|
||||||
|
* This needs to be initialized with avcodec_dct_init() after optionally
|
||||||
|
* configuring it with AVOptions.
|
||||||
|
*
|
||||||
|
* To free it use av_free()
|
||||||
|
*/
|
||||||
|
AVDCT *avcodec_dct_alloc(void);
|
||||||
|
int avcodec_dct_init(AVDCT *);
|
||||||
|
|
||||||
|
const AVClass *avcodec_dct_get_class(void);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_AVDCT_H */
|
||||||
118
project/ffmpeg_dll_compact_348/include/libavcodec/avfft.h
Normal file
118
project/ffmpeg_dll_compact_348/include/libavcodec/avfft.h
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_AVFFT_H
|
||||||
|
#define AVCODEC_AVFFT_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_fft
|
||||||
|
* FFT functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_fft FFT functions
|
||||||
|
* @ingroup lavc_misc
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef float FFTSample;
|
||||||
|
|
||||||
|
typedef struct FFTComplex {
|
||||||
|
FFTSample re, im;
|
||||||
|
} FFTComplex;
|
||||||
|
|
||||||
|
typedef struct FFTContext FFTContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up a complex FFT.
|
||||||
|
* @param nbits log2 of the length of the input array
|
||||||
|
* @param inverse if 0 perform the forward transform, if 1 perform the inverse
|
||||||
|
*/
|
||||||
|
FFTContext *av_fft_init(int nbits, int inverse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do the permutation needed BEFORE calling ff_fft_calc().
|
||||||
|
*/
|
||||||
|
void av_fft_permute(FFTContext *s, FFTComplex *z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do a complex FFT with the parameters defined in av_fft_init(). The
|
||||||
|
* input data must be permuted before. No 1.0/sqrt(n) normalization is done.
|
||||||
|
*/
|
||||||
|
void av_fft_calc(FFTContext *s, FFTComplex *z);
|
||||||
|
|
||||||
|
void av_fft_end(FFTContext *s);
|
||||||
|
|
||||||
|
FFTContext *av_mdct_init(int nbits, int inverse, double scale);
|
||||||
|
void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
|
||||||
|
void av_mdct_end(FFTContext *s);
|
||||||
|
|
||||||
|
/* Real Discrete Fourier Transform */
|
||||||
|
|
||||||
|
enum RDFTransformType {
|
||||||
|
DFT_R2C,
|
||||||
|
IDFT_C2R,
|
||||||
|
IDFT_R2C,
|
||||||
|
DFT_C2R,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct RDFTContext RDFTContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up a real FFT.
|
||||||
|
* @param nbits log2 of the length of the input array
|
||||||
|
* @param trans the type of transform
|
||||||
|
*/
|
||||||
|
RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
|
||||||
|
void av_rdft_calc(RDFTContext *s, FFTSample *data);
|
||||||
|
void av_rdft_end(RDFTContext *s);
|
||||||
|
|
||||||
|
/* Discrete Cosine Transform */
|
||||||
|
|
||||||
|
typedef struct DCTContext DCTContext;
|
||||||
|
|
||||||
|
enum DCTTransformType {
|
||||||
|
DCT_II = 0,
|
||||||
|
DCT_III,
|
||||||
|
DCT_I,
|
||||||
|
DST_I,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set up DCT.
|
||||||
|
*
|
||||||
|
* @param nbits size of the input array:
|
||||||
|
* (1 << nbits) for DCT-II, DCT-III and DST-I
|
||||||
|
* (1 << nbits) + 1 for DCT-I
|
||||||
|
* @param type the type of transform
|
||||||
|
*
|
||||||
|
* @note the first element of the input of DST-I is ignored
|
||||||
|
*/
|
||||||
|
DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
|
||||||
|
void av_dct_calc(DCTContext *s, FFTSample *data);
|
||||||
|
void av_dct_end (DCTContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_AVFFT_H */
|
||||||
325
project/ffmpeg_dll_compact_348/include/libavcodec/bsf.h
Normal file
325
project/ffmpeg_dll_compact_348/include/libavcodec/bsf.h
Normal file
@@ -0,0 +1,325 @@
|
|||||||
|
/*
|
||||||
|
* Bitstream filters public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_BSF_H
|
||||||
|
#define AVCODEC_BSF_H
|
||||||
|
|
||||||
|
#include "libavutil/dict.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
#include "libavutil/rational.h"
|
||||||
|
|
||||||
|
#include "codec_id.h"
|
||||||
|
#include "codec_par.h"
|
||||||
|
#include "packet.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavc_core
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct AVBSFInternal AVBSFInternal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The bitstream filter state.
|
||||||
|
*
|
||||||
|
* This struct must be allocated with av_bsf_alloc() and freed with
|
||||||
|
* av_bsf_free().
|
||||||
|
*
|
||||||
|
* The fields in the struct will only be changed (by the caller or by the
|
||||||
|
* filter) as described in their documentation, and are to be considered
|
||||||
|
* immutable otherwise.
|
||||||
|
*/
|
||||||
|
typedef struct AVBSFContext {
|
||||||
|
/**
|
||||||
|
* A class for logging and AVOptions
|
||||||
|
*/
|
||||||
|
const AVClass *av_class;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The bitstream filter this context is an instance of.
|
||||||
|
*/
|
||||||
|
const struct AVBitStreamFilter *filter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opaque libavcodec internal data. Must not be touched by the caller in any
|
||||||
|
* way.
|
||||||
|
*/
|
||||||
|
AVBSFInternal *internal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opaque filter-specific private data. If filter->priv_class is non-NULL,
|
||||||
|
* this is an AVOptions-enabled struct.
|
||||||
|
*/
|
||||||
|
void *priv_data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameters of the input stream. This field is allocated in
|
||||||
|
* av_bsf_alloc(), it needs to be filled by the caller before
|
||||||
|
* av_bsf_init().
|
||||||
|
*/
|
||||||
|
AVCodecParameters *par_in;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parameters of the output stream. This field is allocated in
|
||||||
|
* av_bsf_alloc(), it is set by the filter in av_bsf_init().
|
||||||
|
*/
|
||||||
|
AVCodecParameters *par_out;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The timebase used for the timestamps of the input packets. Set by the
|
||||||
|
* caller before av_bsf_init().
|
||||||
|
*/
|
||||||
|
AVRational time_base_in;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The timebase used for the timestamps of the output packets. Set by the
|
||||||
|
* filter in av_bsf_init().
|
||||||
|
*/
|
||||||
|
AVRational time_base_out;
|
||||||
|
} AVBSFContext;
|
||||||
|
|
||||||
|
typedef struct AVBitStreamFilter {
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of codec ids supported by the filter, terminated by
|
||||||
|
* AV_CODEC_ID_NONE.
|
||||||
|
* May be NULL, in that case the bitstream filter works with any codec id.
|
||||||
|
*/
|
||||||
|
const enum AVCodecID *codec_ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class for the private data, used to declare bitstream filter private
|
||||||
|
* AVOptions. This field is NULL for bitstream filters that do not declare
|
||||||
|
* any options.
|
||||||
|
*
|
||||||
|
* If this field is non-NULL, the first member of the filter private data
|
||||||
|
* must be a pointer to AVClass, which will be set by libavcodec generic
|
||||||
|
* code to this class.
|
||||||
|
*/
|
||||||
|
const AVClass *priv_class;
|
||||||
|
|
||||||
|
/*****************************************************************
|
||||||
|
* No fields below this line are part of the public API. They
|
||||||
|
* may not be used outside of libavcodec and can be changed and
|
||||||
|
* removed at will.
|
||||||
|
* New public fields should be added right above.
|
||||||
|
*****************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
int priv_data_size;
|
||||||
|
int (*init)(AVBSFContext *ctx);
|
||||||
|
int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
|
||||||
|
void (*close)(AVBSFContext *ctx);
|
||||||
|
void (*flush)(AVBSFContext *ctx);
|
||||||
|
} AVBitStreamFilter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a bitstream filter with the specified name or NULL if no such
|
||||||
|
* bitstream filter exists.
|
||||||
|
*/
|
||||||
|
const AVBitStreamFilter *av_bsf_get_by_name(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate over all registered bitstream filters.
|
||||||
|
*
|
||||||
|
* @param opaque a pointer where libavcodec will store the iteration state. Must
|
||||||
|
* point to NULL to start the iteration.
|
||||||
|
*
|
||||||
|
* @return the next registered bitstream filter or NULL when the iteration is
|
||||||
|
* finished
|
||||||
|
*/
|
||||||
|
const AVBitStreamFilter *av_bsf_iterate(void **opaque);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a context for a given bitstream filter. The caller must fill in the
|
||||||
|
* context parameters as described in the documentation and then call
|
||||||
|
* av_bsf_init() before sending any data to the filter.
|
||||||
|
*
|
||||||
|
* @param filter the filter for which to allocate an instance.
|
||||||
|
* @param ctx a pointer into which the pointer to the newly-allocated context
|
||||||
|
* will be written. It must be freed with av_bsf_free() after the
|
||||||
|
* filtering is done.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepare the filter for use, after all the parameters and options have been
|
||||||
|
* set.
|
||||||
|
*/
|
||||||
|
int av_bsf_init(AVBSFContext *ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Submit a packet for filtering.
|
||||||
|
*
|
||||||
|
* After sending each packet, the filter must be completely drained by calling
|
||||||
|
* av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or
|
||||||
|
* AVERROR_EOF.
|
||||||
|
*
|
||||||
|
* @param pkt the packet to filter. The bitstream filter will take ownership of
|
||||||
|
* the packet and reset the contents of pkt. pkt is not touched if an error occurs.
|
||||||
|
* If pkt is empty (i.e. NULL, or pkt->data is NULL and pkt->side_data_elems zero),
|
||||||
|
* it signals the end of the stream (i.e. no more non-empty packets will be sent;
|
||||||
|
* sending more empty packets does nothing) and will cause the filter to output
|
||||||
|
* any packets it may have buffered internally.
|
||||||
|
*
|
||||||
|
* @return 0 on success. AVERROR(EAGAIN) if packets need to be retrieved from the
|
||||||
|
* filter (using av_bsf_receive_packet()) before new input can be consumed. Another
|
||||||
|
* negative AVERROR value if an error occurs.
|
||||||
|
*/
|
||||||
|
int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a filtered packet.
|
||||||
|
*
|
||||||
|
* @param[out] pkt this struct will be filled with the contents of the filtered
|
||||||
|
* packet. It is owned by the caller and must be freed using
|
||||||
|
* av_packet_unref() when it is no longer needed.
|
||||||
|
* This parameter should be "clean" (i.e. freshly allocated
|
||||||
|
* with av_packet_alloc() or unreffed with av_packet_unref())
|
||||||
|
* when this function is called. If this function returns
|
||||||
|
* successfully, the contents of pkt will be completely
|
||||||
|
* overwritten by the returned data. On failure, pkt is not
|
||||||
|
* touched.
|
||||||
|
*
|
||||||
|
* @return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the
|
||||||
|
* filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there
|
||||||
|
* will be no further output from the filter. Another negative AVERROR value if
|
||||||
|
* an error occurs.
|
||||||
|
*
|
||||||
|
* @note one input packet may result in several output packets, so after sending
|
||||||
|
* a packet with av_bsf_send_packet(), this function needs to be called
|
||||||
|
* repeatedly until it stops returning 0. It is also possible for a filter to
|
||||||
|
* output fewer packets than were sent to it, so this function may return
|
||||||
|
* AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call.
|
||||||
|
*/
|
||||||
|
int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the internal bitstream filter state / flush internal buffers.
|
||||||
|
*/
|
||||||
|
void av_bsf_flush(AVBSFContext *ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a bitstream filter context and everything associated with it; write NULL
|
||||||
|
* into the supplied pointer.
|
||||||
|
*/
|
||||||
|
void av_bsf_free(AVBSFContext **ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the AVClass for AVBSFContext. It can be used in combination with
|
||||||
|
* AV_OPT_SEARCH_FAKE_OBJ for examining options.
|
||||||
|
*
|
||||||
|
* @see av_opt_find().
|
||||||
|
*/
|
||||||
|
const AVClass *av_bsf_get_class(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Structure for chain/list of bitstream filters.
|
||||||
|
* Empty list can be allocated by av_bsf_list_alloc().
|
||||||
|
*/
|
||||||
|
typedef struct AVBSFList AVBSFList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate empty list of bitstream filters.
|
||||||
|
* The list must be later freed by av_bsf_list_free()
|
||||||
|
* or finalized by av_bsf_list_finalize().
|
||||||
|
*
|
||||||
|
* @return Pointer to @ref AVBSFList on success, NULL in case of failure
|
||||||
|
*/
|
||||||
|
AVBSFList *av_bsf_list_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free list of bitstream filters.
|
||||||
|
*
|
||||||
|
* @param lst Pointer to pointer returned by av_bsf_list_alloc()
|
||||||
|
*/
|
||||||
|
void av_bsf_list_free(AVBSFList **lst);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append bitstream filter to the list of bitstream filters.
|
||||||
|
*
|
||||||
|
* @param lst List to append to
|
||||||
|
* @param bsf Filter context to be appended
|
||||||
|
*
|
||||||
|
* @return >=0 on success, negative AVERROR in case of failure
|
||||||
|
*/
|
||||||
|
int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct new bitstream filter context given it's name and options
|
||||||
|
* and append it to the list of bitstream filters.
|
||||||
|
*
|
||||||
|
* @param lst List to append to
|
||||||
|
* @param bsf_name Name of the bitstream filter
|
||||||
|
* @param options Options for the bitstream filter, can be set to NULL
|
||||||
|
*
|
||||||
|
* @return >=0 on success, negative AVERROR in case of failure
|
||||||
|
*/
|
||||||
|
int av_bsf_list_append2(AVBSFList *lst, const char * bsf_name, AVDictionary **options);
|
||||||
|
/**
|
||||||
|
* Finalize list of bitstream filters.
|
||||||
|
*
|
||||||
|
* This function will transform @ref AVBSFList to single @ref AVBSFContext,
|
||||||
|
* so the whole chain of bitstream filters can be treated as single filter
|
||||||
|
* freshly allocated by av_bsf_alloc().
|
||||||
|
* If the call is successful, @ref AVBSFList structure is freed and lst
|
||||||
|
* will be set to NULL. In case of failure, caller is responsible for
|
||||||
|
* freeing the structure by av_bsf_list_free()
|
||||||
|
*
|
||||||
|
* @param lst Filter list structure to be transformed
|
||||||
|
* @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
|
||||||
|
* representing the chain of bitstream filters
|
||||||
|
*
|
||||||
|
* @return >=0 on success, negative AVERROR in case of failure
|
||||||
|
*/
|
||||||
|
int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse string describing list of bitstream filters and create single
|
||||||
|
* @ref AVBSFContext describing the whole chain of bitstream filters.
|
||||||
|
* Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly
|
||||||
|
* allocated by av_bsf_alloc().
|
||||||
|
*
|
||||||
|
* @param str String describing chain of bitstream filters in format
|
||||||
|
* `bsf1[=opt1=val1:opt2=val2][,bsf2]`
|
||||||
|
* @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
|
||||||
|
* representing the chain of bitstream filters
|
||||||
|
*
|
||||||
|
* @return >=0 on success, negative AVERROR in case of failure
|
||||||
|
*/
|
||||||
|
int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get null/pass-through bitstream filter.
|
||||||
|
*
|
||||||
|
* @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int av_bsf_get_null_filter(AVBSFContext **bsf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif // AVCODEC_BSF_H
|
||||||
462
project/ffmpeg_dll_compact_348/include/libavcodec/codec.h
Normal file
462
project/ffmpeg_dll_compact_348/include/libavcodec/codec.h
Normal file
@@ -0,0 +1,462 @@
|
|||||||
|
/*
|
||||||
|
* AVCodec public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_CODEC_H
|
||||||
|
#define AVCODEC_CODEC_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
#include "libavutil/hwcontext.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
#include "libavutil/pixfmt.h"
|
||||||
|
#include "libavutil/rational.h"
|
||||||
|
#include "libavutil/samplefmt.h"
|
||||||
|
|
||||||
|
#include "libavcodec/codec_id.h"
|
||||||
|
#include "libavcodec/version.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavc_core
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decoder can use draw_horiz_band callback.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0)
|
||||||
|
/**
|
||||||
|
* Codec uses get_buffer() for allocating buffers and supports custom allocators.
|
||||||
|
* If not set, it might not use get_buffer() at all or use operations that
|
||||||
|
* assume the buffer was allocated by avcodec_default_get_buffer.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_DR1 (1 << 1)
|
||||||
|
#define AV_CODEC_CAP_TRUNCATED (1 << 3)
|
||||||
|
/**
|
||||||
|
* Encoder or decoder requires flushing with NULL input at the end in order to
|
||||||
|
* give the complete and correct output.
|
||||||
|
*
|
||||||
|
* NOTE: If this flag is not set, the codec is guaranteed to never be fed with
|
||||||
|
* with NULL data. The user can still send NULL data to the public encode
|
||||||
|
* or decode function, but libavcodec will not pass it along to the codec
|
||||||
|
* unless this flag is set.
|
||||||
|
*
|
||||||
|
* Decoders:
|
||||||
|
* The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL,
|
||||||
|
* avpkt->size=0 at the end to get the delayed data until the decoder no longer
|
||||||
|
* returns frames.
|
||||||
|
*
|
||||||
|
* Encoders:
|
||||||
|
* The encoder needs to be fed with NULL data at the end of encoding until the
|
||||||
|
* encoder no longer returns data.
|
||||||
|
*
|
||||||
|
* NOTE: For encoders implementing the AVCodec.encode2() function, setting this
|
||||||
|
* flag also means that the encoder must set the pts and duration for
|
||||||
|
* each output packet. If this flag is not set, the pts and duration will
|
||||||
|
* be determined by libavcodec from the input frame.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_DELAY (1 << 5)
|
||||||
|
/**
|
||||||
|
* Codec can be fed a final frame with a smaller size.
|
||||||
|
* This can be used to prevent truncation of the last audio samples.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Codec can output multiple frames per AVPacket
|
||||||
|
* Normally demuxers return one frame at a time, demuxers which do not do
|
||||||
|
* are connected to a parser to split what they return into proper frames.
|
||||||
|
* This flag is reserved to the very rare category of codecs which have a
|
||||||
|
* bitstream that cannot be split into frames without timeconsuming
|
||||||
|
* operations like full decoding. Demuxers carrying such bitstreams thus
|
||||||
|
* may return multiple frames in a packet. This has many disadvantages like
|
||||||
|
* prohibiting stream copy in many cases thus it should only be considered
|
||||||
|
* as a last resort.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_SUBFRAMES (1 << 8)
|
||||||
|
/**
|
||||||
|
* Codec is experimental and is thus avoided in favor of non experimental
|
||||||
|
* encoders
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9)
|
||||||
|
/**
|
||||||
|
* Codec should fill in channel configuration and samplerate instead of container
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10)
|
||||||
|
/**
|
||||||
|
* Codec supports frame-level multithreading.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_FRAME_THREADS (1 << 12)
|
||||||
|
/**
|
||||||
|
* Codec supports slice-based (or partition-based) multithreading.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_SLICE_THREADS (1 << 13)
|
||||||
|
/**
|
||||||
|
* Codec supports changed parameters at any point.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14)
|
||||||
|
/**
|
||||||
|
* Codec supports avctx->thread_count == 0 (auto).
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_AUTO_THREADS (1 << 15)
|
||||||
|
/**
|
||||||
|
* Audio encoder supports receiving a different number of samples in each call.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16)
|
||||||
|
/**
|
||||||
|
* Decoder is not a preferred choice for probing.
|
||||||
|
* This indicates that the decoder is not a good choice for probing.
|
||||||
|
* It could for example be an expensive to spin up hardware decoder,
|
||||||
|
* or it could simply not provide a lot of useful information about
|
||||||
|
* the stream.
|
||||||
|
* A decoder marked with this flag should only be used as last resort
|
||||||
|
* choice for probing.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_AVOID_PROBING (1 << 17)
|
||||||
|
|
||||||
|
#if FF_API_UNUSED_CODEC_CAPS
|
||||||
|
/**
|
||||||
|
* Deprecated and unused. Use AVCodecDescriptor.props instead
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_INTRA_ONLY 0x40000000
|
||||||
|
/**
|
||||||
|
* Deprecated and unused. Use AVCodecDescriptor.props instead
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_LOSSLESS 0x80000000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Codec is backed by a hardware implementation. Typically used to
|
||||||
|
* identify a non-hwaccel hardware decoder. For information about hwaccels, use
|
||||||
|
* avcodec_get_hw_config() instead.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_HARDWARE (1 << 18)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Codec is potentially backed by a hardware implementation, but not
|
||||||
|
* necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the
|
||||||
|
* implementation provides some sort of internal fallback.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_HYBRID (1 << 19)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This codec takes the reordered_opaque field from input AVFrames
|
||||||
|
* and returns it in the corresponding field in AVCodecContext after
|
||||||
|
* encoding.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE (1 << 20)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This encoder can be flushed using avcodec_flush_buffers(). If this flag is
|
||||||
|
* not set, the encoder must be closed and reopened to ensure that no frames
|
||||||
|
* remain pending.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_CAP_ENCODER_FLUSH (1 << 21)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AVProfile.
|
||||||
|
*/
|
||||||
|
typedef struct AVProfile {
|
||||||
|
int profile;
|
||||||
|
const char *name; ///< short name for the profile
|
||||||
|
} AVProfile;
|
||||||
|
|
||||||
|
typedef struct AVCodecDefault AVCodecDefault;
|
||||||
|
|
||||||
|
struct AVCodecContext;
|
||||||
|
struct AVSubtitle;
|
||||||
|
struct AVPacket;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AVCodec.
|
||||||
|
*/
|
||||||
|
typedef struct AVCodec {
|
||||||
|
/**
|
||||||
|
* Name of the codec implementation.
|
||||||
|
* The name is globally unique among encoders and among decoders (but an
|
||||||
|
* encoder and a decoder can share the same name).
|
||||||
|
* This is the primary way to find a codec from the user perspective.
|
||||||
|
*/
|
||||||
|
const char *name;
|
||||||
|
/**
|
||||||
|
* Descriptive name for the codec, meant to be more human readable than name.
|
||||||
|
* You should use the NULL_IF_CONFIG_SMALL() macro to define it.
|
||||||
|
*/
|
||||||
|
const char *long_name;
|
||||||
|
enum AVMediaType type;
|
||||||
|
enum AVCodecID id;
|
||||||
|
/**
|
||||||
|
* Codec capabilities.
|
||||||
|
* see AV_CODEC_CAP_*
|
||||||
|
*/
|
||||||
|
int capabilities;
|
||||||
|
const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
|
||||||
|
const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
|
||||||
|
const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
|
||||||
|
const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
|
||||||
|
const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
|
||||||
|
uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
|
||||||
|
const AVClass *priv_class; ///< AVClass for the private context
|
||||||
|
const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Group name of the codec implementation.
|
||||||
|
* This is a short symbolic name of the wrapper backing this codec. A
|
||||||
|
* wrapper uses some kind of external implementation for the codec, such
|
||||||
|
* as an external library, or a codec implementation provided by the OS or
|
||||||
|
* the hardware.
|
||||||
|
* If this field is NULL, this is a builtin, libavcodec native codec.
|
||||||
|
* If non-NULL, this will be the suffix in AVCodec.name in most cases
|
||||||
|
* (usually AVCodec.name will be of the form "<codec_name>_<wrapper_name>").
|
||||||
|
*/
|
||||||
|
const char *wrapper_name;
|
||||||
|
|
||||||
|
/*****************************************************************
|
||||||
|
* No fields below this line are part of the public API. They
|
||||||
|
* may not be used outside of libavcodec and can be changed and
|
||||||
|
* removed at will.
|
||||||
|
* New public fields should be added right above.
|
||||||
|
*****************************************************************
|
||||||
|
*/
|
||||||
|
int priv_data_size;
|
||||||
|
struct AVCodec *next;
|
||||||
|
/**
|
||||||
|
* @name Frame-level threading support functions
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Copy necessary context variables from a previous thread context to the current one.
|
||||||
|
* If not defined, the next thread will start automatically; otherwise, the codec
|
||||||
|
* must call ff_thread_finish_setup().
|
||||||
|
*
|
||||||
|
* dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
|
||||||
|
*/
|
||||||
|
int (*update_thread_context)(struct AVCodecContext *dst, const struct AVCodecContext *src);
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private codec-specific defaults.
|
||||||
|
*/
|
||||||
|
const AVCodecDefault *defaults;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize codec static data, called from avcodec_register().
|
||||||
|
*
|
||||||
|
* This is not intended for time consuming operations as it is
|
||||||
|
* run for every codec regardless of that codec being used.
|
||||||
|
*/
|
||||||
|
void (*init_static_data)(struct AVCodec *codec);
|
||||||
|
|
||||||
|
int (*init)(struct AVCodecContext *);
|
||||||
|
int (*encode_sub)(struct AVCodecContext *, uint8_t *buf, int buf_size,
|
||||||
|
const struct AVSubtitle *sub);
|
||||||
|
/**
|
||||||
|
* Encode data to an AVPacket.
|
||||||
|
*
|
||||||
|
* @param avctx codec context
|
||||||
|
* @param avpkt output AVPacket (may contain a user-provided buffer)
|
||||||
|
* @param[in] frame AVFrame containing the raw data to be encoded
|
||||||
|
* @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
|
||||||
|
* non-empty packet was returned in avpkt.
|
||||||
|
* @return 0 on success, negative error code on failure
|
||||||
|
*/
|
||||||
|
int (*encode2)(struct AVCodecContext *avctx, struct AVPacket *avpkt,
|
||||||
|
const struct AVFrame *frame, int *got_packet_ptr);
|
||||||
|
int (*decode)(struct AVCodecContext *, void *outdata, int *outdata_size, struct AVPacket *avpkt);
|
||||||
|
int (*close)(struct AVCodecContext *);
|
||||||
|
/**
|
||||||
|
* Encode API with decoupled packet/frame dataflow. The API is the
|
||||||
|
* same as the avcodec_ prefixed APIs (avcodec_send_frame() etc.), except
|
||||||
|
* that:
|
||||||
|
* - never called if the codec is closed or the wrong type,
|
||||||
|
* - if AV_CODEC_CAP_DELAY is not set, drain frames are never sent,
|
||||||
|
* - only one drain frame is ever passed down,
|
||||||
|
*/
|
||||||
|
int (*send_frame)(struct AVCodecContext *avctx, const struct AVFrame *frame);
|
||||||
|
int (*receive_packet)(struct AVCodecContext *avctx, struct AVPacket *avpkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode API with decoupled packet/frame dataflow. This function is called
|
||||||
|
* to get one output frame. It should call ff_decode_get_packet() to obtain
|
||||||
|
* input data.
|
||||||
|
*/
|
||||||
|
int (*receive_frame)(struct AVCodecContext *avctx, struct AVFrame *frame);
|
||||||
|
/**
|
||||||
|
* Flush buffers.
|
||||||
|
* Will be called when seeking
|
||||||
|
*/
|
||||||
|
void (*flush)(struct AVCodecContext *);
|
||||||
|
/**
|
||||||
|
* Internal codec capabilities.
|
||||||
|
* See FF_CODEC_CAP_* in internal.h
|
||||||
|
*/
|
||||||
|
int caps_internal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decoding only, a comma-separated list of bitstream filters to apply to
|
||||||
|
* packets before decoding.
|
||||||
|
*/
|
||||||
|
const char *bsfs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Array of pointers to hardware configurations supported by the codec,
|
||||||
|
* or NULL if no hardware supported. The array is terminated by a NULL
|
||||||
|
* pointer.
|
||||||
|
*
|
||||||
|
* The user can only access this field via avcodec_get_hw_config().
|
||||||
|
*/
|
||||||
|
const struct AVCodecHWConfigInternal **hw_configs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of supported codec_tags, terminated by FF_CODEC_TAGS_END.
|
||||||
|
*/
|
||||||
|
const uint32_t *codec_tags;
|
||||||
|
} AVCodec;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate over all registered codecs.
|
||||||
|
*
|
||||||
|
* @param opaque a pointer where libavcodec will store the iteration state. Must
|
||||||
|
* point to NULL to start the iteration.
|
||||||
|
*
|
||||||
|
* @return the next registered codec or NULL when the iteration is
|
||||||
|
* finished
|
||||||
|
*/
|
||||||
|
const AVCodec *av_codec_iterate(void **opaque);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a registered decoder with a matching codec ID.
|
||||||
|
*
|
||||||
|
* @param id AVCodecID of the requested decoder
|
||||||
|
* @return A decoder if one was found, NULL otherwise.
|
||||||
|
*/
|
||||||
|
AVCodec *avcodec_find_decoder(enum AVCodecID id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a registered decoder with the specified name.
|
||||||
|
*
|
||||||
|
* @param name name of the requested decoder
|
||||||
|
* @return A decoder if one was found, NULL otherwise.
|
||||||
|
*/
|
||||||
|
AVCodec *avcodec_find_decoder_by_name(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a registered encoder with a matching codec ID.
|
||||||
|
*
|
||||||
|
* @param id AVCodecID of the requested encoder
|
||||||
|
* @return An encoder if one was found, NULL otherwise.
|
||||||
|
*/
|
||||||
|
AVCodec *avcodec_find_encoder(enum AVCodecID id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find a registered encoder with the specified name.
|
||||||
|
*
|
||||||
|
* @param name name of the requested encoder
|
||||||
|
* @return An encoder if one was found, NULL otherwise.
|
||||||
|
*/
|
||||||
|
AVCodec *avcodec_find_encoder_by_name(const char *name);
|
||||||
|
/**
|
||||||
|
* @return a non-zero number if codec is an encoder, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_codec_is_encoder(const AVCodec *codec);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a non-zero number if codec is a decoder, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_codec_is_decoder(const AVCodec *codec);
|
||||||
|
|
||||||
|
enum {
|
||||||
|
/**
|
||||||
|
* The codec supports this format via the hw_device_ctx interface.
|
||||||
|
*
|
||||||
|
* When selecting this format, AVCodecContext.hw_device_ctx should
|
||||||
|
* have been set to a device of the specified type before calling
|
||||||
|
* avcodec_open2().
|
||||||
|
*/
|
||||||
|
AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX = 0x01,
|
||||||
|
/**
|
||||||
|
* The codec supports this format via the hw_frames_ctx interface.
|
||||||
|
*
|
||||||
|
* When selecting this format for a decoder,
|
||||||
|
* AVCodecContext.hw_frames_ctx should be set to a suitable frames
|
||||||
|
* context inside the get_format() callback. The frames context
|
||||||
|
* must have been created on a device of the specified type.
|
||||||
|
*
|
||||||
|
* When selecting this format for an encoder,
|
||||||
|
* AVCodecContext.hw_frames_ctx should be set to the context which
|
||||||
|
* will be used for the input frames before calling avcodec_open2().
|
||||||
|
*/
|
||||||
|
AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX = 0x02,
|
||||||
|
/**
|
||||||
|
* The codec supports this format by some internal method.
|
||||||
|
*
|
||||||
|
* This format can be selected without any additional configuration -
|
||||||
|
* no device or frames context is required.
|
||||||
|
*/
|
||||||
|
AV_CODEC_HW_CONFIG_METHOD_INTERNAL = 0x04,
|
||||||
|
/**
|
||||||
|
* The codec supports this format by some ad-hoc method.
|
||||||
|
*
|
||||||
|
* Additional settings and/or function calls are required. See the
|
||||||
|
* codec-specific documentation for details. (Methods requiring
|
||||||
|
* this sort of configuration are deprecated and others should be
|
||||||
|
* used in preference.)
|
||||||
|
*/
|
||||||
|
AV_CODEC_HW_CONFIG_METHOD_AD_HOC = 0x08,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct AVCodecHWConfig {
|
||||||
|
/**
|
||||||
|
* For decoders, a hardware pixel format which that decoder may be
|
||||||
|
* able to decode to if suitable hardware is available.
|
||||||
|
*
|
||||||
|
* For encoders, a pixel format which the encoder may be able to
|
||||||
|
* accept. If set to AV_PIX_FMT_NONE, this applies to all pixel
|
||||||
|
* formats supported by the codec.
|
||||||
|
*/
|
||||||
|
enum AVPixelFormat pix_fmt;
|
||||||
|
/**
|
||||||
|
* Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible
|
||||||
|
* setup methods which can be used with this configuration.
|
||||||
|
*/
|
||||||
|
int methods;
|
||||||
|
/**
|
||||||
|
* The device type associated with the configuration.
|
||||||
|
*
|
||||||
|
* Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and
|
||||||
|
* AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused.
|
||||||
|
*/
|
||||||
|
enum AVHWDeviceType device_type;
|
||||||
|
} AVCodecHWConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve supported hardware configurations for a codec.
|
||||||
|
*
|
||||||
|
* Values of index from zero to some maximum return the indexed configuration
|
||||||
|
* descriptor; all other values return NULL. If the codec does not support
|
||||||
|
* any hardware configurations then it will always return NULL.
|
||||||
|
*/
|
||||||
|
const AVCodecHWConfig *avcodec_get_hw_config(const AVCodec *codec, int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_CODEC_H */
|
||||||
128
project/ffmpeg_dll_compact_348/include/libavcodec/codec_desc.h
Normal file
128
project/ffmpeg_dll_compact_348/include/libavcodec/codec_desc.h
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
* Codec descriptors public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_CODEC_DESC_H
|
||||||
|
#define AVCODEC_CODEC_DESC_H
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
|
#include "codec_id.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavc_core
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This struct describes the properties of a single codec described by an
|
||||||
|
* AVCodecID.
|
||||||
|
* @see avcodec_descriptor_get()
|
||||||
|
*/
|
||||||
|
typedef struct AVCodecDescriptor {
|
||||||
|
enum AVCodecID id;
|
||||||
|
enum AVMediaType type;
|
||||||
|
/**
|
||||||
|
* Name of the codec described by this descriptor. It is non-empty and
|
||||||
|
* unique for each codec descriptor. It should contain alphanumeric
|
||||||
|
* characters and '_' only.
|
||||||
|
*/
|
||||||
|
const char *name;
|
||||||
|
/**
|
||||||
|
* A more descriptive name for this codec. May be NULL.
|
||||||
|
*/
|
||||||
|
const char *long_name;
|
||||||
|
/**
|
||||||
|
* Codec properties, a combination of AV_CODEC_PROP_* flags.
|
||||||
|
*/
|
||||||
|
int props;
|
||||||
|
/**
|
||||||
|
* MIME type(s) associated with the codec.
|
||||||
|
* May be NULL; if not, a NULL-terminated array of MIME types.
|
||||||
|
* The first item is always non-NULL and is the preferred MIME type.
|
||||||
|
*/
|
||||||
|
const char *const *mime_types;
|
||||||
|
/**
|
||||||
|
* If non-NULL, an array of profiles recognized for this codec.
|
||||||
|
* Terminated with FF_PROFILE_UNKNOWN.
|
||||||
|
*/
|
||||||
|
const struct AVProfile *profiles;
|
||||||
|
} AVCodecDescriptor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Codec uses only intra compression.
|
||||||
|
* Video and audio codecs only.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_INTRA_ONLY (1 << 0)
|
||||||
|
/**
|
||||||
|
* Codec supports lossy compression. Audio and video codecs only.
|
||||||
|
* @note a codec may support both lossy and lossless
|
||||||
|
* compression modes
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_LOSSY (1 << 1)
|
||||||
|
/**
|
||||||
|
* Codec supports lossless compression. Audio and video codecs only.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_LOSSLESS (1 << 2)
|
||||||
|
/**
|
||||||
|
* Codec supports frame reordering. That is, the coded order (the order in which
|
||||||
|
* the encoded packets are output by the encoders / stored / input to the
|
||||||
|
* decoders) may be different from the presentation order of the corresponding
|
||||||
|
* frames.
|
||||||
|
*
|
||||||
|
* For codecs that do not have this property set, PTS and DTS should always be
|
||||||
|
* equal.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_REORDER (1 << 3)
|
||||||
|
/**
|
||||||
|
* Subtitle codec is bitmap based
|
||||||
|
* Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_BITMAP_SUB (1 << 16)
|
||||||
|
/**
|
||||||
|
* Subtitle codec is text based.
|
||||||
|
* Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field.
|
||||||
|
*/
|
||||||
|
#define AV_CODEC_PROP_TEXT_SUB (1 << 17)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return descriptor for given codec ID or NULL if no descriptor exists.
|
||||||
|
*/
|
||||||
|
const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate over all codec descriptors known to libavcodec.
|
||||||
|
*
|
||||||
|
* @param prev previous descriptor. NULL to get the first descriptor.
|
||||||
|
*
|
||||||
|
* @return next descriptor or NULL after the last descriptor
|
||||||
|
*/
|
||||||
|
const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return codec descriptor with the given name or NULL if no such descriptor
|
||||||
|
* exists.
|
||||||
|
*/
|
||||||
|
const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif // AVCODEC_CODEC_DESC_H
|
||||||
577
project/ffmpeg_dll_compact_348/include/libavcodec/codec_id.h
Normal file
577
project/ffmpeg_dll_compact_348/include/libavcodec/codec_id.h
Normal file
@@ -0,0 +1,577 @@
|
|||||||
|
/*
|
||||||
|
* Codec IDs
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_CODEC_ID_H
|
||||||
|
#define AVCODEC_CODEC_ID_H
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavc_core
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Identify the syntax and semantics of the bitstream.
|
||||||
|
* The principle is roughly:
|
||||||
|
* Two decoders with the same ID can decode the same streams.
|
||||||
|
* Two encoders with the same ID can encode compatible streams.
|
||||||
|
* There may be slight deviations from the principle due to implementation
|
||||||
|
* details.
|
||||||
|
*
|
||||||
|
* If you add a codec ID to this list, add it so that
|
||||||
|
* 1. no value of an existing codec ID changes (that would break ABI),
|
||||||
|
* 2. it is as close as possible to similar codecs
|
||||||
|
*
|
||||||
|
* After adding new codec IDs, do not forget to add an entry to the codec
|
||||||
|
* descriptor list and bump libavcodec minor version.
|
||||||
|
*/
|
||||||
|
enum AVCodecID {
|
||||||
|
AV_CODEC_ID_NONE,
|
||||||
|
|
||||||
|
/* video codecs */
|
||||||
|
AV_CODEC_ID_MPEG1VIDEO,
|
||||||
|
AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
|
||||||
|
AV_CODEC_ID_H261,
|
||||||
|
AV_CODEC_ID_H263,
|
||||||
|
AV_CODEC_ID_RV10,
|
||||||
|
AV_CODEC_ID_RV20,
|
||||||
|
AV_CODEC_ID_MJPEG,
|
||||||
|
AV_CODEC_ID_MJPEGB,
|
||||||
|
AV_CODEC_ID_LJPEG,
|
||||||
|
AV_CODEC_ID_SP5X,
|
||||||
|
AV_CODEC_ID_JPEGLS,
|
||||||
|
AV_CODEC_ID_MPEG4,
|
||||||
|
AV_CODEC_ID_RAWVIDEO,
|
||||||
|
AV_CODEC_ID_MSMPEG4V1,
|
||||||
|
AV_CODEC_ID_MSMPEG4V2,
|
||||||
|
AV_CODEC_ID_MSMPEG4V3,
|
||||||
|
AV_CODEC_ID_WMV1,
|
||||||
|
AV_CODEC_ID_WMV2,
|
||||||
|
AV_CODEC_ID_H263P,
|
||||||
|
AV_CODEC_ID_H263I,
|
||||||
|
AV_CODEC_ID_FLV1,
|
||||||
|
AV_CODEC_ID_SVQ1,
|
||||||
|
AV_CODEC_ID_SVQ3,
|
||||||
|
AV_CODEC_ID_DVVIDEO,
|
||||||
|
AV_CODEC_ID_HUFFYUV,
|
||||||
|
AV_CODEC_ID_CYUV,
|
||||||
|
AV_CODEC_ID_H264,
|
||||||
|
AV_CODEC_ID_INDEO3,
|
||||||
|
AV_CODEC_ID_VP3,
|
||||||
|
AV_CODEC_ID_THEORA,
|
||||||
|
AV_CODEC_ID_ASV1,
|
||||||
|
AV_CODEC_ID_ASV2,
|
||||||
|
AV_CODEC_ID_FFV1,
|
||||||
|
AV_CODEC_ID_4XM,
|
||||||
|
AV_CODEC_ID_VCR1,
|
||||||
|
AV_CODEC_ID_CLJR,
|
||||||
|
AV_CODEC_ID_MDEC,
|
||||||
|
AV_CODEC_ID_ROQ,
|
||||||
|
AV_CODEC_ID_INTERPLAY_VIDEO,
|
||||||
|
AV_CODEC_ID_XAN_WC3,
|
||||||
|
AV_CODEC_ID_XAN_WC4,
|
||||||
|
AV_CODEC_ID_RPZA,
|
||||||
|
AV_CODEC_ID_CINEPAK,
|
||||||
|
AV_CODEC_ID_WS_VQA,
|
||||||
|
AV_CODEC_ID_MSRLE,
|
||||||
|
AV_CODEC_ID_MSVIDEO1,
|
||||||
|
AV_CODEC_ID_IDCIN,
|
||||||
|
AV_CODEC_ID_8BPS,
|
||||||
|
AV_CODEC_ID_SMC,
|
||||||
|
AV_CODEC_ID_FLIC,
|
||||||
|
AV_CODEC_ID_TRUEMOTION1,
|
||||||
|
AV_CODEC_ID_VMDVIDEO,
|
||||||
|
AV_CODEC_ID_MSZH,
|
||||||
|
AV_CODEC_ID_ZLIB,
|
||||||
|
AV_CODEC_ID_QTRLE,
|
||||||
|
AV_CODEC_ID_TSCC,
|
||||||
|
AV_CODEC_ID_ULTI,
|
||||||
|
AV_CODEC_ID_QDRAW,
|
||||||
|
AV_CODEC_ID_VIXL,
|
||||||
|
AV_CODEC_ID_QPEG,
|
||||||
|
AV_CODEC_ID_PNG,
|
||||||
|
AV_CODEC_ID_PPM,
|
||||||
|
AV_CODEC_ID_PBM,
|
||||||
|
AV_CODEC_ID_PGM,
|
||||||
|
AV_CODEC_ID_PGMYUV,
|
||||||
|
AV_CODEC_ID_PAM,
|
||||||
|
AV_CODEC_ID_FFVHUFF,
|
||||||
|
AV_CODEC_ID_RV30,
|
||||||
|
AV_CODEC_ID_RV40,
|
||||||
|
AV_CODEC_ID_VC1,
|
||||||
|
AV_CODEC_ID_WMV3,
|
||||||
|
AV_CODEC_ID_LOCO,
|
||||||
|
AV_CODEC_ID_WNV1,
|
||||||
|
AV_CODEC_ID_AASC,
|
||||||
|
AV_CODEC_ID_INDEO2,
|
||||||
|
AV_CODEC_ID_FRAPS,
|
||||||
|
AV_CODEC_ID_TRUEMOTION2,
|
||||||
|
AV_CODEC_ID_BMP,
|
||||||
|
AV_CODEC_ID_CSCD,
|
||||||
|
AV_CODEC_ID_MMVIDEO,
|
||||||
|
AV_CODEC_ID_ZMBV,
|
||||||
|
AV_CODEC_ID_AVS,
|
||||||
|
AV_CODEC_ID_SMACKVIDEO,
|
||||||
|
AV_CODEC_ID_NUV,
|
||||||
|
AV_CODEC_ID_KMVC,
|
||||||
|
AV_CODEC_ID_FLASHSV,
|
||||||
|
AV_CODEC_ID_CAVS,
|
||||||
|
AV_CODEC_ID_JPEG2000,
|
||||||
|
AV_CODEC_ID_VMNC,
|
||||||
|
AV_CODEC_ID_VP5,
|
||||||
|
AV_CODEC_ID_VP6,
|
||||||
|
AV_CODEC_ID_VP6F,
|
||||||
|
AV_CODEC_ID_TARGA,
|
||||||
|
AV_CODEC_ID_DSICINVIDEO,
|
||||||
|
AV_CODEC_ID_TIERTEXSEQVIDEO,
|
||||||
|
AV_CODEC_ID_TIFF,
|
||||||
|
AV_CODEC_ID_GIF,
|
||||||
|
AV_CODEC_ID_DXA,
|
||||||
|
AV_CODEC_ID_DNXHD,
|
||||||
|
AV_CODEC_ID_THP,
|
||||||
|
AV_CODEC_ID_SGI,
|
||||||
|
AV_CODEC_ID_C93,
|
||||||
|
AV_CODEC_ID_BETHSOFTVID,
|
||||||
|
AV_CODEC_ID_PTX,
|
||||||
|
AV_CODEC_ID_TXD,
|
||||||
|
AV_CODEC_ID_VP6A,
|
||||||
|
AV_CODEC_ID_AMV,
|
||||||
|
AV_CODEC_ID_VB,
|
||||||
|
AV_CODEC_ID_PCX,
|
||||||
|
AV_CODEC_ID_SUNRAST,
|
||||||
|
AV_CODEC_ID_INDEO4,
|
||||||
|
AV_CODEC_ID_INDEO5,
|
||||||
|
AV_CODEC_ID_MIMIC,
|
||||||
|
AV_CODEC_ID_RL2,
|
||||||
|
AV_CODEC_ID_ESCAPE124,
|
||||||
|
AV_CODEC_ID_DIRAC,
|
||||||
|
AV_CODEC_ID_BFI,
|
||||||
|
AV_CODEC_ID_CMV,
|
||||||
|
AV_CODEC_ID_MOTIONPIXELS,
|
||||||
|
AV_CODEC_ID_TGV,
|
||||||
|
AV_CODEC_ID_TGQ,
|
||||||
|
AV_CODEC_ID_TQI,
|
||||||
|
AV_CODEC_ID_AURA,
|
||||||
|
AV_CODEC_ID_AURA2,
|
||||||
|
AV_CODEC_ID_V210X,
|
||||||
|
AV_CODEC_ID_TMV,
|
||||||
|
AV_CODEC_ID_V210,
|
||||||
|
AV_CODEC_ID_DPX,
|
||||||
|
AV_CODEC_ID_MAD,
|
||||||
|
AV_CODEC_ID_FRWU,
|
||||||
|
AV_CODEC_ID_FLASHSV2,
|
||||||
|
AV_CODEC_ID_CDGRAPHICS,
|
||||||
|
AV_CODEC_ID_R210,
|
||||||
|
AV_CODEC_ID_ANM,
|
||||||
|
AV_CODEC_ID_BINKVIDEO,
|
||||||
|
AV_CODEC_ID_IFF_ILBM,
|
||||||
|
#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
|
||||||
|
AV_CODEC_ID_KGV1,
|
||||||
|
AV_CODEC_ID_YOP,
|
||||||
|
AV_CODEC_ID_VP8,
|
||||||
|
AV_CODEC_ID_PICTOR,
|
||||||
|
AV_CODEC_ID_ANSI,
|
||||||
|
AV_CODEC_ID_A64_MULTI,
|
||||||
|
AV_CODEC_ID_A64_MULTI5,
|
||||||
|
AV_CODEC_ID_R10K,
|
||||||
|
AV_CODEC_ID_MXPEG,
|
||||||
|
AV_CODEC_ID_LAGARITH,
|
||||||
|
AV_CODEC_ID_PRORES,
|
||||||
|
AV_CODEC_ID_JV,
|
||||||
|
AV_CODEC_ID_DFA,
|
||||||
|
AV_CODEC_ID_WMV3IMAGE,
|
||||||
|
AV_CODEC_ID_VC1IMAGE,
|
||||||
|
AV_CODEC_ID_UTVIDEO,
|
||||||
|
AV_CODEC_ID_BMV_VIDEO,
|
||||||
|
AV_CODEC_ID_VBLE,
|
||||||
|
AV_CODEC_ID_DXTORY,
|
||||||
|
AV_CODEC_ID_V410,
|
||||||
|
AV_CODEC_ID_XWD,
|
||||||
|
AV_CODEC_ID_CDXL,
|
||||||
|
AV_CODEC_ID_XBM,
|
||||||
|
AV_CODEC_ID_ZEROCODEC,
|
||||||
|
AV_CODEC_ID_MSS1,
|
||||||
|
AV_CODEC_ID_MSA1,
|
||||||
|
AV_CODEC_ID_TSCC2,
|
||||||
|
AV_CODEC_ID_MTS2,
|
||||||
|
AV_CODEC_ID_CLLC,
|
||||||
|
AV_CODEC_ID_MSS2,
|
||||||
|
AV_CODEC_ID_VP9,
|
||||||
|
AV_CODEC_ID_AIC,
|
||||||
|
AV_CODEC_ID_ESCAPE130,
|
||||||
|
AV_CODEC_ID_G2M,
|
||||||
|
AV_CODEC_ID_WEBP,
|
||||||
|
AV_CODEC_ID_HNM4_VIDEO,
|
||||||
|
AV_CODEC_ID_HEVC,
|
||||||
|
#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
|
||||||
|
AV_CODEC_ID_FIC,
|
||||||
|
AV_CODEC_ID_ALIAS_PIX,
|
||||||
|
AV_CODEC_ID_BRENDER_PIX,
|
||||||
|
AV_CODEC_ID_PAF_VIDEO,
|
||||||
|
AV_CODEC_ID_EXR,
|
||||||
|
AV_CODEC_ID_VP7,
|
||||||
|
AV_CODEC_ID_SANM,
|
||||||
|
AV_CODEC_ID_SGIRLE,
|
||||||
|
AV_CODEC_ID_MVC1,
|
||||||
|
AV_CODEC_ID_MVC2,
|
||||||
|
AV_CODEC_ID_HQX,
|
||||||
|
AV_CODEC_ID_TDSC,
|
||||||
|
AV_CODEC_ID_HQ_HQA,
|
||||||
|
AV_CODEC_ID_HAP,
|
||||||
|
AV_CODEC_ID_DDS,
|
||||||
|
AV_CODEC_ID_DXV,
|
||||||
|
AV_CODEC_ID_SCREENPRESSO,
|
||||||
|
AV_CODEC_ID_RSCC,
|
||||||
|
AV_CODEC_ID_AVS2,
|
||||||
|
|
||||||
|
AV_CODEC_ID_Y41P = 0x8000,
|
||||||
|
AV_CODEC_ID_AVRP,
|
||||||
|
AV_CODEC_ID_012V,
|
||||||
|
AV_CODEC_ID_AVUI,
|
||||||
|
AV_CODEC_ID_AYUV,
|
||||||
|
AV_CODEC_ID_TARGA_Y216,
|
||||||
|
AV_CODEC_ID_V308,
|
||||||
|
AV_CODEC_ID_V408,
|
||||||
|
AV_CODEC_ID_YUV4,
|
||||||
|
AV_CODEC_ID_AVRN,
|
||||||
|
AV_CODEC_ID_CPIA,
|
||||||
|
AV_CODEC_ID_XFACE,
|
||||||
|
AV_CODEC_ID_SNOW,
|
||||||
|
AV_CODEC_ID_SMVJPEG,
|
||||||
|
AV_CODEC_ID_APNG,
|
||||||
|
AV_CODEC_ID_DAALA,
|
||||||
|
AV_CODEC_ID_CFHD,
|
||||||
|
AV_CODEC_ID_TRUEMOTION2RT,
|
||||||
|
AV_CODEC_ID_M101,
|
||||||
|
AV_CODEC_ID_MAGICYUV,
|
||||||
|
AV_CODEC_ID_SHEERVIDEO,
|
||||||
|
AV_CODEC_ID_YLC,
|
||||||
|
AV_CODEC_ID_PSD,
|
||||||
|
AV_CODEC_ID_PIXLET,
|
||||||
|
AV_CODEC_ID_SPEEDHQ,
|
||||||
|
AV_CODEC_ID_FMVC,
|
||||||
|
AV_CODEC_ID_SCPR,
|
||||||
|
AV_CODEC_ID_CLEARVIDEO,
|
||||||
|
AV_CODEC_ID_XPM,
|
||||||
|
AV_CODEC_ID_AV1,
|
||||||
|
AV_CODEC_ID_BITPACKED,
|
||||||
|
AV_CODEC_ID_MSCC,
|
||||||
|
AV_CODEC_ID_SRGC,
|
||||||
|
AV_CODEC_ID_SVG,
|
||||||
|
AV_CODEC_ID_GDV,
|
||||||
|
AV_CODEC_ID_FITS,
|
||||||
|
AV_CODEC_ID_IMM4,
|
||||||
|
AV_CODEC_ID_PROSUMER,
|
||||||
|
AV_CODEC_ID_MWSC,
|
||||||
|
AV_CODEC_ID_WCMV,
|
||||||
|
AV_CODEC_ID_RASC,
|
||||||
|
AV_CODEC_ID_HYMT,
|
||||||
|
AV_CODEC_ID_ARBC,
|
||||||
|
AV_CODEC_ID_AGM,
|
||||||
|
AV_CODEC_ID_LSCR,
|
||||||
|
AV_CODEC_ID_VP4,
|
||||||
|
AV_CODEC_ID_IMM5,
|
||||||
|
AV_CODEC_ID_MVDV,
|
||||||
|
AV_CODEC_ID_MVHA,
|
||||||
|
AV_CODEC_ID_CDTOONS,
|
||||||
|
AV_CODEC_ID_MV30,
|
||||||
|
AV_CODEC_ID_NOTCHLC,
|
||||||
|
AV_CODEC_ID_PFM,
|
||||||
|
|
||||||
|
/* various PCM "codecs" */
|
||||||
|
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
|
||||||
|
AV_CODEC_ID_PCM_S16LE = 0x10000,
|
||||||
|
AV_CODEC_ID_PCM_S16BE,
|
||||||
|
AV_CODEC_ID_PCM_U16LE,
|
||||||
|
AV_CODEC_ID_PCM_U16BE,
|
||||||
|
AV_CODEC_ID_PCM_S8,
|
||||||
|
AV_CODEC_ID_PCM_U8,
|
||||||
|
AV_CODEC_ID_PCM_MULAW,
|
||||||
|
AV_CODEC_ID_PCM_ALAW,
|
||||||
|
AV_CODEC_ID_PCM_S32LE,
|
||||||
|
AV_CODEC_ID_PCM_S32BE,
|
||||||
|
AV_CODEC_ID_PCM_U32LE,
|
||||||
|
AV_CODEC_ID_PCM_U32BE,
|
||||||
|
AV_CODEC_ID_PCM_S24LE,
|
||||||
|
AV_CODEC_ID_PCM_S24BE,
|
||||||
|
AV_CODEC_ID_PCM_U24LE,
|
||||||
|
AV_CODEC_ID_PCM_U24BE,
|
||||||
|
AV_CODEC_ID_PCM_S24DAUD,
|
||||||
|
AV_CODEC_ID_PCM_ZORK,
|
||||||
|
AV_CODEC_ID_PCM_S16LE_PLANAR,
|
||||||
|
AV_CODEC_ID_PCM_DVD,
|
||||||
|
AV_CODEC_ID_PCM_F32BE,
|
||||||
|
AV_CODEC_ID_PCM_F32LE,
|
||||||
|
AV_CODEC_ID_PCM_F64BE,
|
||||||
|
AV_CODEC_ID_PCM_F64LE,
|
||||||
|
AV_CODEC_ID_PCM_BLURAY,
|
||||||
|
AV_CODEC_ID_PCM_LXF,
|
||||||
|
AV_CODEC_ID_S302M,
|
||||||
|
AV_CODEC_ID_PCM_S8_PLANAR,
|
||||||
|
AV_CODEC_ID_PCM_S24LE_PLANAR,
|
||||||
|
AV_CODEC_ID_PCM_S32LE_PLANAR,
|
||||||
|
AV_CODEC_ID_PCM_S16BE_PLANAR,
|
||||||
|
|
||||||
|
AV_CODEC_ID_PCM_S64LE = 0x10800,
|
||||||
|
AV_CODEC_ID_PCM_S64BE,
|
||||||
|
AV_CODEC_ID_PCM_F16LE,
|
||||||
|
AV_CODEC_ID_PCM_F24LE,
|
||||||
|
AV_CODEC_ID_PCM_VIDC,
|
||||||
|
|
||||||
|
/* various ADPCM codecs */
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_WAV,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_DK3,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_DK4,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_WS,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_SMJPEG,
|
||||||
|
AV_CODEC_ID_ADPCM_MS,
|
||||||
|
AV_CODEC_ID_ADPCM_4XM,
|
||||||
|
AV_CODEC_ID_ADPCM_XA,
|
||||||
|
AV_CODEC_ID_ADPCM_ADX,
|
||||||
|
AV_CODEC_ID_ADPCM_EA,
|
||||||
|
AV_CODEC_ID_ADPCM_G726,
|
||||||
|
AV_CODEC_ID_ADPCM_CT,
|
||||||
|
AV_CODEC_ID_ADPCM_SWF,
|
||||||
|
AV_CODEC_ID_ADPCM_YAMAHA,
|
||||||
|
AV_CODEC_ID_ADPCM_SBPRO_4,
|
||||||
|
AV_CODEC_ID_ADPCM_SBPRO_3,
|
||||||
|
AV_CODEC_ID_ADPCM_SBPRO_2,
|
||||||
|
AV_CODEC_ID_ADPCM_THP,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_AMV,
|
||||||
|
AV_CODEC_ID_ADPCM_EA_R1,
|
||||||
|
AV_CODEC_ID_ADPCM_EA_R3,
|
||||||
|
AV_CODEC_ID_ADPCM_EA_R2,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_EA_EACS,
|
||||||
|
AV_CODEC_ID_ADPCM_EA_XAS,
|
||||||
|
AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_ISS,
|
||||||
|
AV_CODEC_ID_ADPCM_G722,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_APC,
|
||||||
|
AV_CODEC_ID_ADPCM_VIMA,
|
||||||
|
|
||||||
|
AV_CODEC_ID_ADPCM_AFC = 0x11800,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_OKI,
|
||||||
|
AV_CODEC_ID_ADPCM_DTK,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_RAD,
|
||||||
|
AV_CODEC_ID_ADPCM_G726LE,
|
||||||
|
AV_CODEC_ID_ADPCM_THP_LE,
|
||||||
|
AV_CODEC_ID_ADPCM_PSX,
|
||||||
|
AV_CODEC_ID_ADPCM_AICA,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_DAT4,
|
||||||
|
AV_CODEC_ID_ADPCM_MTAF,
|
||||||
|
AV_CODEC_ID_ADPCM_AGM,
|
||||||
|
AV_CODEC_ID_ADPCM_ARGO,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_SSI,
|
||||||
|
AV_CODEC_ID_ADPCM_ZORK,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_APM,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_ALP,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_MTF,
|
||||||
|
AV_CODEC_ID_ADPCM_IMA_CUNNING,
|
||||||
|
|
||||||
|
/* AMR */
|
||||||
|
AV_CODEC_ID_AMR_NB = 0x12000,
|
||||||
|
AV_CODEC_ID_AMR_WB,
|
||||||
|
|
||||||
|
/* RealAudio codecs*/
|
||||||
|
AV_CODEC_ID_RA_144 = 0x13000,
|
||||||
|
AV_CODEC_ID_RA_288,
|
||||||
|
|
||||||
|
/* various DPCM codecs */
|
||||||
|
AV_CODEC_ID_ROQ_DPCM = 0x14000,
|
||||||
|
AV_CODEC_ID_INTERPLAY_DPCM,
|
||||||
|
AV_CODEC_ID_XAN_DPCM,
|
||||||
|
AV_CODEC_ID_SOL_DPCM,
|
||||||
|
|
||||||
|
AV_CODEC_ID_SDX2_DPCM = 0x14800,
|
||||||
|
AV_CODEC_ID_GREMLIN_DPCM,
|
||||||
|
AV_CODEC_ID_DERF_DPCM,
|
||||||
|
|
||||||
|
/* audio codecs */
|
||||||
|
AV_CODEC_ID_MP2 = 0x15000,
|
||||||
|
AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
|
||||||
|
AV_CODEC_ID_AAC,
|
||||||
|
AV_CODEC_ID_AC3,
|
||||||
|
AV_CODEC_ID_DTS,
|
||||||
|
AV_CODEC_ID_VORBIS,
|
||||||
|
AV_CODEC_ID_DVAUDIO,
|
||||||
|
AV_CODEC_ID_WMAV1,
|
||||||
|
AV_CODEC_ID_WMAV2,
|
||||||
|
AV_CODEC_ID_MACE3,
|
||||||
|
AV_CODEC_ID_MACE6,
|
||||||
|
AV_CODEC_ID_VMDAUDIO,
|
||||||
|
AV_CODEC_ID_FLAC,
|
||||||
|
AV_CODEC_ID_MP3ADU,
|
||||||
|
AV_CODEC_ID_MP3ON4,
|
||||||
|
AV_CODEC_ID_SHORTEN,
|
||||||
|
AV_CODEC_ID_ALAC,
|
||||||
|
AV_CODEC_ID_WESTWOOD_SND1,
|
||||||
|
AV_CODEC_ID_GSM, ///< as in Berlin toast format
|
||||||
|
AV_CODEC_ID_QDM2,
|
||||||
|
AV_CODEC_ID_COOK,
|
||||||
|
AV_CODEC_ID_TRUESPEECH,
|
||||||
|
AV_CODEC_ID_TTA,
|
||||||
|
AV_CODEC_ID_SMACKAUDIO,
|
||||||
|
AV_CODEC_ID_QCELP,
|
||||||
|
AV_CODEC_ID_WAVPACK,
|
||||||
|
AV_CODEC_ID_DSICINAUDIO,
|
||||||
|
AV_CODEC_ID_IMC,
|
||||||
|
AV_CODEC_ID_MUSEPACK7,
|
||||||
|
AV_CODEC_ID_MLP,
|
||||||
|
AV_CODEC_ID_GSM_MS, /* as found in WAV */
|
||||||
|
AV_CODEC_ID_ATRAC3,
|
||||||
|
AV_CODEC_ID_APE,
|
||||||
|
AV_CODEC_ID_NELLYMOSER,
|
||||||
|
AV_CODEC_ID_MUSEPACK8,
|
||||||
|
AV_CODEC_ID_SPEEX,
|
||||||
|
AV_CODEC_ID_WMAVOICE,
|
||||||
|
AV_CODEC_ID_WMAPRO,
|
||||||
|
AV_CODEC_ID_WMALOSSLESS,
|
||||||
|
AV_CODEC_ID_ATRAC3P,
|
||||||
|
AV_CODEC_ID_EAC3,
|
||||||
|
AV_CODEC_ID_SIPR,
|
||||||
|
AV_CODEC_ID_MP1,
|
||||||
|
AV_CODEC_ID_TWINVQ,
|
||||||
|
AV_CODEC_ID_TRUEHD,
|
||||||
|
AV_CODEC_ID_MP4ALS,
|
||||||
|
AV_CODEC_ID_ATRAC1,
|
||||||
|
AV_CODEC_ID_BINKAUDIO_RDFT,
|
||||||
|
AV_CODEC_ID_BINKAUDIO_DCT,
|
||||||
|
AV_CODEC_ID_AAC_LATM,
|
||||||
|
AV_CODEC_ID_QDMC,
|
||||||
|
AV_CODEC_ID_CELT,
|
||||||
|
AV_CODEC_ID_G723_1,
|
||||||
|
AV_CODEC_ID_G729,
|
||||||
|
AV_CODEC_ID_8SVX_EXP,
|
||||||
|
AV_CODEC_ID_8SVX_FIB,
|
||||||
|
AV_CODEC_ID_BMV_AUDIO,
|
||||||
|
AV_CODEC_ID_RALF,
|
||||||
|
AV_CODEC_ID_IAC,
|
||||||
|
AV_CODEC_ID_ILBC,
|
||||||
|
AV_CODEC_ID_OPUS,
|
||||||
|
AV_CODEC_ID_COMFORT_NOISE,
|
||||||
|
AV_CODEC_ID_TAK,
|
||||||
|
AV_CODEC_ID_METASOUND,
|
||||||
|
AV_CODEC_ID_PAF_AUDIO,
|
||||||
|
AV_CODEC_ID_ON2AVC,
|
||||||
|
AV_CODEC_ID_DSS_SP,
|
||||||
|
AV_CODEC_ID_CODEC2,
|
||||||
|
|
||||||
|
AV_CODEC_ID_FFWAVESYNTH = 0x15800,
|
||||||
|
AV_CODEC_ID_SONIC,
|
||||||
|
AV_CODEC_ID_SONIC_LS,
|
||||||
|
AV_CODEC_ID_EVRC,
|
||||||
|
AV_CODEC_ID_SMV,
|
||||||
|
AV_CODEC_ID_DSD_LSBF,
|
||||||
|
AV_CODEC_ID_DSD_MSBF,
|
||||||
|
AV_CODEC_ID_DSD_LSBF_PLANAR,
|
||||||
|
AV_CODEC_ID_DSD_MSBF_PLANAR,
|
||||||
|
AV_CODEC_ID_4GV,
|
||||||
|
AV_CODEC_ID_INTERPLAY_ACM,
|
||||||
|
AV_CODEC_ID_XMA1,
|
||||||
|
AV_CODEC_ID_XMA2,
|
||||||
|
AV_CODEC_ID_DST,
|
||||||
|
AV_CODEC_ID_ATRAC3AL,
|
||||||
|
AV_CODEC_ID_ATRAC3PAL,
|
||||||
|
AV_CODEC_ID_DOLBY_E,
|
||||||
|
AV_CODEC_ID_APTX,
|
||||||
|
AV_CODEC_ID_APTX_HD,
|
||||||
|
AV_CODEC_ID_SBC,
|
||||||
|
AV_CODEC_ID_ATRAC9,
|
||||||
|
AV_CODEC_ID_HCOM,
|
||||||
|
AV_CODEC_ID_ACELP_KELVIN,
|
||||||
|
AV_CODEC_ID_MPEGH_3D_AUDIO,
|
||||||
|
AV_CODEC_ID_SIREN,
|
||||||
|
AV_CODEC_ID_HCA,
|
||||||
|
|
||||||
|
/* subtitle codecs */
|
||||||
|
AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
|
||||||
|
AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
|
||||||
|
AV_CODEC_ID_DVB_SUBTITLE,
|
||||||
|
AV_CODEC_ID_TEXT, ///< raw UTF-8 text
|
||||||
|
AV_CODEC_ID_XSUB,
|
||||||
|
AV_CODEC_ID_SSA,
|
||||||
|
AV_CODEC_ID_MOV_TEXT,
|
||||||
|
AV_CODEC_ID_HDMV_PGS_SUBTITLE,
|
||||||
|
AV_CODEC_ID_DVB_TELETEXT,
|
||||||
|
AV_CODEC_ID_SRT,
|
||||||
|
|
||||||
|
AV_CODEC_ID_MICRODVD = 0x17800,
|
||||||
|
AV_CODEC_ID_EIA_608,
|
||||||
|
AV_CODEC_ID_JACOSUB,
|
||||||
|
AV_CODEC_ID_SAMI,
|
||||||
|
AV_CODEC_ID_REALTEXT,
|
||||||
|
AV_CODEC_ID_STL,
|
||||||
|
AV_CODEC_ID_SUBVIEWER1,
|
||||||
|
AV_CODEC_ID_SUBVIEWER,
|
||||||
|
AV_CODEC_ID_SUBRIP,
|
||||||
|
AV_CODEC_ID_WEBVTT,
|
||||||
|
AV_CODEC_ID_MPL2,
|
||||||
|
AV_CODEC_ID_VPLAYER,
|
||||||
|
AV_CODEC_ID_PJS,
|
||||||
|
AV_CODEC_ID_ASS,
|
||||||
|
AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
|
||||||
|
AV_CODEC_ID_TTML,
|
||||||
|
AV_CODEC_ID_ARIB_CAPTION,
|
||||||
|
|
||||||
|
/* other specific kind of codecs (generally used for attachments) */
|
||||||
|
AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs.
|
||||||
|
AV_CODEC_ID_TTF = 0x18000,
|
||||||
|
|
||||||
|
AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream.
|
||||||
|
AV_CODEC_ID_EPG,
|
||||||
|
AV_CODEC_ID_BINTEXT = 0x18800,
|
||||||
|
AV_CODEC_ID_XBIN,
|
||||||
|
AV_CODEC_ID_IDF,
|
||||||
|
AV_CODEC_ID_OTF,
|
||||||
|
AV_CODEC_ID_SMPTE_KLV,
|
||||||
|
AV_CODEC_ID_DVD_NAV,
|
||||||
|
AV_CODEC_ID_TIMED_ID3,
|
||||||
|
AV_CODEC_ID_BIN_DATA,
|
||||||
|
|
||||||
|
|
||||||
|
AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
|
||||||
|
|
||||||
|
AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
|
||||||
|
* stream (only used by libavformat) */
|
||||||
|
AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
|
||||||
|
* stream (only used by libavformat) */
|
||||||
|
AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information.
|
||||||
|
AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the type of the given codec.
|
||||||
|
*/
|
||||||
|
enum AVMediaType avcodec_get_type(enum AVCodecID codec_id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of a codec.
|
||||||
|
* @return a static string identifying the codec; never NULL
|
||||||
|
*/
|
||||||
|
const char *avcodec_get_name(enum AVCodecID id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif // AVCODEC_CODEC_ID_H
|
||||||
229
project/ffmpeg_dll_compact_348/include/libavcodec/codec_par.h
Normal file
229
project/ffmpeg_dll_compact_348/include/libavcodec/codec_par.h
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
/*
|
||||||
|
* Codec parameters public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_CODEC_PAR_H
|
||||||
|
#define AVCODEC_CODEC_PAR_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
#include "libavutil/rational.h"
|
||||||
|
#include "libavutil/pixfmt.h"
|
||||||
|
|
||||||
|
#include "codec_id.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavc_core
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum AVFieldOrder {
|
||||||
|
AV_FIELD_UNKNOWN,
|
||||||
|
AV_FIELD_PROGRESSIVE,
|
||||||
|
AV_FIELD_TT, //< Top coded_first, top displayed first
|
||||||
|
AV_FIELD_BB, //< Bottom coded first, bottom displayed first
|
||||||
|
AV_FIELD_TB, //< Top coded first, bottom displayed first
|
||||||
|
AV_FIELD_BT, //< Bottom coded first, top displayed first
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This struct describes the properties of an encoded stream.
|
||||||
|
*
|
||||||
|
* sizeof(AVCodecParameters) is not a part of the public ABI, this struct must
|
||||||
|
* be allocated with avcodec_parameters_alloc() and freed with
|
||||||
|
* avcodec_parameters_free().
|
||||||
|
*/
|
||||||
|
typedef struct AVCodecParameters {
|
||||||
|
/**
|
||||||
|
* General type of the encoded data.
|
||||||
|
*/
|
||||||
|
enum AVMediaType codec_type;
|
||||||
|
/**
|
||||||
|
* Specific type of the encoded data (the codec used).
|
||||||
|
*/
|
||||||
|
enum AVCodecID codec_id;
|
||||||
|
/**
|
||||||
|
* Additional information about the codec (corresponds to the AVI FOURCC).
|
||||||
|
*/
|
||||||
|
uint32_t codec_tag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extra binary data needed for initializing the decoder, codec-dependent.
|
||||||
|
*
|
||||||
|
* Must be allocated with av_malloc() and will be freed by
|
||||||
|
* avcodec_parameters_free(). The allocated size of extradata must be at
|
||||||
|
* least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding
|
||||||
|
* bytes zeroed.
|
||||||
|
*/
|
||||||
|
uint8_t *extradata;
|
||||||
|
/**
|
||||||
|
* Size of the extradata content in bytes.
|
||||||
|
*/
|
||||||
|
int extradata_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* - video: the pixel format, the value corresponds to enum AVPixelFormat.
|
||||||
|
* - audio: the sample format, the value corresponds to enum AVSampleFormat.
|
||||||
|
*/
|
||||||
|
int format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The average bitrate of the encoded data (in bits per second).
|
||||||
|
*/
|
||||||
|
int64_t bit_rate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of bits per sample in the codedwords.
|
||||||
|
*
|
||||||
|
* This is basically the bitrate per sample. It is mandatory for a bunch of
|
||||||
|
* formats to actually decode them. It's the number of bits for one sample in
|
||||||
|
* the actual coded bitstream.
|
||||||
|
*
|
||||||
|
* This could be for example 4 for ADPCM
|
||||||
|
* For PCM formats this matches bits_per_raw_sample
|
||||||
|
* Can be 0
|
||||||
|
*/
|
||||||
|
int bits_per_coded_sample;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the number of valid bits in each output sample. If the
|
||||||
|
* sample format has more bits, the least significant bits are additional
|
||||||
|
* padding bits, which are always 0. Use right shifts to reduce the sample
|
||||||
|
* to its actual size. For example, audio formats with 24 bit samples will
|
||||||
|
* have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32.
|
||||||
|
* To get the original sample use "(int32_t)sample >> 8"."
|
||||||
|
*
|
||||||
|
* For ADPCM this might be 12 or 16 or similar
|
||||||
|
* Can be 0
|
||||||
|
*/
|
||||||
|
int bits_per_raw_sample;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Codec-specific bitstream restrictions that the stream conforms to.
|
||||||
|
*/
|
||||||
|
int profile;
|
||||||
|
int level;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only. The dimensions of the video frame in pixels.
|
||||||
|
*/
|
||||||
|
int width;
|
||||||
|
int height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only. The aspect ratio (width / height) which a single pixel
|
||||||
|
* should have when displayed.
|
||||||
|
*
|
||||||
|
* When the aspect ratio is unknown / undefined, the numerator should be
|
||||||
|
* set to 0 (the denominator may have any value).
|
||||||
|
*/
|
||||||
|
AVRational sample_aspect_ratio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only. The order of the fields in interlaced video.
|
||||||
|
*/
|
||||||
|
enum AVFieldOrder field_order;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only. Additional colorspace characteristics.
|
||||||
|
*/
|
||||||
|
enum AVColorRange color_range;
|
||||||
|
enum AVColorPrimaries color_primaries;
|
||||||
|
enum AVColorTransferCharacteristic color_trc;
|
||||||
|
enum AVColorSpace color_space;
|
||||||
|
enum AVChromaLocation chroma_location;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only. Number of delayed frames.
|
||||||
|
*/
|
||||||
|
int video_delay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio only. The channel layout bitmask. May be 0 if the channel layout is
|
||||||
|
* unknown or unspecified, otherwise the number of bits set must be equal to
|
||||||
|
* the channels field.
|
||||||
|
*/
|
||||||
|
uint64_t channel_layout;
|
||||||
|
/**
|
||||||
|
* Audio only. The number of audio channels.
|
||||||
|
*/
|
||||||
|
int channels;
|
||||||
|
/**
|
||||||
|
* Audio only. The number of audio samples per second.
|
||||||
|
*/
|
||||||
|
int sample_rate;
|
||||||
|
/**
|
||||||
|
* Audio only. The number of bytes per coded audio frame, required by some
|
||||||
|
* formats.
|
||||||
|
*
|
||||||
|
* Corresponds to nBlockAlign in WAVEFORMATEX.
|
||||||
|
*/
|
||||||
|
int block_align;
|
||||||
|
/**
|
||||||
|
* Audio only. Audio frame size, if known. Required by some formats to be static.
|
||||||
|
*/
|
||||||
|
int frame_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio only. The amount of padding (in samples) inserted by the encoder at
|
||||||
|
* the beginning of the audio. I.e. this number of leading decoded samples
|
||||||
|
* must be discarded by the caller to get the original audio without leading
|
||||||
|
* padding.
|
||||||
|
*/
|
||||||
|
int initial_padding;
|
||||||
|
/**
|
||||||
|
* Audio only. The amount of padding (in samples) appended by the encoder to
|
||||||
|
* the end of the audio. I.e. this number of decoded samples must be
|
||||||
|
* discarded by the caller from the end of the stream to get the original
|
||||||
|
* audio without any trailing padding.
|
||||||
|
*/
|
||||||
|
int trailing_padding;
|
||||||
|
/**
|
||||||
|
* Audio only. Number of samples to skip after a discontinuity.
|
||||||
|
*/
|
||||||
|
int seek_preroll;
|
||||||
|
} AVCodecParameters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a new AVCodecParameters and set its fields to default values
|
||||||
|
* (unknown/invalid/0). The returned struct must be freed with
|
||||||
|
* avcodec_parameters_free().
|
||||||
|
*/
|
||||||
|
AVCodecParameters *avcodec_parameters_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free an AVCodecParameters instance and everything associated with it and
|
||||||
|
* write NULL to the supplied pointer.
|
||||||
|
*/
|
||||||
|
void avcodec_parameters_free(AVCodecParameters **par);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the contents of src to dst. Any allocated fields in dst are freed and
|
||||||
|
* replaced with newly allocated duplicates of the corresponding fields in src.
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, a negative AVERROR code on failure.
|
||||||
|
*/
|
||||||
|
int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif // AVCODEC_CODEC_PAR_H
|
||||||
112
project/ffmpeg_dll_compact_348/include/libavcodec/d3d11va.h
Normal file
112
project/ffmpeg_dll_compact_348/include/libavcodec/d3d11va.h
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
/*
|
||||||
|
* Direct3D11 HW acceleration
|
||||||
|
*
|
||||||
|
* copyright (c) 2009 Laurent Aimar
|
||||||
|
* copyright (c) 2015 Steve Lhomme
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_D3D11VA_H
|
||||||
|
#define AVCODEC_D3D11VA_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_d3d11va
|
||||||
|
* Public libavcodec D3D11VA header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
|
||||||
|
#undef _WIN32_WINNT
|
||||||
|
#define _WIN32_WINNT 0x0602
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <d3d11.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_d3d11va Direct3D11
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for Direct3D11 and old UVD/UVD+ ATI video cards
|
||||||
|
#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for Direct3D11 and old Intel GPUs with ClearVideo interface
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to provides the necessary configurations and data
|
||||||
|
* to the Direct3D11 FFmpeg HWAccel implementation.
|
||||||
|
*
|
||||||
|
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||||
|
*
|
||||||
|
* Use av_d3d11va_alloc_context() exclusively to allocate an AVD3D11VAContext.
|
||||||
|
*/
|
||||||
|
typedef struct AVD3D11VAContext {
|
||||||
|
/**
|
||||||
|
* D3D11 decoder object
|
||||||
|
*/
|
||||||
|
ID3D11VideoDecoder *decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* D3D11 VideoContext
|
||||||
|
*/
|
||||||
|
ID3D11VideoContext *video_context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* D3D11 configuration used to create the decoder
|
||||||
|
*/
|
||||||
|
D3D11_VIDEO_DECODER_CONFIG *cfg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of surface in the surface array
|
||||||
|
*/
|
||||||
|
unsigned surface_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of Direct3D surfaces used to create the decoder
|
||||||
|
*/
|
||||||
|
ID3D11VideoDecoderOutputView **surface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A bit field configuring the workarounds needed for using the decoder
|
||||||
|
*/
|
||||||
|
uint64_t workaround;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private to the FFmpeg AVHWAccel implementation
|
||||||
|
*/
|
||||||
|
unsigned report_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mutex to access video_context
|
||||||
|
*/
|
||||||
|
HANDLE context_mutex;
|
||||||
|
} AVD3D11VAContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVD3D11VAContext.
|
||||||
|
*
|
||||||
|
* @return Newly-allocated AVD3D11VAContext or NULL on failure.
|
||||||
|
*/
|
||||||
|
AVD3D11VAContext *av_d3d11va_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_D3D11VA_H */
|
||||||
131
project/ffmpeg_dll_compact_348/include/libavcodec/dirac.h
Normal file
131
project/ffmpeg_dll_compact_348/include/libavcodec/dirac.h
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2007 Marco Gerards <marco@gnu.org>
|
||||||
|
* Copyright (C) 2009 David Conrad
|
||||||
|
* Copyright (C) 2011 Jordi Ortiz
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_DIRAC_H
|
||||||
|
#define AVCODEC_DIRAC_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Interface to Dirac Decoder/Encoder
|
||||||
|
* @author Marco Gerards <marco@gnu.org>
|
||||||
|
* @author David Conrad
|
||||||
|
* @author Jordi Ortiz
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The spec limits the number of wavelet decompositions to 4 for both
|
||||||
|
* level 1 (VC-2) and 128 (long-gop default).
|
||||||
|
* 5 decompositions is the maximum before >16-bit buffers are needed.
|
||||||
|
* Schroedinger allows this for DD 9,7 and 13,7 wavelets only, limiting
|
||||||
|
* the others to 4 decompositions (or 3 for the fidelity filter).
|
||||||
|
*
|
||||||
|
* We use this instead of MAX_DECOMPOSITIONS to save some memory.
|
||||||
|
*/
|
||||||
|
#define MAX_DWT_LEVELS 5
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse code values:
|
||||||
|
*
|
||||||
|
* Dirac Specification ->
|
||||||
|
* 9.6.1 Table 9.1
|
||||||
|
*
|
||||||
|
* VC-2 Specification ->
|
||||||
|
* 10.4.1 Table 10.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum DiracParseCodes {
|
||||||
|
DIRAC_PCODE_SEQ_HEADER = 0x00,
|
||||||
|
DIRAC_PCODE_END_SEQ = 0x10,
|
||||||
|
DIRAC_PCODE_AUX = 0x20,
|
||||||
|
DIRAC_PCODE_PAD = 0x30,
|
||||||
|
DIRAC_PCODE_PICTURE_CODED = 0x08,
|
||||||
|
DIRAC_PCODE_PICTURE_RAW = 0x48,
|
||||||
|
DIRAC_PCODE_PICTURE_LOW_DEL = 0xC8,
|
||||||
|
DIRAC_PCODE_PICTURE_HQ = 0xE8,
|
||||||
|
DIRAC_PCODE_INTER_NOREF_CO1 = 0x0A,
|
||||||
|
DIRAC_PCODE_INTER_NOREF_CO2 = 0x09,
|
||||||
|
DIRAC_PCODE_INTER_REF_CO1 = 0x0D,
|
||||||
|
DIRAC_PCODE_INTER_REF_CO2 = 0x0E,
|
||||||
|
DIRAC_PCODE_INTRA_REF_CO = 0x0C,
|
||||||
|
DIRAC_PCODE_INTRA_REF_RAW = 0x4C,
|
||||||
|
DIRAC_PCODE_INTRA_REF_PICT = 0xCC,
|
||||||
|
DIRAC_PCODE_MAGIC = 0x42424344,
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct DiracVersionInfo {
|
||||||
|
int major;
|
||||||
|
int minor;
|
||||||
|
} DiracVersionInfo;
|
||||||
|
|
||||||
|
typedef struct AVDiracSeqHeader {
|
||||||
|
unsigned width;
|
||||||
|
unsigned height;
|
||||||
|
uint8_t chroma_format; ///< 0: 444 1: 422 2: 420
|
||||||
|
|
||||||
|
uint8_t interlaced;
|
||||||
|
uint8_t top_field_first;
|
||||||
|
|
||||||
|
uint8_t frame_rate_index; ///< index into dirac_frame_rate[]
|
||||||
|
uint8_t aspect_ratio_index; ///< index into dirac_aspect_ratio[]
|
||||||
|
|
||||||
|
uint16_t clean_width;
|
||||||
|
uint16_t clean_height;
|
||||||
|
uint16_t clean_left_offset;
|
||||||
|
uint16_t clean_right_offset;
|
||||||
|
|
||||||
|
uint8_t pixel_range_index; ///< index into dirac_pixel_range_presets[]
|
||||||
|
uint8_t color_spec_index; ///< index into dirac_color_spec_presets[]
|
||||||
|
|
||||||
|
int profile;
|
||||||
|
int level;
|
||||||
|
|
||||||
|
AVRational framerate;
|
||||||
|
AVRational sample_aspect_ratio;
|
||||||
|
|
||||||
|
enum AVPixelFormat pix_fmt;
|
||||||
|
enum AVColorRange color_range;
|
||||||
|
enum AVColorPrimaries color_primaries;
|
||||||
|
enum AVColorTransferCharacteristic color_trc;
|
||||||
|
enum AVColorSpace colorspace;
|
||||||
|
|
||||||
|
DiracVersionInfo version;
|
||||||
|
int bit_depth;
|
||||||
|
} AVDiracSeqHeader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a Dirac sequence header.
|
||||||
|
*
|
||||||
|
* @param dsh this function will allocate and fill an AVDiracSeqHeader struct
|
||||||
|
* and write it into this pointer. The caller must free it with
|
||||||
|
* av_free().
|
||||||
|
* @param buf the data buffer
|
||||||
|
* @param buf_size the size of the data buffer in bytes
|
||||||
|
* @param log_ctx if non-NULL, this function will log errors here
|
||||||
|
* @return 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_dirac_parse_sequence_header(AVDiracSeqHeader **dsh,
|
||||||
|
const uint8_t *buf, size_t buf_size,
|
||||||
|
void *log_ctx);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_DIRAC_H */
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_DV_PROFILE_H
|
||||||
|
#define AVCODEC_DV_PROFILE_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/pixfmt.h"
|
||||||
|
#include "libavutil/rational.h"
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
/* minimum number of bytes to read from a DV stream in order to
|
||||||
|
* determine the profile */
|
||||||
|
#define DV_PROFILE_BYTES (6 * 80) /* 6 DIF blocks */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* AVDVProfile is used to express the differences between various
|
||||||
|
* DV flavors. For now it's primarily used for differentiating
|
||||||
|
* 525/60 and 625/50, but the plans are to use it for various
|
||||||
|
* DV specs as well (e.g. SMPTE314M vs. IEC 61834).
|
||||||
|
*/
|
||||||
|
typedef struct AVDVProfile {
|
||||||
|
int dsf; /* value of the dsf in the DV header */
|
||||||
|
int video_stype; /* stype for VAUX source pack */
|
||||||
|
int frame_size; /* total size of one frame in bytes */
|
||||||
|
int difseg_size; /* number of DIF segments per DIF channel */
|
||||||
|
int n_difchan; /* number of DIF channels per frame */
|
||||||
|
AVRational time_base; /* 1/framerate */
|
||||||
|
int ltc_divisor; /* FPS from the LTS standpoint */
|
||||||
|
int height; /* picture height in pixels */
|
||||||
|
int width; /* picture width in pixels */
|
||||||
|
AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */
|
||||||
|
enum AVPixelFormat pix_fmt; /* picture pixel format */
|
||||||
|
int bpm; /* blocks per macroblock */
|
||||||
|
const uint8_t *block_sizes; /* AC block sizes, in bits */
|
||||||
|
int audio_stride; /* size of audio_shuffle table */
|
||||||
|
int audio_min_samples[3]; /* min amount of audio samples */
|
||||||
|
/* for 48kHz, 44.1kHz and 32kHz */
|
||||||
|
int audio_samples_dist[5]; /* how many samples are supposed to be */
|
||||||
|
/* in each frame in a 5 frames window */
|
||||||
|
const uint8_t (*audio_shuffle)[9]; /* PCM shuffling table */
|
||||||
|
} AVDVProfile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a DV profile for the provided compressed frame.
|
||||||
|
*
|
||||||
|
* @param sys the profile used for the previous frame, may be NULL
|
||||||
|
* @param frame the compressed data buffer
|
||||||
|
* @param buf_size size of the buffer in bytes
|
||||||
|
* @return the DV profile for the supplied data or NULL on failure
|
||||||
|
*/
|
||||||
|
const AVDVProfile *av_dv_frame_profile(const AVDVProfile *sys,
|
||||||
|
const uint8_t *frame, unsigned buf_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a DV profile for the provided stream parameters.
|
||||||
|
*/
|
||||||
|
const AVDVProfile *av_dv_codec_profile(int width, int height, enum AVPixelFormat pix_fmt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a DV profile for the provided stream parameters.
|
||||||
|
* The frame rate is used as a best-effort parameter.
|
||||||
|
*/
|
||||||
|
const AVDVProfile *av_dv_codec_profile2(int width, int height, enum AVPixelFormat pix_fmt, AVRational frame_rate);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_DV_PROFILE_H */
|
||||||
93
project/ffmpeg_dll_compact_348/include/libavcodec/dxva2.h
Normal file
93
project/ffmpeg_dll_compact_348/include/libavcodec/dxva2.h
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* DXVA2 HW acceleration
|
||||||
|
*
|
||||||
|
* copyright (c) 2009 Laurent Aimar
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_DXVA2_H
|
||||||
|
#define AVCODEC_DXVA2_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_dxva2
|
||||||
|
* Public libavcodec DXVA2 header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0602
|
||||||
|
#undef _WIN32_WINNT
|
||||||
|
#define _WIN32_WINNT 0x0602
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <d3d9.h>
|
||||||
|
#include <dxva2api.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_dxva2 DXVA2
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FF_DXVA2_WORKAROUND_SCALING_LIST_ZIGZAG 1 ///< Work around for DXVA2 and old UVD/UVD+ ATI video cards
|
||||||
|
#define FF_DXVA2_WORKAROUND_INTEL_CLEARVIDEO 2 ///< Work around for DXVA2 and old Intel GPUs with ClearVideo interface
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to provides the necessary configurations and data
|
||||||
|
* to the DXVA2 FFmpeg HWAccel implementation.
|
||||||
|
*
|
||||||
|
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||||
|
*/
|
||||||
|
struct dxva_context {
|
||||||
|
/**
|
||||||
|
* DXVA2 decoder object
|
||||||
|
*/
|
||||||
|
IDirectXVideoDecoder *decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DXVA2 configuration used to create the decoder
|
||||||
|
*/
|
||||||
|
const DXVA2_ConfigPictureDecode *cfg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of surface in the surface array
|
||||||
|
*/
|
||||||
|
unsigned surface_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The array of Direct3D surfaces used to create the decoder
|
||||||
|
*/
|
||||||
|
LPDIRECT3DSURFACE9 *surface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A bit field configuring the workarounds needed for using the decoder
|
||||||
|
*/
|
||||||
|
uint64_t workaround;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private to the FFmpeg AVHWAccel implementation
|
||||||
|
*/
|
||||||
|
unsigned report_id;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_DXVA2_H */
|
||||||
46
project/ffmpeg_dll_compact_348/include/libavcodec/jni.h
Normal file
46
project/ffmpeg_dll_compact_348/include/libavcodec/jni.h
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* JNI public API functions
|
||||||
|
*
|
||||||
|
* Copyright (c) 2015-2016 Matthieu Bouron <matthieu.bouron stupeflix.com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_JNI_H
|
||||||
|
#define AVCODEC_JNI_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Manually set a Java virtual machine which will be used to retrieve the JNI
|
||||||
|
* environment. Once a Java VM is set it cannot be changed afterwards, meaning
|
||||||
|
* you can call multiple times av_jni_set_java_vm with the same Java VM pointer
|
||||||
|
* however it will error out if you try to set a different Java VM.
|
||||||
|
*
|
||||||
|
* @param vm Java virtual machine
|
||||||
|
* @param log_ctx context used for logging, can be NULL
|
||||||
|
* @return 0 on success, < 0 otherwise
|
||||||
|
*/
|
||||||
|
int av_jni_set_java_vm(void *vm, void *log_ctx);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the Java virtual machine which has been set with av_jni_set_java_vm.
|
||||||
|
*
|
||||||
|
* @param vm Java virtual machine
|
||||||
|
* @return a pointer to the Java virtual machine
|
||||||
|
*/
|
||||||
|
void *av_jni_get_java_vm(void *log_ctx);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_JNI_H */
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* Android MediaCodec public API
|
||||||
|
*
|
||||||
|
* Copyright (c) 2016 Matthieu Bouron <matthieu.bouron stupeflix.com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_MEDIACODEC_H
|
||||||
|
#define AVCODEC_MEDIACODEC_H
|
||||||
|
|
||||||
|
#include "libavcodec/avcodec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure holds a reference to a android/view/Surface object that will
|
||||||
|
* be used as output by the decoder.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef struct AVMediaCodecContext {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* android/view/Surface object reference.
|
||||||
|
*/
|
||||||
|
void *surface;
|
||||||
|
|
||||||
|
} AVMediaCodecContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize a MediaCodec context.
|
||||||
|
*
|
||||||
|
* When decoding with MediaCodec is finished, the caller must free the
|
||||||
|
* MediaCodec context with av_mediacodec_default_free.
|
||||||
|
*
|
||||||
|
* @return a pointer to a newly allocated AVMediaCodecContext on success, NULL otherwise
|
||||||
|
*/
|
||||||
|
AVMediaCodecContext *av_mediacodec_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience function that sets up the MediaCodec context.
|
||||||
|
*
|
||||||
|
* @param avctx codec context
|
||||||
|
* @param ctx MediaCodec context to initialize
|
||||||
|
* @param surface reference to an android/view/Surface
|
||||||
|
* @return 0 on success, < 0 otherwise
|
||||||
|
*/
|
||||||
|
int av_mediacodec_default_init(AVCodecContext *avctx, AVMediaCodecContext *ctx, void *surface);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function must be called to free the MediaCodec context initialized with
|
||||||
|
* av_mediacodec_default_init().
|
||||||
|
*
|
||||||
|
* @param avctx codec context
|
||||||
|
*/
|
||||||
|
void av_mediacodec_default_free(AVCodecContext *avctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opaque structure representing a MediaCodec buffer to render.
|
||||||
|
*/
|
||||||
|
typedef struct MediaCodecBuffer AVMediaCodecBuffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Release a MediaCodec buffer and render it to the surface that is associated
|
||||||
|
* with the decoder. This function should only be called once on a given
|
||||||
|
* buffer, once released the underlying buffer returns to the codec, thus
|
||||||
|
* subsequent calls to this function will have no effect.
|
||||||
|
*
|
||||||
|
* @param buffer the buffer to render
|
||||||
|
* @param render 1 to release and render the buffer to the surface or 0 to
|
||||||
|
* discard the buffer
|
||||||
|
* @return 0 on success, < 0 otherwise
|
||||||
|
*/
|
||||||
|
int av_mediacodec_release_buffer(AVMediaCodecBuffer *buffer, int render);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_MEDIACODEC_H */
|
||||||
722
project/ffmpeg_dll_compact_348/include/libavcodec/packet.h
Normal file
722
project/ffmpeg_dll_compact_348/include/libavcodec/packet.h
Normal file
@@ -0,0 +1,722 @@
|
|||||||
|
/*
|
||||||
|
* AVPacket public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_PACKET_H
|
||||||
|
#define AVCODEC_PACKET_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/attributes.h"
|
||||||
|
#include "libavutil/buffer.h"
|
||||||
|
#include "libavutil/dict.h"
|
||||||
|
#include "libavutil/rational.h"
|
||||||
|
|
||||||
|
#include "libavcodec/version.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_packet AVPacket
|
||||||
|
*
|
||||||
|
* Types and functions for working with AVPacket.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
enum AVPacketSideDataType {
|
||||||
|
/**
|
||||||
|
* An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE
|
||||||
|
* bytes worth of palette. This side data signals that a new palette is
|
||||||
|
* present.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_PALETTE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format
|
||||||
|
* that the extradata buffer was changed and the receiving side should
|
||||||
|
* act upon it appropriately. The new extradata is embedded in the side
|
||||||
|
* data buffer and should be immediately used for processing the current
|
||||||
|
* frame or packet.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_NEW_EXTRADATA,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
|
||||||
|
* @code
|
||||||
|
* u32le param_flags
|
||||||
|
* if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT)
|
||||||
|
* s32le channel_count
|
||||||
|
* if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT)
|
||||||
|
* u64le channel_layout
|
||||||
|
* if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
|
||||||
|
* s32le sample_rate
|
||||||
|
* if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
|
||||||
|
* s32le width
|
||||||
|
* s32le height
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_PARAM_CHANGE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of
|
||||||
|
* structures with info about macroblocks relevant to splitting the
|
||||||
|
* packet into smaller packets on macroblock edges (e.g. as for RFC 2190).
|
||||||
|
* That is, it does not necessarily contain info about all macroblocks,
|
||||||
|
* as long as the distance between macroblocks in the info is smaller
|
||||||
|
* than the target payload size.
|
||||||
|
* Each MB info structure is 12 bytes, and is laid out as follows:
|
||||||
|
* @code
|
||||||
|
* u32le bit offset from the start of the packet
|
||||||
|
* u8 current quantizer at the start of the macroblock
|
||||||
|
* u8 GOB number
|
||||||
|
* u16le macroblock address within the GOB
|
||||||
|
* u8 horizontal MV predictor
|
||||||
|
* u8 vertical MV predictor
|
||||||
|
* u8 horizontal MV predictor for block number 3
|
||||||
|
* u8 vertical MV predictor for block number 3
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_H263_MB_INFO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data should be associated with an audio stream and contains
|
||||||
|
* ReplayGain information in form of the AVReplayGain struct.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_REPLAYGAIN,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data contains a 3x3 transformation matrix describing an affine
|
||||||
|
* transformation that needs to be applied to the decoded video frames for
|
||||||
|
* correct presentation.
|
||||||
|
*
|
||||||
|
* See libavutil/display.h for a detailed description of the data.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_DISPLAYMATRIX,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data should be associated with a video stream and contains
|
||||||
|
* Stereoscopic 3D information in form of the AVStereo3D struct.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_STEREO3D,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data should be associated with an audio stream and corresponds
|
||||||
|
* to enum AVAudioServiceType.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_AUDIO_SERVICE_TYPE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data contains quality related information from the encoder.
|
||||||
|
* @code
|
||||||
|
* u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).
|
||||||
|
* u8 picture type
|
||||||
|
* u8 error count
|
||||||
|
* u16 reserved
|
||||||
|
* u64le[error count] sum of squared differences between encoder in and output
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_QUALITY_STATS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data contains an integer value representing the stream index
|
||||||
|
* of a "fallback" track. A fallback track indicates an alternate
|
||||||
|
* track to use when the current track can not be decoded for some reason.
|
||||||
|
* e.g. no decoder available for codec.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_FALLBACK_TRACK,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data corresponds to the AVCPBProperties struct.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_CPB_PROPERTIES,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recommmends skipping the specified number of samples
|
||||||
|
* @code
|
||||||
|
* u32le number of samples to skip from start of this packet
|
||||||
|
* u32le number of samples to skip from end of this packet
|
||||||
|
* u8 reason for start skip
|
||||||
|
* u8 reason for end skip (0=padding silence, 1=convergence)
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_SKIP_SAMPLES,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An AV_PKT_DATA_JP_DUALMONO side data packet indicates that
|
||||||
|
* the packet may contain "dual mono" audio specific to Japanese DTV
|
||||||
|
* and if it is true, recommends only the selected channel to be used.
|
||||||
|
* @code
|
||||||
|
* u8 selected channels (0=mail/left, 1=sub/right, 2=both)
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_JP_DUALMONO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of zero terminated key/value strings. There is no end marker for
|
||||||
|
* the list, so it is required to rely on the side data size to stop.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_STRINGS_METADATA,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subtitle event position
|
||||||
|
* @code
|
||||||
|
* u32le x1
|
||||||
|
* u32le y1
|
||||||
|
* u32le x2
|
||||||
|
* u32le y2
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_SUBTITLE_POSITION,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data found in BlockAdditional element of matroska container. There is
|
||||||
|
* no end marker for the data, so it is required to rely on the side data
|
||||||
|
* size to recognize the end. 8 byte id (as found in BlockAddId) followed
|
||||||
|
* by data.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The optional first identifier line of a WebVTT cue.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_WEBVTT_IDENTIFIER,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The optional settings (rendering instructions) that immediately
|
||||||
|
* follow the timestamp specifier of a WebVTT cue.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_WEBVTT_SETTINGS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of zero terminated key/value strings. There is no end marker for
|
||||||
|
* the list, so it is required to rely on the side data size to stop. This
|
||||||
|
* side data includes updated metadata which appeared in the stream.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_METADATA_UPDATE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MPEGTS stream ID as uint8_t, this is required to pass the stream ID
|
||||||
|
* information from the demuxer to the corresponding muxer.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_MPEGTS_STREAM_ID,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mastering display metadata (based on SMPTE-2086:2014). This metadata
|
||||||
|
* should be associated with a video stream and contains data in the form
|
||||||
|
* of the AVMasteringDisplayMetadata struct.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data should be associated with a video stream and corresponds
|
||||||
|
* to the AVSphericalMapping structure.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_SPHERICAL,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Content light level (based on CTA-861.3). This metadata should be
|
||||||
|
* associated with a video stream and contains data in the form of the
|
||||||
|
* AVContentLightMetadata struct.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ATSC A53 Part 4 Closed Captions. This metadata should be associated with
|
||||||
|
* a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data.
|
||||||
|
* The number of bytes of CC data is AVPacketSideData.size.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_A53_CC,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data is encryption initialization data.
|
||||||
|
* The format is not part of ABI, use av_encryption_init_info_* methods to
|
||||||
|
* access.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_ENCRYPTION_INIT_INFO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This side data contains encryption info for how to decrypt the packet.
|
||||||
|
* The format is not part of ABI, use av_encryption_info_* methods to access.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_ENCRYPTION_INFO,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Active Format Description data consisting of a single byte as specified
|
||||||
|
* in ETSI TS 101 154 using AVActiveFormatDescription enum.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_AFD,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Producer Reference Time data corresponding to the AVProducerReferenceTime struct,
|
||||||
|
* usually exported by some encoders (on demand through the prft flag set in the
|
||||||
|
* AVCodecContext export_side_data field).
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_PRFT,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ICC profile data consisting of an opaque octet buffer following the
|
||||||
|
* format described by ISO 15076-1.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_ICC_PROFILE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOVI configuration
|
||||||
|
* ref:
|
||||||
|
* dolby-vision-bitstreams-within-the-iso-base-media-file-format-v2.1.2, section 2.2
|
||||||
|
* dolby-vision-bitstreams-in-mpeg-2-transport-stream-multiplex-v1.2, section 3.3
|
||||||
|
* Tags are stored in struct AVDOVIDecoderConfigurationRecord.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_DOVI_CONF,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of side data types.
|
||||||
|
* This is not part of the public API/ABI in the sense that it may
|
||||||
|
* change when new side data types are added.
|
||||||
|
* This must stay the last enum value.
|
||||||
|
* If its value becomes huge, some code using it
|
||||||
|
* needs to be updated as it assumes it to be smaller than other limits.
|
||||||
|
*/
|
||||||
|
AV_PKT_DATA_NB
|
||||||
|
};
|
||||||
|
|
||||||
|
#define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED
|
||||||
|
|
||||||
|
typedef struct AVPacketSideData {
|
||||||
|
uint8_t *data;
|
||||||
|
int size;
|
||||||
|
enum AVPacketSideDataType type;
|
||||||
|
} AVPacketSideData;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure stores compressed data. It is typically exported by demuxers
|
||||||
|
* and then passed as input to decoders, or received as output from encoders and
|
||||||
|
* then passed to muxers.
|
||||||
|
*
|
||||||
|
* For video, it should typically contain one compressed frame. For audio it may
|
||||||
|
* contain several compressed frames. Encoders are allowed to output empty
|
||||||
|
* packets, with no compressed data, containing only side data
|
||||||
|
* (e.g. to update some stream parameters at the end of encoding).
|
||||||
|
*
|
||||||
|
* AVPacket is one of the few structs in FFmpeg, whose size is a part of public
|
||||||
|
* ABI. Thus it may be allocated on stack and no new fields can be added to it
|
||||||
|
* without libavcodec and libavformat major bump.
|
||||||
|
*
|
||||||
|
* The semantics of data ownership depends on the buf field.
|
||||||
|
* If it is set, the packet data is dynamically allocated and is
|
||||||
|
* valid indefinitely until a call to av_packet_unref() reduces the
|
||||||
|
* reference count to 0.
|
||||||
|
*
|
||||||
|
* If the buf field is not set av_packet_ref() would make a copy instead
|
||||||
|
* of increasing the reference count.
|
||||||
|
*
|
||||||
|
* The side data is always allocated with av_malloc(), copied by
|
||||||
|
* av_packet_ref() and freed by av_packet_unref().
|
||||||
|
*
|
||||||
|
* @see av_packet_ref
|
||||||
|
* @see av_packet_unref
|
||||||
|
*/
|
||||||
|
typedef struct AVPacket {
|
||||||
|
/**
|
||||||
|
* A reference to the reference-counted buffer where the packet data is
|
||||||
|
* stored.
|
||||||
|
* May be NULL, then the packet data is not reference-counted.
|
||||||
|
*/
|
||||||
|
AVBufferRef *buf;
|
||||||
|
/**
|
||||||
|
* Presentation timestamp in AVStream->time_base units; the time at which
|
||||||
|
* the decompressed packet will be presented to the user.
|
||||||
|
* Can be AV_NOPTS_VALUE if it is not stored in the file.
|
||||||
|
* pts MUST be larger or equal to dts as presentation cannot happen before
|
||||||
|
* decompression, unless one wants to view hex dumps. Some formats misuse
|
||||||
|
* the terms dts and pts/cts to mean something different. Such timestamps
|
||||||
|
* must be converted to true pts/dts before they are stored in AVPacket.
|
||||||
|
*/
|
||||||
|
int64_t pts;
|
||||||
|
/**
|
||||||
|
* Decompression timestamp in AVStream->time_base units; the time at which
|
||||||
|
* the packet is decompressed.
|
||||||
|
* Can be AV_NOPTS_VALUE if it is not stored in the file.
|
||||||
|
*/
|
||||||
|
int64_t dts;
|
||||||
|
uint8_t *data;
|
||||||
|
int size;
|
||||||
|
int stream_index;
|
||||||
|
/**
|
||||||
|
* A combination of AV_PKT_FLAG values
|
||||||
|
*/
|
||||||
|
int flags;
|
||||||
|
/**
|
||||||
|
* Additional packet data that can be provided by the container.
|
||||||
|
* Packet can contain several types of side information.
|
||||||
|
*/
|
||||||
|
AVPacketSideData *side_data;
|
||||||
|
int side_data_elems;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Duration of this packet in AVStream->time_base units, 0 if unknown.
|
||||||
|
* Equals next_pts - this_pts in presentation order.
|
||||||
|
*/
|
||||||
|
int64_t duration;
|
||||||
|
|
||||||
|
int64_t pos; ///< byte position in stream, -1 if unknown
|
||||||
|
|
||||||
|
#if FF_API_CONVERGENCE_DURATION
|
||||||
|
/**
|
||||||
|
* @deprecated Same as the duration field, but as int64_t. This was required
|
||||||
|
* for Matroska subtitles, whose duration values could overflow when the
|
||||||
|
* duration field was still an int.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int64_t convergence_duration;
|
||||||
|
#endif
|
||||||
|
} AVPacket;
|
||||||
|
|
||||||
|
#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
|
||||||
|
#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
|
||||||
|
/**
|
||||||
|
* Flag is used to discard packets which are required to maintain valid
|
||||||
|
* decoder state but are not required for output and should be dropped
|
||||||
|
* after decoding.
|
||||||
|
**/
|
||||||
|
#define AV_PKT_FLAG_DISCARD 0x0004
|
||||||
|
/**
|
||||||
|
* The packet comes from a trusted source.
|
||||||
|
*
|
||||||
|
* Otherwise-unsafe constructs such as arbitrary pointers to data
|
||||||
|
* outside the packet may be followed.
|
||||||
|
*/
|
||||||
|
#define AV_PKT_FLAG_TRUSTED 0x0008
|
||||||
|
/**
|
||||||
|
* Flag is used to indicate packets that contain frames that can
|
||||||
|
* be discarded by the decoder. I.e. Non-reference frames.
|
||||||
|
*/
|
||||||
|
#define AV_PKT_FLAG_DISPOSABLE 0x0010
|
||||||
|
|
||||||
|
enum AVSideDataParamChangeFlags {
|
||||||
|
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001,
|
||||||
|
AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002,
|
||||||
|
AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004,
|
||||||
|
AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVPacket and set its fields to default values. The resulting
|
||||||
|
* struct must be freed using av_packet_free().
|
||||||
|
*
|
||||||
|
* @return An AVPacket filled with default values or NULL on failure.
|
||||||
|
*
|
||||||
|
* @note this only allocates the AVPacket itself, not the data buffers. Those
|
||||||
|
* must be allocated through other means such as av_new_packet.
|
||||||
|
*
|
||||||
|
* @see av_new_packet
|
||||||
|
*/
|
||||||
|
AVPacket *av_packet_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new packet that references the same data as src.
|
||||||
|
*
|
||||||
|
* This is a shortcut for av_packet_alloc()+av_packet_ref().
|
||||||
|
*
|
||||||
|
* @return newly created AVPacket on success, NULL on error.
|
||||||
|
*
|
||||||
|
* @see av_packet_alloc
|
||||||
|
* @see av_packet_ref
|
||||||
|
*/
|
||||||
|
AVPacket *av_packet_clone(const AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free the packet, if the packet is reference counted, it will be
|
||||||
|
* unreferenced first.
|
||||||
|
*
|
||||||
|
* @param pkt packet to be freed. The pointer will be set to NULL.
|
||||||
|
* @note passing NULL is a no-op.
|
||||||
|
*/
|
||||||
|
void av_packet_free(AVPacket **pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize optional fields of a packet with default values.
|
||||||
|
*
|
||||||
|
* Note, this does not touch the data and size members, which have to be
|
||||||
|
* initialized separately.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
*/
|
||||||
|
void av_init_packet(AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate the payload of a packet and initialize its fields with
|
||||||
|
* default values.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param size wanted payload size
|
||||||
|
* @return 0 if OK, AVERROR_xxx otherwise
|
||||||
|
*/
|
||||||
|
int av_new_packet(AVPacket *pkt, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reduce packet size, correctly zeroing padding
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param size new size
|
||||||
|
*/
|
||||||
|
void av_shrink_packet(AVPacket *pkt, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increase packet size, correctly zeroing padding
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param grow_by number of bytes by which to increase the size of the packet
|
||||||
|
*/
|
||||||
|
int av_grow_packet(AVPacket *pkt, int grow_by);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a reference-counted packet from av_malloc()ed data.
|
||||||
|
*
|
||||||
|
* @param pkt packet to be initialized. This function will set the data, size,
|
||||||
|
* and buf fields, all others are left untouched.
|
||||||
|
* @param data Data allocated by av_malloc() to be used as packet data. If this
|
||||||
|
* function returns successfully, the data is owned by the underlying AVBuffer.
|
||||||
|
* The caller may not access the data through other means.
|
||||||
|
* @param size size of data in bytes, without the padding. I.e. the full buffer
|
||||||
|
* size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on error
|
||||||
|
*/
|
||||||
|
int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
|
||||||
|
|
||||||
|
#if FF_API_AVPACKET_OLD_API
|
||||||
|
/**
|
||||||
|
* @warning This is a hack - the packet memory allocation stuff is broken. The
|
||||||
|
* packet is allocated if it was not really allocated.
|
||||||
|
*
|
||||||
|
* @deprecated Use av_packet_ref or av_packet_make_refcounted
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_dup_packet(AVPacket *pkt);
|
||||||
|
/**
|
||||||
|
* Copy packet, including contents
|
||||||
|
*
|
||||||
|
* @return 0 on success, negative AVERROR on fail
|
||||||
|
*
|
||||||
|
* @deprecated Use av_packet_ref
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_copy_packet(AVPacket *dst, const AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy packet side data
|
||||||
|
*
|
||||||
|
* @return 0 on success, negative AVERROR on fail
|
||||||
|
*
|
||||||
|
* @deprecated Use av_packet_copy_props
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a packet.
|
||||||
|
*
|
||||||
|
* @deprecated Use av_packet_unref
|
||||||
|
*
|
||||||
|
* @param pkt packet to free
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
void av_free_packet(AVPacket *pkt);
|
||||||
|
#endif
|
||||||
|
/**
|
||||||
|
* Allocate new information of a packet.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param type side information type
|
||||||
|
* @param size side information size
|
||||||
|
* @return pointer to fresh allocated data or NULL otherwise
|
||||||
|
*/
|
||||||
|
uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||||
|
int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrap an existing array as a packet side data.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param type side information type
|
||||||
|
* @param data the side data array. It must be allocated with the av_malloc()
|
||||||
|
* family of functions. The ownership of the data is transferred to
|
||||||
|
* pkt.
|
||||||
|
* @param size side information size
|
||||||
|
* @return a non-negative number on success, a negative AVERROR code on
|
||||||
|
* failure. On failure, the packet is unchanged and the data remains
|
||||||
|
* owned by the caller.
|
||||||
|
*/
|
||||||
|
int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||||
|
uint8_t *data, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shrink the already allocated side data buffer
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param type side information type
|
||||||
|
* @param size new side information size
|
||||||
|
* @return 0 on success, < 0 on failure
|
||||||
|
*/
|
||||||
|
int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
|
||||||
|
int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get side information from packet.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
* @param type desired side information type
|
||||||
|
* @param size pointer for side information size to store (optional)
|
||||||
|
* @return pointer to data if present or NULL otherwise
|
||||||
|
*/
|
||||||
|
uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type,
|
||||||
|
int *size);
|
||||||
|
|
||||||
|
#if FF_API_MERGE_SD_API
|
||||||
|
attribute_deprecated
|
||||||
|
int av_packet_merge_side_data(AVPacket *pkt);
|
||||||
|
|
||||||
|
attribute_deprecated
|
||||||
|
int av_packet_split_side_data(AVPacket *pkt);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const char *av_packet_side_data_name(enum AVPacketSideDataType type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pack a dictionary for use in side_data.
|
||||||
|
*
|
||||||
|
* @param dict The dictionary to pack.
|
||||||
|
* @param size pointer to store the size of the returned data
|
||||||
|
* @return pointer to data if successful, NULL otherwise
|
||||||
|
*/
|
||||||
|
uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size);
|
||||||
|
/**
|
||||||
|
* Unpack a dictionary from side_data.
|
||||||
|
*
|
||||||
|
* @param data data from side_data
|
||||||
|
* @param size size of the data
|
||||||
|
* @param dict the metadata storage dictionary
|
||||||
|
* @return 0 on success, < 0 on failure
|
||||||
|
*/
|
||||||
|
int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience function to free all the side data stored.
|
||||||
|
* All the other fields stay untouched.
|
||||||
|
*
|
||||||
|
* @param pkt packet
|
||||||
|
*/
|
||||||
|
void av_packet_free_side_data(AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setup a new reference to the data described by a given packet
|
||||||
|
*
|
||||||
|
* If src is reference-counted, setup dst as a new reference to the
|
||||||
|
* buffer in src. Otherwise allocate a new buffer in dst and copy the
|
||||||
|
* data from src into it.
|
||||||
|
*
|
||||||
|
* All the other fields are copied from src.
|
||||||
|
*
|
||||||
|
* @see av_packet_unref
|
||||||
|
*
|
||||||
|
* @param dst Destination packet. Will be completely overwritten.
|
||||||
|
* @param src Source packet
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on error. On error, dst
|
||||||
|
* will be blank (as if returned by av_packet_alloc()).
|
||||||
|
*/
|
||||||
|
int av_packet_ref(AVPacket *dst, const AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wipe the packet.
|
||||||
|
*
|
||||||
|
* Unreference the buffer referenced by the packet and reset the
|
||||||
|
* remaining packet fields to their default values.
|
||||||
|
*
|
||||||
|
* @param pkt The packet to be unreferenced.
|
||||||
|
*/
|
||||||
|
void av_packet_unref(AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move every field in src to dst and reset src.
|
||||||
|
*
|
||||||
|
* @see av_packet_unref
|
||||||
|
*
|
||||||
|
* @param src Source packet, will be reset
|
||||||
|
* @param dst Destination packet
|
||||||
|
*/
|
||||||
|
void av_packet_move_ref(AVPacket *dst, AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy only "properties" fields from src to dst.
|
||||||
|
*
|
||||||
|
* Properties for the purpose of this function are all the fields
|
||||||
|
* beside those related to the packet data (buf, data, size)
|
||||||
|
*
|
||||||
|
* @param dst Destination packet
|
||||||
|
* @param src Source packet
|
||||||
|
*
|
||||||
|
* @return 0 on success AVERROR on failure.
|
||||||
|
*/
|
||||||
|
int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensure the data described by a given packet is reference counted.
|
||||||
|
*
|
||||||
|
* @note This function does not ensure that the reference will be writable.
|
||||||
|
* Use av_packet_make_writable instead for that purpose.
|
||||||
|
*
|
||||||
|
* @see av_packet_ref
|
||||||
|
* @see av_packet_make_writable
|
||||||
|
*
|
||||||
|
* @param pkt packet whose data should be made reference counted.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on error. On failure, the
|
||||||
|
* packet is unchanged.
|
||||||
|
*/
|
||||||
|
int av_packet_make_refcounted(AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a writable reference for the data described by a given packet,
|
||||||
|
* avoiding data copy if possible.
|
||||||
|
*
|
||||||
|
* @param pkt Packet whose data should be made writable.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on failure. On failure, the
|
||||||
|
* packet is unchanged.
|
||||||
|
*/
|
||||||
|
int av_packet_make_writable(AVPacket *pkt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert valid timing fields (timestamps / durations) in a packet from one
|
||||||
|
* timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
|
||||||
|
* ignored.
|
||||||
|
*
|
||||||
|
* @param pkt packet on which the conversion will be performed
|
||||||
|
* @param tb_src source timebase, in which the timing fields in pkt are
|
||||||
|
* expressed
|
||||||
|
* @param tb_dst destination timebase, to which the timing fields will be
|
||||||
|
* converted
|
||||||
|
*/
|
||||||
|
void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif // AVCODEC_PACKET_H
|
||||||
107
project/ffmpeg_dll_compact_348/include/libavcodec/qsv.h
Normal file
107
project/ffmpeg_dll_compact_348/include/libavcodec/qsv.h
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
/*
|
||||||
|
* Intel MediaSDK QSV public API
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_QSV_H
|
||||||
|
#define AVCODEC_QSV_H
|
||||||
|
|
||||||
|
#include <mfx/mfxvideo.h>
|
||||||
|
|
||||||
|
#include "libavutil/buffer.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This struct is used for communicating QSV parameters between libavcodec and
|
||||||
|
* the caller. It is managed by the caller and must be assigned to
|
||||||
|
* AVCodecContext.hwaccel_context.
|
||||||
|
* - decoding: hwaccel_context must be set on return from the get_format()
|
||||||
|
* callback
|
||||||
|
* - encoding: hwaccel_context must be set before avcodec_open2()
|
||||||
|
*/
|
||||||
|
typedef struct AVQSVContext {
|
||||||
|
/**
|
||||||
|
* If non-NULL, the session to use for encoding or decoding.
|
||||||
|
* Otherwise, libavcodec will try to create an internal session.
|
||||||
|
*/
|
||||||
|
mfxSession session;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The IO pattern to use.
|
||||||
|
*/
|
||||||
|
int iopattern;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extra buffers to pass to encoder or decoder initialization.
|
||||||
|
*/
|
||||||
|
mfxExtBuffer **ext_buffers;
|
||||||
|
int nb_ext_buffers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoding only. If this field is set to non-zero by the caller, libavcodec
|
||||||
|
* will create an mfxExtOpaqueSurfaceAlloc extended buffer and pass it to
|
||||||
|
* the encoder initialization. This only makes sense if iopattern is also
|
||||||
|
* set to MFX_IOPATTERN_IN_OPAQUE_MEMORY.
|
||||||
|
*
|
||||||
|
* The number of allocated opaque surfaces will be the sum of the number
|
||||||
|
* required by the encoder and the user-provided value nb_opaque_surfaces.
|
||||||
|
* The array of the opaque surfaces will be exported to the caller through
|
||||||
|
* the opaque_surfaces field.
|
||||||
|
*/
|
||||||
|
int opaque_alloc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoding only, and only if opaque_alloc is set to non-zero. Before
|
||||||
|
* calling avcodec_open2(), the caller should set this field to the number
|
||||||
|
* of extra opaque surfaces to allocate beyond what is required by the
|
||||||
|
* encoder.
|
||||||
|
*
|
||||||
|
* On return from avcodec_open2(), this field will be set by libavcodec to
|
||||||
|
* the total number of allocated opaque surfaces.
|
||||||
|
*/
|
||||||
|
int nb_opaque_surfaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoding only, and only if opaque_alloc is set to non-zero. On return
|
||||||
|
* from avcodec_open2(), this field will be used by libavcodec to export the
|
||||||
|
* array of the allocated opaque surfaces to the caller, so they can be
|
||||||
|
* passed to other parts of the pipeline.
|
||||||
|
*
|
||||||
|
* The buffer reference exported here is owned and managed by libavcodec,
|
||||||
|
* the callers should make their own reference with av_buffer_ref() and free
|
||||||
|
* it with av_buffer_unref() when it is no longer needed.
|
||||||
|
*
|
||||||
|
* The buffer data is an nb_opaque_surfaces-sized array of mfxFrameSurface1.
|
||||||
|
*/
|
||||||
|
AVBufferRef *opaque_surfaces;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encoding only, and only if opaque_alloc is set to non-zero. On return
|
||||||
|
* from avcodec_open2(), this field will be set to the surface type used in
|
||||||
|
* the opaque allocation request.
|
||||||
|
*/
|
||||||
|
int opaque_alloc_type;
|
||||||
|
} AVQSVContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a new context.
|
||||||
|
*
|
||||||
|
* It must be freed by the caller with av_free().
|
||||||
|
*/
|
||||||
|
AVQSVContext *av_qsv_alloc_context(void);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_QSV_H */
|
||||||
195
project/ffmpeg_dll_compact_348/include/libavcodec/vaapi.h
Normal file
195
project/ffmpeg_dll_compact_348/include/libavcodec/vaapi.h
Normal file
@@ -0,0 +1,195 @@
|
|||||||
|
/*
|
||||||
|
* Video Acceleration API (shared data between FFmpeg and the video player)
|
||||||
|
* HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008-2009 Splitted-Desktop Systems
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VAAPI_H
|
||||||
|
#define AVCODEC_VAAPI_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_vaapi
|
||||||
|
* Public libavcodec VA API header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "libavutil/attributes.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
#if FF_API_STRUCT_VAAPI_CONTEXT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_vaapi VA API Decoding
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to share data between the FFmpeg library and
|
||||||
|
* the client video application.
|
||||||
|
* This shall be zero-allocated and available as
|
||||||
|
* AVCodecContext.hwaccel_context. All user members can be set once
|
||||||
|
* during initialization or through each AVCodecContext.get_buffer()
|
||||||
|
* function call. In any case, they must be valid prior to calling
|
||||||
|
* decoding functions.
|
||||||
|
*
|
||||||
|
* Deprecated: use AVCodecContext.hw_frames_ctx instead.
|
||||||
|
*/
|
||||||
|
struct attribute_deprecated vaapi_context {
|
||||||
|
/**
|
||||||
|
* Window system dependent data
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
void *display;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
uint32_t config_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context ID (video decode pipeline)
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by user
|
||||||
|
*/
|
||||||
|
uint32_t context_id;
|
||||||
|
|
||||||
|
#if FF_API_VAAPI_CONTEXT
|
||||||
|
/**
|
||||||
|
* VAPictureParameterBuffer ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
uint32_t pic_param_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VAIQMatrixBuffer ID
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
uint32_t iq_matrix_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VABitPlaneBuffer ID (for VC-1 decoding)
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
uint32_t bitplane_buf_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Slice parameter/data buffer IDs
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
uint32_t *slice_buf_ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of effective slice buffer IDs to send to the HW
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
unsigned int n_slice_buf_ids;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of pre-allocated slice_buf_ids
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
unsigned int slice_buf_ids_alloc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pointer to VASliceParameterBuffers
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
void *slice_params;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of a VASliceParameterBuffer element
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
unsigned int slice_param_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Size of pre-allocated slice_params
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
unsigned int slice_params_alloc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of slices currently filled in
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
unsigned int slice_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pointer to slice data buffer base
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
const uint8_t *slice_data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current size of slice data
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set by libavcodec
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
uint32_t slice_data_size;
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
/* @} */
|
||||||
|
|
||||||
|
#endif /* FF_API_STRUCT_VAAPI_CONTEXT */
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VAAPI_H */
|
||||||
230
project/ffmpeg_dll_compact_348/include/libavcodec/vda.h
Normal file
230
project/ffmpeg_dll_compact_348/include/libavcodec/vda.h
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
/*
|
||||||
|
* VDA HW acceleration
|
||||||
|
*
|
||||||
|
* copyright (c) 2011 Sebastien Zwickert
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VDA_H
|
||||||
|
#define AVCODEC_VDA_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_vda
|
||||||
|
* Public libavcodec VDA header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavcodec/avcodec.h"
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// emmintrin.h is unable to compile with -std=c99 -Werror=missing-prototypes
|
||||||
|
// http://openradar.appspot.com/8026390
|
||||||
|
#undef __GNUC_STDC_INLINE__
|
||||||
|
|
||||||
|
#define Picture QuickdrawPicture
|
||||||
|
#include <VideoDecodeAcceleration/VDADecoder.h>
|
||||||
|
#undef Picture
|
||||||
|
|
||||||
|
#include "libavcodec/version.h"
|
||||||
|
|
||||||
|
// extra flags not defined in VDADecoder.h
|
||||||
|
enum {
|
||||||
|
kVDADecodeInfo_Asynchronous = 1UL << 0,
|
||||||
|
kVDADecodeInfo_FrameDropped = 1UL << 1
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_vda VDA
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to provide the necessary configurations and data
|
||||||
|
* to the VDA FFmpeg HWAccel implementation.
|
||||||
|
*
|
||||||
|
* The application must make it available as AVCodecContext.hwaccel_context.
|
||||||
|
*/
|
||||||
|
struct vda_context {
|
||||||
|
/**
|
||||||
|
* VDA decoder object.
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set/Unset by libavcodec.
|
||||||
|
*/
|
||||||
|
VDADecoder decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Core Video pixel buffer that contains the current image data.
|
||||||
|
*
|
||||||
|
* encoding: unused
|
||||||
|
* decoding: Set by libavcodec. Unset by user.
|
||||||
|
*/
|
||||||
|
CVPixelBufferRef cv_buffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the hardware decoder in synchronous mode.
|
||||||
|
*
|
||||||
|
* encoding: unused
|
||||||
|
* decoding: Set by user.
|
||||||
|
*/
|
||||||
|
int use_sync_decoding;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The frame width.
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set/Unset by user.
|
||||||
|
*/
|
||||||
|
int width;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The frame height.
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set/Unset by user.
|
||||||
|
*/
|
||||||
|
int height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The frame format.
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set/Unset by user.
|
||||||
|
*/
|
||||||
|
int format;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The pixel format for output image buffers.
|
||||||
|
*
|
||||||
|
* - encoding: unused
|
||||||
|
* - decoding: Set/Unset by user.
|
||||||
|
*/
|
||||||
|
OSType cv_pix_fmt_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unused
|
||||||
|
*/
|
||||||
|
uint8_t *priv_bitstream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unused
|
||||||
|
*/
|
||||||
|
int priv_bitstream_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* unused
|
||||||
|
*/
|
||||||
|
int priv_allocated_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use av_buffer to manage buffer.
|
||||||
|
* When the flag is set, the CVPixelBuffers returned by the decoder will
|
||||||
|
* be released automatically, so you have to retain them if necessary.
|
||||||
|
* Not setting this flag may cause memory leak.
|
||||||
|
*
|
||||||
|
* encoding: unused
|
||||||
|
* decoding: Set by user.
|
||||||
|
*/
|
||||||
|
int use_ref_buffer;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Create the video decoder. */
|
||||||
|
int ff_vda_create_decoder(struct vda_context *vda_ctx,
|
||||||
|
uint8_t *extradata,
|
||||||
|
int extradata_size);
|
||||||
|
|
||||||
|
/** Destroy the video decoder. */
|
||||||
|
int ff_vda_destroy_decoder(struct vda_context *vda_ctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This struct holds all the information that needs to be passed
|
||||||
|
* between the caller and libavcodec for initializing VDA decoding.
|
||||||
|
* Its size is not a part of the public ABI, it must be allocated with
|
||||||
|
* av_vda_alloc_context() and freed with av_free().
|
||||||
|
*/
|
||||||
|
typedef struct AVVDAContext {
|
||||||
|
/**
|
||||||
|
* VDA decoder object. Created and freed by the caller.
|
||||||
|
*/
|
||||||
|
VDADecoder decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The output callback that must be passed to VDADecoderCreate.
|
||||||
|
* Set by av_vda_alloc_context().
|
||||||
|
*/
|
||||||
|
VDADecoderOutputCallback output_callback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CVPixelBuffer Format Type that VDA will use for decoded frames; set by
|
||||||
|
* the caller.
|
||||||
|
*/
|
||||||
|
OSType cv_pix_fmt_type;
|
||||||
|
} AVVDAContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize a VDA context.
|
||||||
|
*
|
||||||
|
* This function should be called from the get_format() callback when the caller
|
||||||
|
* selects the AV_PIX_FMT_VDA format. The caller must then create the decoder
|
||||||
|
* object (using the output callback provided by libavcodec) that will be used
|
||||||
|
* for VDA-accelerated decoding.
|
||||||
|
*
|
||||||
|
* When decoding with VDA is finished, the caller must destroy the decoder
|
||||||
|
* object and free the VDA context using av_free().
|
||||||
|
*
|
||||||
|
* @return the newly allocated context or NULL on failure
|
||||||
|
*/
|
||||||
|
AVVDAContext *av_vda_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a convenience function that creates and sets up the VDA context using
|
||||||
|
* an internal implementation.
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_vda_default_init(AVCodecContext *avctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a convenience function that creates and sets up the VDA context using
|
||||||
|
* an internal implementation.
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
* @param vdactx the VDA context to use
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_vda_default_init2(AVCodecContext *avctx, AVVDAContext *vdactx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function must be called to free the VDA context initialized with
|
||||||
|
* av_vda_default_init().
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
*/
|
||||||
|
void av_vda_default_free(AVCodecContext *avctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VDA_H */
|
||||||
253
project/ffmpeg_dll_compact_348/include/libavcodec/vdpau.h
Normal file
253
project/ffmpeg_dll_compact_348/include/libavcodec/vdpau.h
Normal file
@@ -0,0 +1,253 @@
|
|||||||
|
/*
|
||||||
|
* The Video Decode and Presentation API for UNIX (VDPAU) is used for
|
||||||
|
* hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 NVIDIA
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VDPAU_H
|
||||||
|
#define AVCODEC_VDPAU_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_vdpau
|
||||||
|
* Public libavcodec VDPAU header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
*
|
||||||
|
* VDPAU hardware acceleration has two modules
|
||||||
|
* - VDPAU decoding
|
||||||
|
* - VDPAU presentation
|
||||||
|
*
|
||||||
|
* The VDPAU decoding module parses all headers using FFmpeg
|
||||||
|
* parsing mechanisms and uses VDPAU for the actual decoding.
|
||||||
|
*
|
||||||
|
* As per the current implementation, the actual decoding
|
||||||
|
* and rendering (API calls) are done as part of the VDPAU
|
||||||
|
* presentation (vo_vdpau.c) module.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <vdpau/vdpau.h>
|
||||||
|
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
#include "libavutil/attributes.h"
|
||||||
|
|
||||||
|
#include "avcodec.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
#if FF_API_BUFS_VDPAU
|
||||||
|
union AVVDPAUPictureInfo {
|
||||||
|
VdpPictureInfoH264 h264;
|
||||||
|
VdpPictureInfoMPEG1Or2 mpeg;
|
||||||
|
VdpPictureInfoVC1 vc1;
|
||||||
|
VdpPictureInfoMPEG4Part2 mpeg4;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct AVCodecContext;
|
||||||
|
struct AVFrame;
|
||||||
|
|
||||||
|
typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *,
|
||||||
|
const VdpPictureInfo *, uint32_t,
|
||||||
|
const VdpBitstreamBuffer *);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure is used to share data between the libavcodec library and
|
||||||
|
* the client video application.
|
||||||
|
* The user shall allocate the structure via the av_alloc_vdpau_hwaccel
|
||||||
|
* function and make it available as
|
||||||
|
* AVCodecContext.hwaccel_context. Members can be set by the user once
|
||||||
|
* during initialization or through each AVCodecContext.get_buffer()
|
||||||
|
* function call. In any case, they must be valid prior to calling
|
||||||
|
* decoding functions.
|
||||||
|
*
|
||||||
|
* The size of this structure is not a part of the public ABI and must not
|
||||||
|
* be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an
|
||||||
|
* AVVDPAUContext.
|
||||||
|
*/
|
||||||
|
typedef struct AVVDPAUContext {
|
||||||
|
/**
|
||||||
|
* VDPAU decoder handle
|
||||||
|
*
|
||||||
|
* Set by user.
|
||||||
|
*/
|
||||||
|
VdpDecoder decoder;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* VDPAU decoder render callback
|
||||||
|
*
|
||||||
|
* Set by the user.
|
||||||
|
*/
|
||||||
|
VdpDecoderRender *render;
|
||||||
|
|
||||||
|
#if FF_API_BUFS_VDPAU
|
||||||
|
/**
|
||||||
|
* VDPAU picture information
|
||||||
|
*
|
||||||
|
* Set by libavcodec.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
union AVVDPAUPictureInfo info;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocated size of the bitstream_buffers table.
|
||||||
|
*
|
||||||
|
* Set by libavcodec.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int bitstream_buffers_allocated;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Useful bitstream buffers in the bitstream buffers table.
|
||||||
|
*
|
||||||
|
* Set by libavcodec.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int bitstream_buffers_used;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Table of bitstream buffers.
|
||||||
|
* The user is responsible for freeing this buffer using av_freep().
|
||||||
|
*
|
||||||
|
* Set by libavcodec.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
VdpBitstreamBuffer *bitstream_buffers;
|
||||||
|
#endif
|
||||||
|
AVVDPAU_Render2 render2;
|
||||||
|
} AVVDPAUContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief allocation function for AVVDPAUContext
|
||||||
|
*
|
||||||
|
* Allows extending the struct without breaking API/ABI
|
||||||
|
*/
|
||||||
|
AVVDPAUContext *av_alloc_vdpaucontext(void);
|
||||||
|
|
||||||
|
AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *);
|
||||||
|
void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Associate a VDPAU device with a codec context for hardware acceleration.
|
||||||
|
* This function is meant to be called from the get_format() codec callback,
|
||||||
|
* or earlier. It can also be called after avcodec_flush_buffers() to change
|
||||||
|
* the underlying VDPAU device mid-stream (e.g. to recover from non-transparent
|
||||||
|
* display preemption).
|
||||||
|
*
|
||||||
|
* @note get_format() must return AV_PIX_FMT_VDPAU if this function completes
|
||||||
|
* successfully.
|
||||||
|
*
|
||||||
|
* @param avctx decoding context whose get_format() callback is invoked
|
||||||
|
* @param device VDPAU device handle to use for hardware acceleration
|
||||||
|
* @param get_proc_address VDPAU device driver
|
||||||
|
* @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags
|
||||||
|
*
|
||||||
|
* @return 0 on success, an AVERROR code on failure.
|
||||||
|
*/
|
||||||
|
int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device,
|
||||||
|
VdpGetProcAddress *get_proc_address, unsigned flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the parameters to create an adequate VDPAU video surface for the codec
|
||||||
|
* context using VDPAU hardware decoding acceleration.
|
||||||
|
*
|
||||||
|
* @note Behavior is undefined if the context was not successfully bound to a
|
||||||
|
* VDPAU device using av_vdpau_bind_context().
|
||||||
|
*
|
||||||
|
* @param avctx the codec context being used for decoding the stream
|
||||||
|
* @param type storage space for the VDPAU video surface chroma type
|
||||||
|
* (or NULL to ignore)
|
||||||
|
* @param width storage space for the VDPAU video surface pixel width
|
||||||
|
* (or NULL to ignore)
|
||||||
|
* @param height storage space for the VDPAU video surface pixel height
|
||||||
|
* (or NULL to ignore)
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR code on failure.
|
||||||
|
*/
|
||||||
|
int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type,
|
||||||
|
uint32_t *width, uint32_t *height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVVDPAUContext.
|
||||||
|
*
|
||||||
|
* @return Newly-allocated AVVDPAUContext or NULL on failure.
|
||||||
|
*/
|
||||||
|
AVVDPAUContext *av_vdpau_alloc_context(void);
|
||||||
|
|
||||||
|
#if FF_API_VDPAU_PROFILE
|
||||||
|
/**
|
||||||
|
* Get a decoder profile that should be used for initializing a VDPAU decoder.
|
||||||
|
* Should be called from the AVCodecContext.get_format() callback.
|
||||||
|
*
|
||||||
|
* @deprecated Use av_vdpau_bind_context() instead.
|
||||||
|
*
|
||||||
|
* @param avctx the codec context being used for decoding the stream
|
||||||
|
* @param profile a pointer into which the result will be written on success.
|
||||||
|
* The contents of profile are undefined if this function returns
|
||||||
|
* an error.
|
||||||
|
*
|
||||||
|
* @return 0 on success (non-negative), a negative AVERROR on failure.
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if FF_API_CAP_VDPAU
|
||||||
|
/** @brief The videoSurface is used for rendering. */
|
||||||
|
#define FF_VDPAU_STATE_USED_FOR_RENDER 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The videoSurface is needed for reference/prediction.
|
||||||
|
* The codec manipulates this.
|
||||||
|
*/
|
||||||
|
#define FF_VDPAU_STATE_USED_FOR_REFERENCE 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This structure is used as a callback between the FFmpeg
|
||||||
|
* decoder (vd_) and presentation (vo_) module.
|
||||||
|
* This is used for defining a video frame containing surface,
|
||||||
|
* picture parameter, bitstream information etc which are passed
|
||||||
|
* between the FFmpeg decoder and its clients.
|
||||||
|
*/
|
||||||
|
struct vdpau_render_state {
|
||||||
|
VdpVideoSurface surface; ///< Used as rendered surface, never changed.
|
||||||
|
|
||||||
|
int state; ///< Holds FF_VDPAU_STATE_* values.
|
||||||
|
|
||||||
|
/** picture parameter information for all supported codecs */
|
||||||
|
union AVVDPAUPictureInfo info;
|
||||||
|
|
||||||
|
/** Describe size/location of the compressed video data.
|
||||||
|
Set to 0 when freeing bitstream_buffers. */
|
||||||
|
int bitstream_buffers_allocated;
|
||||||
|
int bitstream_buffers_used;
|
||||||
|
/** The user is responsible for freeing this buffer using av_freep(). */
|
||||||
|
VdpBitstreamBuffer *bitstream_buffers;
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* @}*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VDPAU_H */
|
||||||
243
project/ffmpeg_dll_compact_348/include/libavcodec/version.h
Normal file
243
project/ffmpeg_dll_compact_348/include/libavcodec/version.h
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VERSION_H
|
||||||
|
#define AVCODEC_VERSION_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup libavc
|
||||||
|
* Libavcodec version macros.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
|
#define LIBAVCODEC_VERSION_MAJOR 57
|
||||||
|
#define LIBAVCODEC_VERSION_MINOR 107
|
||||||
|
#define LIBAVCODEC_VERSION_MICRO 100
|
||||||
|
|
||||||
|
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
LIBAVCODEC_VERSION_MINOR, \
|
||||||
|
LIBAVCODEC_VERSION_MICRO)
|
||||||
|
#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
|
||||||
|
LIBAVCODEC_VERSION_MINOR, \
|
||||||
|
LIBAVCODEC_VERSION_MICRO)
|
||||||
|
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FF_API_* defines may be placed below to indicate public API that will be
|
||||||
|
* dropped at a future version bump. The defines themselves are not part of
|
||||||
|
* the public API and may change, break or disappear at any time.
|
||||||
|
*
|
||||||
|
* @note, when bumping the major version it is recommended to manually
|
||||||
|
* disable each FF_API_* in its own commit instead of disabling them all
|
||||||
|
* at once through the bump. This improves the git bisect-ability of the change.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FF_API_VIMA_DECODER
|
||||||
|
#define FF_API_VIMA_DECODER (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AUDIO_CONVERT
|
||||||
|
#define FF_API_AUDIO_CONVERT (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVCODEC_RESAMPLE
|
||||||
|
#define FF_API_AVCODEC_RESAMPLE FF_API_AUDIO_CONVERT
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MISSING_SAMPLE
|
||||||
|
#define FF_API_MISSING_SAMPLE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LOWRES
|
||||||
|
#define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_CAP_VDPAU
|
||||||
|
#define FF_API_CAP_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_BUFS_VDPAU
|
||||||
|
#define FF_API_BUFS_VDPAU (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_VOXWARE
|
||||||
|
#define FF_API_VOXWARE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_SET_DIMENSIONS
|
||||||
|
#define FF_API_SET_DIMENSIONS (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_DEBUG_MV
|
||||||
|
#define FF_API_DEBUG_MV (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AC_VLC
|
||||||
|
#define FF_API_AC_VLC (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_MSMPEG4
|
||||||
|
#define FF_API_OLD_MSMPEG4 (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ASPECT_EXTENDED
|
||||||
|
#define FF_API_ASPECT_EXTENDED (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ARCH_ALPHA
|
||||||
|
#define FF_API_ARCH_ALPHA (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_XVMC
|
||||||
|
#define FF_API_XVMC (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ERROR_RATE
|
||||||
|
#define FF_API_ERROR_RATE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_QSCALE_TYPE
|
||||||
|
#define FF_API_QSCALE_TYPE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MB_TYPE
|
||||||
|
#define FF_API_MB_TYPE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MAX_BFRAMES
|
||||||
|
#define FF_API_MAX_BFRAMES (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_NEG_LINESIZES
|
||||||
|
#define FF_API_NEG_LINESIZES (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_EMU_EDGE
|
||||||
|
#define FF_API_EMU_EDGE (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ARCH_SH4
|
||||||
|
#define FF_API_ARCH_SH4 (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ARCH_SPARC
|
||||||
|
#define FF_API_ARCH_SPARC (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_UNUSED_MEMBERS
|
||||||
|
#define FF_API_UNUSED_MEMBERS (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_IDCT_XVIDMMX
|
||||||
|
#define FF_API_IDCT_XVIDMMX (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_INPUT_PRESERVED
|
||||||
|
#define FF_API_INPUT_PRESERVED (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_NORMALIZE_AQP
|
||||||
|
#define FF_API_NORMALIZE_AQP (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GMC
|
||||||
|
#define FF_API_GMC (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MV0
|
||||||
|
#define FF_API_MV0 (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_CODEC_NAME
|
||||||
|
#define FF_API_CODEC_NAME (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AFD
|
||||||
|
#define FF_API_AFD (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_VISMV
|
||||||
|
/* XXX: don't forget to drop the -vismv documentation */
|
||||||
|
#define FF_API_VISMV (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AUDIOENC_DELAY
|
||||||
|
#define FF_API_AUDIOENC_DELAY (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_VAAPI_CONTEXT
|
||||||
|
#define FF_API_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MERGE_SD
|
||||||
|
#define FF_API_MERGE_SD (LIBAVCODEC_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVCTX_TIMEBASE
|
||||||
|
#define FF_API_AVCTX_TIMEBASE (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MPV_OPT
|
||||||
|
#define FF_API_MPV_OPT (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_STREAM_CODEC_TAG
|
||||||
|
#define FF_API_STREAM_CODEC_TAG (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_QUANT_BIAS
|
||||||
|
#define FF_API_QUANT_BIAS (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_RC_STRATEGY
|
||||||
|
#define FF_API_RC_STRATEGY (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_CODED_FRAME
|
||||||
|
#define FF_API_CODED_FRAME (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MOTION_EST
|
||||||
|
#define FF_API_MOTION_EST (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_WITHOUT_PREFIX
|
||||||
|
#define FF_API_WITHOUT_PREFIX (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_SIDEDATA_ONLY_PKT
|
||||||
|
#define FF_API_SIDEDATA_ONLY_PKT (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_VDPAU_PROFILE
|
||||||
|
#define FF_API_VDPAU_PROFILE (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_CONVERGENCE_DURATION
|
||||||
|
#define FF_API_CONVERGENCE_DURATION (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVPICTURE
|
||||||
|
#define FF_API_AVPICTURE (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVPACKET_OLD_API
|
||||||
|
#define FF_API_AVPACKET_OLD_API (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_RTP_CALLBACK
|
||||||
|
#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_VBV_DELAY
|
||||||
|
#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_CODER_TYPE
|
||||||
|
#define FF_API_CODER_TYPE (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_STAT_BITS
|
||||||
|
#define FF_API_STAT_BITS (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_PRIVATE_OPT
|
||||||
|
#define FF_API_PRIVATE_OPT (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_ASS_TIMING
|
||||||
|
#define FF_API_ASS_TIMING (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_BSF
|
||||||
|
#define FF_API_OLD_BSF (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_COPY_CONTEXT
|
||||||
|
#define FF_API_COPY_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GET_CONTEXT_DEFAULTS
|
||||||
|
#define FF_API_GET_CONTEXT_DEFAULTS (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_NVENC_OLD_NAME
|
||||||
|
#define FF_API_NVENC_OLD_NAME (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_STRUCT_VAAPI_CONTEXT
|
||||||
|
#define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_MERGE_SD_API
|
||||||
|
#define FF_API_MERGE_SD_API (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_TAG_STRING
|
||||||
|
#define FF_API_TAG_STRING (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_GETCHROMA
|
||||||
|
#define FF_API_GETCHROMA (LIBAVCODEC_VERSION_MAJOR < 59)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VERSION_H */
|
||||||
127
project/ffmpeg_dll_compact_348/include/libavcodec/videotoolbox.h
Normal file
127
project/ffmpeg_dll_compact_348/include/libavcodec/videotoolbox.h
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
/*
|
||||||
|
* Videotoolbox hardware acceleration
|
||||||
|
*
|
||||||
|
* copyright (c) 2012 Sebastien Zwickert
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VIDEOTOOLBOX_H
|
||||||
|
#define AVCODEC_VIDEOTOOLBOX_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_videotoolbox
|
||||||
|
* Public libavcodec Videotoolbox header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#define Picture QuickdrawPicture
|
||||||
|
#include <VideoToolbox/VideoToolbox.h>
|
||||||
|
#undef Picture
|
||||||
|
|
||||||
|
#include "libavcodec/avcodec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This struct holds all the information that needs to be passed
|
||||||
|
* between the caller and libavcodec for initializing Videotoolbox decoding.
|
||||||
|
* Its size is not a part of the public ABI, it must be allocated with
|
||||||
|
* av_videotoolbox_alloc_context() and freed with av_free().
|
||||||
|
*/
|
||||||
|
typedef struct AVVideotoolboxContext {
|
||||||
|
/**
|
||||||
|
* Videotoolbox decompression session object.
|
||||||
|
* Created and freed the caller.
|
||||||
|
*/
|
||||||
|
VTDecompressionSessionRef session;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The output callback that must be passed to the session.
|
||||||
|
* Set by av_videottoolbox_default_init()
|
||||||
|
*/
|
||||||
|
VTDecompressionOutputCallback output_callback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CVPixelBuffer Format Type that Videotoolbox will use for decoded frames.
|
||||||
|
* set by the caller. If this is set to 0, then no specific format is
|
||||||
|
* requested from the decoder, and its native format is output.
|
||||||
|
*/
|
||||||
|
OSType cv_pix_fmt_type;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CoreMedia Format Description that Videotoolbox will use to create the decompression session.
|
||||||
|
* Set by the caller.
|
||||||
|
*/
|
||||||
|
CMVideoFormatDescriptionRef cm_fmt_desc;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CoreMedia codec type that Videotoolbox will use to create the decompression session.
|
||||||
|
* Set by the caller.
|
||||||
|
*/
|
||||||
|
int cm_codec_type;
|
||||||
|
} AVVideotoolboxContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize a Videotoolbox context.
|
||||||
|
*
|
||||||
|
* This function should be called from the get_format() callback when the caller
|
||||||
|
* selects the AV_PIX_FMT_VIDETOOLBOX format. The caller must then create
|
||||||
|
* the decoder object (using the output callback provided by libavcodec) that
|
||||||
|
* will be used for Videotoolbox-accelerated decoding.
|
||||||
|
*
|
||||||
|
* When decoding with Videotoolbox is finished, the caller must destroy the decoder
|
||||||
|
* object and free the Videotoolbox context using av_free().
|
||||||
|
*
|
||||||
|
* @return the newly allocated context or NULL on failure
|
||||||
|
*/
|
||||||
|
AVVideotoolboxContext *av_videotoolbox_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a convenience function that creates and sets up the Videotoolbox context using
|
||||||
|
* an internal implementation.
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_videotoolbox_default_init(AVCodecContext *avctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a convenience function that creates and sets up the Videotoolbox context using
|
||||||
|
* an internal implementation.
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
* @param vtctx the Videotoolbox context to use
|
||||||
|
*
|
||||||
|
* @return >= 0 on success, a negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_videotoolbox_default_init2(AVCodecContext *avctx, AVVideotoolboxContext *vtctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function must be called to free the Videotoolbox context initialized with
|
||||||
|
* av_videotoolbox_default_init().
|
||||||
|
*
|
||||||
|
* @param avctx the corresponding codec context
|
||||||
|
*/
|
||||||
|
void av_videotoolbox_default_free(AVCodecContext *avctx);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VIDEOTOOLBOX_H */
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* A public API for Vorbis parsing
|
||||||
|
*
|
||||||
|
* Determines the duration for each packet.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_VORBIS_PARSER_H
|
||||||
|
#define AVCODEC_VORBIS_PARSER_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
typedef struct AVVorbisParseContext AVVorbisParseContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize the Vorbis parser using headers in the extradata.
|
||||||
|
*/
|
||||||
|
AVVorbisParseContext *av_vorbis_parse_init(const uint8_t *extradata,
|
||||||
|
int extradata_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free the parser and everything associated with it.
|
||||||
|
*/
|
||||||
|
void av_vorbis_parse_free(AVVorbisParseContext **s);
|
||||||
|
|
||||||
|
#define VORBIS_FLAG_HEADER 0x00000001
|
||||||
|
#define VORBIS_FLAG_COMMENT 0x00000002
|
||||||
|
#define VORBIS_FLAG_SETUP 0x00000004
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the duration for a Vorbis packet.
|
||||||
|
*
|
||||||
|
* If @p flags is @c NULL,
|
||||||
|
* special frames are considered invalid.
|
||||||
|
*
|
||||||
|
* @param s Vorbis parser context
|
||||||
|
* @param buf buffer containing a Vorbis frame
|
||||||
|
* @param buf_size size of the buffer
|
||||||
|
* @param flags flags for special frames
|
||||||
|
*/
|
||||||
|
int av_vorbis_parse_frame_flags(AVVorbisParseContext *s, const uint8_t *buf,
|
||||||
|
int buf_size, int *flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the duration for a Vorbis packet.
|
||||||
|
*
|
||||||
|
* @param s Vorbis parser context
|
||||||
|
* @param buf buffer containing a Vorbis frame
|
||||||
|
* @param buf_size size of the buffer
|
||||||
|
*/
|
||||||
|
int av_vorbis_parse_frame(AVVorbisParseContext *s, const uint8_t *buf,
|
||||||
|
int buf_size);
|
||||||
|
|
||||||
|
void av_vorbis_parse_reset(AVVorbisParseContext *s);
|
||||||
|
|
||||||
|
#endif /* AVCODEC_VORBIS_PARSER_H */
|
||||||
170
project/ffmpeg_dll_compact_348/include/libavcodec/xvmc.h
Normal file
170
project/ffmpeg_dll_compact_348/include/libavcodec/xvmc.h
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2003 Ivan Kalvachev
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVCODEC_XVMC_H
|
||||||
|
#define AVCODEC_XVMC_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavc_codec_hwaccel_xvmc
|
||||||
|
* Public libavcodec XvMC header.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <X11/extensions/XvMC.h>
|
||||||
|
|
||||||
|
#include "libavutil/attributes.h"
|
||||||
|
#include "version.h"
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavc_codec_hwaccel_xvmc XvMC
|
||||||
|
* @ingroup lavc_codec_hwaccel
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_XVMC_ID 0x1DC711C0 /**< special value to ensure that regular pixel routines haven't corrupted the struct
|
||||||
|
the number is 1337 speak for the letters IDCT MCo (motion compensation) */
|
||||||
|
|
||||||
|
struct attribute_deprecated xvmc_pix_fmt {
|
||||||
|
/** The field contains the special constant value AV_XVMC_ID.
|
||||||
|
It is used as a test that the application correctly uses the API,
|
||||||
|
and that there is no corruption caused by pixel routines.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int xvmc_id;
|
||||||
|
|
||||||
|
/** Pointer to the block array allocated by XvMCCreateBlocks().
|
||||||
|
The array has to be freed by XvMCDestroyBlocks().
|
||||||
|
Each group of 64 values represents one data block of differential
|
||||||
|
pixel information (in MoCo mode) or coefficients for IDCT.
|
||||||
|
- application - set the pointer during initialization
|
||||||
|
- libavcodec - fills coefficients/pixel data into the array
|
||||||
|
*/
|
||||||
|
short* data_blocks;
|
||||||
|
|
||||||
|
/** Pointer to the macroblock description array allocated by
|
||||||
|
XvMCCreateMacroBlocks() and freed by XvMCDestroyMacroBlocks().
|
||||||
|
- application - set the pointer during initialization
|
||||||
|
- libavcodec - fills description data into the array
|
||||||
|
*/
|
||||||
|
XvMCMacroBlock* mv_blocks;
|
||||||
|
|
||||||
|
/** Number of macroblock descriptions that can be stored in the mv_blocks
|
||||||
|
array.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int allocated_mv_blocks;
|
||||||
|
|
||||||
|
/** Number of blocks that can be stored at once in the data_blocks array.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int allocated_data_blocks;
|
||||||
|
|
||||||
|
/** Indicate that the hardware would interpret data_blocks as IDCT
|
||||||
|
coefficients and perform IDCT on them.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int idct;
|
||||||
|
|
||||||
|
/** In MoCo mode it indicates that intra macroblocks are assumed to be in
|
||||||
|
unsigned format; same as the XVMC_INTRA_UNSIGNED flag.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int unsigned_intra;
|
||||||
|
|
||||||
|
/** Pointer to the surface allocated by XvMCCreateSurface().
|
||||||
|
It has to be freed by XvMCDestroySurface() on application exit.
|
||||||
|
It identifies the frame and its state on the video hardware.
|
||||||
|
- application - set during initialization
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_surface;
|
||||||
|
|
||||||
|
/** Set by the decoder before calling ff_draw_horiz_band(),
|
||||||
|
needed by the XvMCRenderSurface function. */
|
||||||
|
//@{
|
||||||
|
/** Pointer to the surface used as past reference
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_past_surface;
|
||||||
|
|
||||||
|
/** Pointer to the surface used as future reference
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
XvMCSurface* p_future_surface;
|
||||||
|
|
||||||
|
/** top/bottom field or frame
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
unsigned int picture_structure;
|
||||||
|
|
||||||
|
/** XVMC_SECOND_FIELD - 1st or 2nd field in the sequence
|
||||||
|
- application - unchanged
|
||||||
|
- libavcodec - set
|
||||||
|
*/
|
||||||
|
unsigned int flags;
|
||||||
|
//}@
|
||||||
|
|
||||||
|
/** Number of macroblock descriptions in the mv_blocks array
|
||||||
|
that have already been passed to the hardware.
|
||||||
|
- application - zeroes it on get_buffer().
|
||||||
|
A successful ff_draw_horiz_band() may increment it
|
||||||
|
with filled_mb_block_num or zero both.
|
||||||
|
- libavcodec - unchanged
|
||||||
|
*/
|
||||||
|
int start_mv_blocks_num;
|
||||||
|
|
||||||
|
/** Number of new macroblock descriptions in the mv_blocks array (after
|
||||||
|
start_mv_blocks_num) that are filled by libavcodec and have to be
|
||||||
|
passed to the hardware.
|
||||||
|
- application - zeroes it on get_buffer() or after successful
|
||||||
|
ff_draw_horiz_band().
|
||||||
|
- libavcodec - increment with one of each stored MB
|
||||||
|
*/
|
||||||
|
int filled_mv_blocks_num;
|
||||||
|
|
||||||
|
/** Number of the next free data block; one data block consists of
|
||||||
|
64 short values in the data_blocks array.
|
||||||
|
All blocks before this one have already been claimed by placing their
|
||||||
|
position into the corresponding block description structure field,
|
||||||
|
that are part of the mv_blocks array.
|
||||||
|
- application - zeroes it on get_buffer().
|
||||||
|
A successful ff_draw_horiz_band() may zero it together
|
||||||
|
with start_mb_blocks_num.
|
||||||
|
- libavcodec - each decoded macroblock increases it by the number
|
||||||
|
of coded blocks it contains.
|
||||||
|
*/
|
||||||
|
int next_free_data_block_num;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVCODEC_XVMC_H */
|
||||||
1197
project/ffmpeg_dll_compact_348/include/libavfilter/avfilter.h
Normal file
1197
project/ffmpeg_dll_compact_348/include/libavfilter/avfilter.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
* Filter graphs
|
||||||
|
* copyright (c) 2007 Bobby Bingham
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFILTER_AVFILTERGRAPH_H
|
||||||
|
#define AVFILTER_AVFILTERGRAPH_H
|
||||||
|
|
||||||
|
#include "avfilter.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
|
||||||
|
#endif /* AVFILTER_AVFILTERGRAPH_H */
|
||||||
165
project/ffmpeg_dll_compact_348/include/libavfilter/buffersink.h
Normal file
165
project/ffmpeg_dll_compact_348/include/libavfilter/buffersink.h
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFILTER_BUFFERSINK_H
|
||||||
|
#define AVFILTER_BUFFERSINK_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavfi_buffersink
|
||||||
|
* memory buffer sink API for audio and video
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avfilter.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavfi_buffersink Buffer sink API
|
||||||
|
* @ingroup lavfi
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a frame with filtered data from sink and put it in frame.
|
||||||
|
*
|
||||||
|
* @param ctx pointer to a buffersink or abuffersink filter context.
|
||||||
|
* @param frame pointer to an allocated frame that will be filled with data.
|
||||||
|
* The data must be freed using av_frame_unref() / av_frame_free()
|
||||||
|
* @param flags a combination of AV_BUFFERSINK_FLAG_* flags
|
||||||
|
*
|
||||||
|
* @return >= 0 in for success, a negative AVERROR code for failure.
|
||||||
|
*/
|
||||||
|
int av_buffersink_get_frame_flags(AVFilterContext *ctx, AVFrame *frame, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell av_buffersink_get_buffer_ref() to read video/samples buffer
|
||||||
|
* reference, but not remove it from the buffer. This is useful if you
|
||||||
|
* need only to read a video/samples buffer, without to fetch it.
|
||||||
|
*/
|
||||||
|
#define AV_BUFFERSINK_FLAG_PEEK 1
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell av_buffersink_get_buffer_ref() not to request a frame from its input.
|
||||||
|
* If a frame is already buffered, it is read (and removed from the buffer),
|
||||||
|
* but if no frame is present, return AVERROR(EAGAIN).
|
||||||
|
*/
|
||||||
|
#define AV_BUFFERSINK_FLAG_NO_REQUEST 2
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Struct to use for initializing a buffersink context.
|
||||||
|
*/
|
||||||
|
typedef struct AVBufferSinkParams {
|
||||||
|
const enum AVPixelFormat *pixel_fmts; ///< list of allowed pixel formats, terminated by AV_PIX_FMT_NONE
|
||||||
|
} AVBufferSinkParams;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an AVBufferSinkParams structure.
|
||||||
|
*
|
||||||
|
* Must be freed with av_free().
|
||||||
|
*/
|
||||||
|
AVBufferSinkParams *av_buffersink_params_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Struct to use for initializing an abuffersink context.
|
||||||
|
*/
|
||||||
|
typedef struct AVABufferSinkParams {
|
||||||
|
const enum AVSampleFormat *sample_fmts; ///< list of allowed sample formats, terminated by AV_SAMPLE_FMT_NONE
|
||||||
|
const int64_t *channel_layouts; ///< list of allowed channel layouts, terminated by -1
|
||||||
|
const int *channel_counts; ///< list of allowed channel counts, terminated by -1
|
||||||
|
int all_channel_counts; ///< if not 0, accept any channel count or layout
|
||||||
|
int *sample_rates; ///< list of allowed sample rates, terminated by -1
|
||||||
|
} AVABufferSinkParams;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create an AVABufferSinkParams structure.
|
||||||
|
*
|
||||||
|
* Must be freed with av_free().
|
||||||
|
*/
|
||||||
|
AVABufferSinkParams *av_abuffersink_params_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the frame size for an audio buffer sink.
|
||||||
|
*
|
||||||
|
* All calls to av_buffersink_get_buffer_ref will return a buffer with
|
||||||
|
* exactly the specified number of samples, or AVERROR(EAGAIN) if there is
|
||||||
|
* not enough. The last buffer at EOF will be padded with 0.
|
||||||
|
*/
|
||||||
|
void av_buffersink_set_frame_size(AVFilterContext *ctx, unsigned frame_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavfi_buffersink_accessors Buffer sink accessors
|
||||||
|
* Get the properties of the stream
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum AVMediaType av_buffersink_get_type (const AVFilterContext *ctx);
|
||||||
|
AVRational av_buffersink_get_time_base (const AVFilterContext *ctx);
|
||||||
|
int av_buffersink_get_format (const AVFilterContext *ctx);
|
||||||
|
|
||||||
|
AVRational av_buffersink_get_frame_rate (const AVFilterContext *ctx);
|
||||||
|
int av_buffersink_get_w (const AVFilterContext *ctx);
|
||||||
|
int av_buffersink_get_h (const AVFilterContext *ctx);
|
||||||
|
AVRational av_buffersink_get_sample_aspect_ratio (const AVFilterContext *ctx);
|
||||||
|
|
||||||
|
int av_buffersink_get_channels (const AVFilterContext *ctx);
|
||||||
|
uint64_t av_buffersink_get_channel_layout (const AVFilterContext *ctx);
|
||||||
|
int av_buffersink_get_sample_rate (const AVFilterContext *ctx);
|
||||||
|
|
||||||
|
AVBufferRef * av_buffersink_get_hw_frames_ctx (const AVFilterContext *ctx);
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a frame with filtered data from sink and put it in frame.
|
||||||
|
*
|
||||||
|
* @param ctx pointer to a context of a buffersink or abuffersink AVFilter.
|
||||||
|
* @param frame pointer to an allocated frame that will be filled with data.
|
||||||
|
* The data must be freed using av_frame_unref() / av_frame_free()
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* - >= 0 if a frame was successfully returned.
|
||||||
|
* - AVERROR(EAGAIN) if no frames are available at this point; more
|
||||||
|
* input frames must be added to the filtergraph to get more output.
|
||||||
|
* - AVERROR_EOF if there will be no more output frames on this sink.
|
||||||
|
* - A different negative AVERROR code in other failure cases.
|
||||||
|
*/
|
||||||
|
int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Same as av_buffersink_get_frame(), but with the ability to specify the number
|
||||||
|
* of samples read. This function is less efficient than
|
||||||
|
* av_buffersink_get_frame(), because it copies the data around.
|
||||||
|
*
|
||||||
|
* @param ctx pointer to a context of the abuffersink AVFilter.
|
||||||
|
* @param frame pointer to an allocated frame that will be filled with data.
|
||||||
|
* The data must be freed using av_frame_unref() / av_frame_free()
|
||||||
|
* frame will contain exactly nb_samples audio samples, except at
|
||||||
|
* the end of stream, when it can contain less than nb_samples.
|
||||||
|
*
|
||||||
|
* @return The return codes have the same meaning as for
|
||||||
|
* av_buffersink_get_samples().
|
||||||
|
*
|
||||||
|
* @warning do not mix this function with av_buffersink_get_frame(). Use only one or
|
||||||
|
* the other with a single sink, not both.
|
||||||
|
*/
|
||||||
|
int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVFILTER_BUFFERSINK_H */
|
||||||
209
project/ffmpeg_dll_compact_348/include/libavfilter/buffersrc.h
Normal file
209
project/ffmpeg_dll_compact_348/include/libavfilter/buffersrc.h
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFILTER_BUFFERSRC_H
|
||||||
|
#define AVFILTER_BUFFERSRC_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavfi_buffersrc
|
||||||
|
* Memory buffer source API.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avfilter.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavfi_buffersrc Buffer source API
|
||||||
|
* @ingroup lavfi
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do not check for format changes.
|
||||||
|
*/
|
||||||
|
AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT = 1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Immediately push the frame to the output.
|
||||||
|
*/
|
||||||
|
AV_BUFFERSRC_FLAG_PUSH = 4,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keep a reference to the frame.
|
||||||
|
* If the frame if reference-counted, create a new reference; otherwise
|
||||||
|
* copy the frame data.
|
||||||
|
*/
|
||||||
|
AV_BUFFERSRC_FLAG_KEEP_REF = 8,
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of failed requests.
|
||||||
|
*
|
||||||
|
* A failed request is when the request_frame method is called while no
|
||||||
|
* frame is present in the buffer.
|
||||||
|
* The number is reset when a frame is added.
|
||||||
|
*/
|
||||||
|
unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This structure contains the parameters describing the frames that will be
|
||||||
|
* passed to this filter.
|
||||||
|
*
|
||||||
|
* It should be allocated with av_buffersrc_parameters_alloc() and freed with
|
||||||
|
* av_free(). All the allocated fields in it remain owned by the caller.
|
||||||
|
*/
|
||||||
|
typedef struct AVBufferSrcParameters {
|
||||||
|
/**
|
||||||
|
* video: the pixel format, value corresponds to enum AVPixelFormat
|
||||||
|
* audio: the sample format, value corresponds to enum AVSampleFormat
|
||||||
|
*/
|
||||||
|
int format;
|
||||||
|
/**
|
||||||
|
* The timebase to be used for the timestamps on the input frames.
|
||||||
|
*/
|
||||||
|
AVRational time_base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only, the display dimensions of the input frames.
|
||||||
|
*/
|
||||||
|
int width, height;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only, the sample (pixel) aspect ratio.
|
||||||
|
*/
|
||||||
|
AVRational sample_aspect_ratio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video only, the frame rate of the input video. This field must only be
|
||||||
|
* set to a non-zero value if input stream has a known constant framerate
|
||||||
|
* and should be left at its initial value if the framerate is variable or
|
||||||
|
* unknown.
|
||||||
|
*/
|
||||||
|
AVRational frame_rate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Video with a hwaccel pixel format only. This should be a reference to an
|
||||||
|
* AVHWFramesContext instance describing the input frames.
|
||||||
|
*/
|
||||||
|
AVBufferRef *hw_frames_ctx;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio only, the audio sampling rate in samples per secon.
|
||||||
|
*/
|
||||||
|
int sample_rate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Audio only, the audio channel layout
|
||||||
|
*/
|
||||||
|
uint64_t channel_layout;
|
||||||
|
} AVBufferSrcParameters;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate a new AVBufferSrcParameters instance. It should be freed by the
|
||||||
|
* caller with av_free().
|
||||||
|
*/
|
||||||
|
AVBufferSrcParameters *av_buffersrc_parameters_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the buffersrc or abuffersrc filter with the provided parameters.
|
||||||
|
* This function may be called multiple times, the later calls override the
|
||||||
|
* previous ones. Some of the parameters may also be set through AVOptions, then
|
||||||
|
* whatever method is used last takes precedence.
|
||||||
|
*
|
||||||
|
* @param ctx an instance of the buffersrc or abuffersrc filter
|
||||||
|
* @param param the stream parameters. The frames later passed to this filter
|
||||||
|
* must conform to those parameters. All the allocated fields in
|
||||||
|
* param remain owned by the caller, libavfilter will make internal
|
||||||
|
* copies or references when necessary.
|
||||||
|
* @return 0 on success, a negative AVERROR code on failure.
|
||||||
|
*/
|
||||||
|
int av_buffersrc_parameters_set(AVFilterContext *ctx, AVBufferSrcParameters *param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a frame to the buffer source.
|
||||||
|
*
|
||||||
|
* @param ctx an instance of the buffersrc filter
|
||||||
|
* @param frame frame to be added. If the frame is reference counted, this
|
||||||
|
* function will make a new reference to it. Otherwise the frame data will be
|
||||||
|
* copied.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on error
|
||||||
|
*
|
||||||
|
* This function is equivalent to av_buffersrc_add_frame_flags() with the
|
||||||
|
* AV_BUFFERSRC_FLAG_KEEP_REF flag.
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_buffersrc_write_frame(AVFilterContext *ctx, const AVFrame *frame);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a frame to the buffer source.
|
||||||
|
*
|
||||||
|
* @param ctx an instance of the buffersrc filter
|
||||||
|
* @param frame frame to be added. If the frame is reference counted, this
|
||||||
|
* function will take ownership of the reference(s) and reset the frame.
|
||||||
|
* Otherwise the frame data will be copied. If this function returns an error,
|
||||||
|
* the input frame is not touched.
|
||||||
|
*
|
||||||
|
* @return 0 on success, a negative AVERROR on error.
|
||||||
|
*
|
||||||
|
* @note the difference between this function and av_buffersrc_write_frame() is
|
||||||
|
* that av_buffersrc_write_frame() creates a new reference to the input frame,
|
||||||
|
* while this function takes ownership of the reference passed to it.
|
||||||
|
*
|
||||||
|
* This function is equivalent to av_buffersrc_add_frame_flags() without the
|
||||||
|
* AV_BUFFERSRC_FLAG_KEEP_REF flag.
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_buffersrc_add_frame(AVFilterContext *ctx, AVFrame *frame);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a frame to the buffer source.
|
||||||
|
*
|
||||||
|
* By default, if the frame is reference-counted, this function will take
|
||||||
|
* ownership of the reference(s) and reset the frame. This can be controlled
|
||||||
|
* using the flags.
|
||||||
|
*
|
||||||
|
* If this function returns an error, the input frame is not touched.
|
||||||
|
*
|
||||||
|
* @param buffer_src pointer to a buffer source context
|
||||||
|
* @param frame a frame, or NULL to mark EOF
|
||||||
|
* @param flags a combination of AV_BUFFERSRC_FLAG_*
|
||||||
|
* @return >= 0 in case of success, a negative AVERROR code
|
||||||
|
* in case of failure
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src,
|
||||||
|
AVFrame *frame, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the buffer source after EOF.
|
||||||
|
*
|
||||||
|
* This is similar to passing NULL to av_buffersrc_add_frame_flags()
|
||||||
|
* except it takes the timestamp of the EOF, i.e. the timestamp of the end
|
||||||
|
* of the last frame.
|
||||||
|
*/
|
||||||
|
int av_buffersrc_close(AVFilterContext *ctx, int64_t pts, unsigned flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVFILTER_BUFFERSRC_H */
|
||||||
74
project/ffmpeg_dll_compact_348/include/libavfilter/version.h
Normal file
74
project/ffmpeg_dll_compact_348/include/libavfilter/version.h
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* Version macros.
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFILTER_VERSION_H
|
||||||
|
#define AVFILTER_VERSION_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavfi
|
||||||
|
* Libavfilter version macros
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
|
#define LIBAVFILTER_VERSION_MAJOR 6
|
||||||
|
#define LIBAVFILTER_VERSION_MINOR 107
|
||||||
|
#define LIBAVFILTER_VERSION_MICRO 100
|
||||||
|
|
||||||
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
|
LIBAVFILTER_VERSION_MINOR, \
|
||||||
|
LIBAVFILTER_VERSION_MICRO)
|
||||||
|
#define LIBAVFILTER_VERSION AV_VERSION(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
|
LIBAVFILTER_VERSION_MINOR, \
|
||||||
|
LIBAVFILTER_VERSION_MICRO)
|
||||||
|
#define LIBAVFILTER_BUILD LIBAVFILTER_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVFILTER_IDENT "Lavfi" AV_STRINGIFY(LIBAVFILTER_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FF_API_* defines may be placed below to indicate public API that will be
|
||||||
|
* dropped at a future version bump. The defines themselves are not part of
|
||||||
|
* the public API and may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FF_API_OLD_FILTER_OPTS
|
||||||
|
#define FF_API_OLD_FILTER_OPTS (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_FILTER_OPTS_ERROR
|
||||||
|
#define FF_API_OLD_FILTER_OPTS_ERROR (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVFILTER_OPEN
|
||||||
|
#define FF_API_AVFILTER_OPEN (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_AVFILTER_INIT_FILTER
|
||||||
|
#define FF_API_AVFILTER_INIT_FILTER (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_FILTER_REGISTER
|
||||||
|
#define FF_API_OLD_FILTER_REGISTER (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_NOCONST_GET_NAME
|
||||||
|
#define FF_API_NOCONST_GET_NAME (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVR_OPTS
|
||||||
|
#define FF_API_LAVR_OPTS (LIBAVFILTER_VERSION_MAJOR < 7)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVFILTER_VERSION_H */
|
||||||
3008
project/ffmpeg_dll_compact_348/include/libavformat/avformat.h
Normal file
3008
project/ffmpeg_dll_compact_348/include/libavformat/avformat.h
Normal file
File diff suppressed because it is too large
Load Diff
867
project/ffmpeg_dll_compact_348/include/libavformat/avio.h
Normal file
867
project/ffmpeg_dll_compact_348/include/libavformat/avio.h
Normal file
@@ -0,0 +1,867 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2001 Fabrice Bellard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
#ifndef AVFORMAT_AVIO_H
|
||||||
|
#define AVFORMAT_AVIO_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavf_io
|
||||||
|
* Buffered I/O operations
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "libavutil/common.h"
|
||||||
|
#include "libavutil/dict.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
|
||||||
|
#include "libavformat/version.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seeking works like for a local file.
|
||||||
|
*/
|
||||||
|
#define AVIO_SEEKABLE_NORMAL (1 << 0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seeking by timestamp with avio_seek_time() is possible.
|
||||||
|
*/
|
||||||
|
#define AVIO_SEEKABLE_TIME (1 << 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Callback for checking whether to abort blocking functions.
|
||||||
|
* AVERROR_EXIT is returned in this case by the interrupted
|
||||||
|
* function. During blocking operations, callback is called with
|
||||||
|
* opaque as parameter. If the callback returns 1, the
|
||||||
|
* blocking operation will be aborted.
|
||||||
|
*
|
||||||
|
* No members can be added to this struct without a major bump, if
|
||||||
|
* new elements have been added after this struct in AVFormatContext
|
||||||
|
* or AVIOContext.
|
||||||
|
*/
|
||||||
|
typedef struct AVIOInterruptCB {
|
||||||
|
int (*callback)(void*);
|
||||||
|
void *opaque;
|
||||||
|
} AVIOInterruptCB;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Directory entry types.
|
||||||
|
*/
|
||||||
|
enum AVIODirEntryType {
|
||||||
|
AVIO_ENTRY_UNKNOWN,
|
||||||
|
AVIO_ENTRY_BLOCK_DEVICE,
|
||||||
|
AVIO_ENTRY_CHARACTER_DEVICE,
|
||||||
|
AVIO_ENTRY_DIRECTORY,
|
||||||
|
AVIO_ENTRY_NAMED_PIPE,
|
||||||
|
AVIO_ENTRY_SYMBOLIC_LINK,
|
||||||
|
AVIO_ENTRY_SOCKET,
|
||||||
|
AVIO_ENTRY_FILE,
|
||||||
|
AVIO_ENTRY_SERVER,
|
||||||
|
AVIO_ENTRY_SHARE,
|
||||||
|
AVIO_ENTRY_WORKGROUP,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Describes single entry of the directory.
|
||||||
|
*
|
||||||
|
* Only name and type fields are guaranteed be set.
|
||||||
|
* Rest of fields are protocol or/and platform dependent and might be unknown.
|
||||||
|
*/
|
||||||
|
typedef struct AVIODirEntry {
|
||||||
|
char *name; /**< Filename */
|
||||||
|
int type; /**< Type of the entry */
|
||||||
|
int utf8; /**< Set to 1 when name is encoded with UTF-8, 0 otherwise.
|
||||||
|
Name can be encoded with UTF-8 even though 0 is set. */
|
||||||
|
int64_t size; /**< File size in bytes, -1 if unknown. */
|
||||||
|
int64_t modification_timestamp; /**< Time of last modification in microseconds since unix
|
||||||
|
epoch, -1 if unknown. */
|
||||||
|
int64_t access_timestamp; /**< Time of last access in microseconds since unix epoch,
|
||||||
|
-1 if unknown. */
|
||||||
|
int64_t status_change_timestamp; /**< Time of last status change in microseconds since unix
|
||||||
|
epoch, -1 if unknown. */
|
||||||
|
int64_t user_id; /**< User ID of owner, -1 if unknown. */
|
||||||
|
int64_t group_id; /**< Group ID of owner, -1 if unknown. */
|
||||||
|
int64_t filemode; /**< Unix file mode, -1 if unknown. */
|
||||||
|
} AVIODirEntry;
|
||||||
|
|
||||||
|
typedef struct AVIODirContext {
|
||||||
|
struct URLContext *url_context;
|
||||||
|
} AVIODirContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Different data types that can be returned via the AVIO
|
||||||
|
* write_data_type callback.
|
||||||
|
*/
|
||||||
|
enum AVIODataMarkerType {
|
||||||
|
/**
|
||||||
|
* Header data; this needs to be present for the stream to be decodeable.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_HEADER,
|
||||||
|
/**
|
||||||
|
* A point in the output bytestream where a decoder can start decoding
|
||||||
|
* (i.e. a keyframe). A demuxer/decoder given the data flagged with
|
||||||
|
* AVIO_DATA_MARKER_HEADER, followed by any AVIO_DATA_MARKER_SYNC_POINT,
|
||||||
|
* should give decodeable results.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_SYNC_POINT,
|
||||||
|
/**
|
||||||
|
* A point in the output bytestream where a demuxer can start parsing
|
||||||
|
* (for non self synchronizing bytestream formats). That is, any
|
||||||
|
* non-keyframe packet start point.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_BOUNDARY_POINT,
|
||||||
|
/**
|
||||||
|
* This is any, unlabelled data. It can either be a muxer not marking
|
||||||
|
* any positions at all, it can be an actual boundary/sync point
|
||||||
|
* that the muxer chooses not to mark, or a later part of a packet/fragment
|
||||||
|
* that is cut into multiple write callbacks due to limited IO buffer size.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_UNKNOWN,
|
||||||
|
/**
|
||||||
|
* Trailer data, which doesn't contain actual content, but only for
|
||||||
|
* finalizing the output file.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_TRAILER,
|
||||||
|
/**
|
||||||
|
* A point in the output bytestream where the underlying AVIOContext might
|
||||||
|
* flush the buffer depending on latency or buffering requirements. Typically
|
||||||
|
* means the end of a packet.
|
||||||
|
*/
|
||||||
|
AVIO_DATA_MARKER_FLUSH_POINT,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bytestream IO Context.
|
||||||
|
* New fields can be added to the end with minor version bumps.
|
||||||
|
* Removal, reordering and changes to existing fields require a major
|
||||||
|
* version bump.
|
||||||
|
* sizeof(AVIOContext) must not be used outside libav*.
|
||||||
|
*
|
||||||
|
* @note None of the function pointers in AVIOContext should be called
|
||||||
|
* directly, they should only be set by the client application
|
||||||
|
* when implementing custom I/O. Normally these are set to the
|
||||||
|
* function pointers specified in avio_alloc_context()
|
||||||
|
*/
|
||||||
|
typedef struct AVIOContext {
|
||||||
|
/**
|
||||||
|
* A class for private options.
|
||||||
|
*
|
||||||
|
* If this AVIOContext is created by avio_open2(), av_class is set and
|
||||||
|
* passes the options down to protocols.
|
||||||
|
*
|
||||||
|
* If this AVIOContext is manually allocated, then av_class may be set by
|
||||||
|
* the caller.
|
||||||
|
*
|
||||||
|
* warning -- this field can be NULL, be sure to not pass this AVIOContext
|
||||||
|
* to any av_opt_* functions in that case.
|
||||||
|
*/
|
||||||
|
const AVClass *av_class;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The following shows the relationship between buffer, buf_ptr,
|
||||||
|
* buf_ptr_max, buf_end, buf_size, and pos, when reading and when writing
|
||||||
|
* (since AVIOContext is used for both):
|
||||||
|
*
|
||||||
|
**********************************************************************************
|
||||||
|
* READING
|
||||||
|
**********************************************************************************
|
||||||
|
*
|
||||||
|
* | buffer_size |
|
||||||
|
* |---------------------------------------|
|
||||||
|
* | |
|
||||||
|
*
|
||||||
|
* buffer buf_ptr buf_end
|
||||||
|
* +---------------+-----------------------+
|
||||||
|
* |/ / / / / / / /|/ / / / / / /| |
|
||||||
|
* read buffer: |/ / consumed / | to be read /| |
|
||||||
|
* |/ / / / / / / /|/ / / / / / /| |
|
||||||
|
* +---------------+-----------------------+
|
||||||
|
*
|
||||||
|
* pos
|
||||||
|
* +-------------------------------------------+-----------------+
|
||||||
|
* input file: | | |
|
||||||
|
* +-------------------------------------------+-----------------+
|
||||||
|
*
|
||||||
|
*
|
||||||
|
**********************************************************************************
|
||||||
|
* WRITING
|
||||||
|
**********************************************************************************
|
||||||
|
*
|
||||||
|
* | buffer_size |
|
||||||
|
* |--------------------------------------|
|
||||||
|
* | |
|
||||||
|
*
|
||||||
|
* buf_ptr_max
|
||||||
|
* buffer (buf_ptr) buf_end
|
||||||
|
* +-----------------------+--------------+
|
||||||
|
* |/ / / / / / / / / / / /| |
|
||||||
|
* write buffer: | / / to be flushed / / | |
|
||||||
|
* |/ / / / / / / / / / / /| |
|
||||||
|
* +-----------------------+--------------+
|
||||||
|
* buf_ptr can be in this
|
||||||
|
* due to a backward seek
|
||||||
|
*
|
||||||
|
* pos
|
||||||
|
* +-------------+----------------------------------------------+
|
||||||
|
* output file: | | |
|
||||||
|
* +-------------+----------------------------------------------+
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
unsigned char *buffer; /**< Start of the buffer. */
|
||||||
|
int buffer_size; /**< Maximum buffer size */
|
||||||
|
unsigned char *buf_ptr; /**< Current position in the buffer */
|
||||||
|
unsigned char *buf_end; /**< End of the data, may be less than
|
||||||
|
buffer+buffer_size if the read function returned
|
||||||
|
less data than requested, e.g. for streams where
|
||||||
|
no more data has been received yet. */
|
||||||
|
void *opaque; /**< A private pointer, passed to the read/write/seek/...
|
||||||
|
functions. */
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size);
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence);
|
||||||
|
int64_t pos; /**< position in the file of the current buffer */
|
||||||
|
int must_flush; /**< unused */
|
||||||
|
int eof_reached; /**< true if eof reached */
|
||||||
|
int write_flag; /**< true if open for writing */
|
||||||
|
int max_packet_size;
|
||||||
|
unsigned long checksum;
|
||||||
|
unsigned char *checksum_ptr;
|
||||||
|
unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size);
|
||||||
|
int error; /**< contains the error code or 0 if no error happened */
|
||||||
|
/**
|
||||||
|
* Pause or resume playback for network streaming protocols - e.g. MMS.
|
||||||
|
*/
|
||||||
|
int (*read_pause)(void *opaque, int pause);
|
||||||
|
/**
|
||||||
|
* Seek to a given timestamp in stream with the specified stream_index.
|
||||||
|
* Needed for some network streaming protocols which don't support seeking
|
||||||
|
* to byte position.
|
||||||
|
*/
|
||||||
|
int64_t (*read_seek)(void *opaque, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
/**
|
||||||
|
* A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
|
||||||
|
*/
|
||||||
|
int seekable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* max filesize, used to limit allocations
|
||||||
|
* This field is internal to libavformat and access from outside is not allowed.
|
||||||
|
*/
|
||||||
|
int64_t maxsize;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* avio_read and avio_write should if possible be satisfied directly
|
||||||
|
* instead of going through a buffer, and avio_seek will always
|
||||||
|
* call the underlying seek function directly.
|
||||||
|
*/
|
||||||
|
int direct;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bytes read statistic
|
||||||
|
* This field is internal to libavformat and access from outside is not allowed.
|
||||||
|
*/
|
||||||
|
int64_t bytes_read;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* seek statistic
|
||||||
|
* This field is internal to libavformat and access from outside is not allowed.
|
||||||
|
*/
|
||||||
|
int seek_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* writeout statistic
|
||||||
|
* This field is internal to libavformat and access from outside is not allowed.
|
||||||
|
*/
|
||||||
|
int writeout_count;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Original buffer size
|
||||||
|
* used internally after probing and ensure seekback to reset the buffer size
|
||||||
|
* This field is internal to libavformat and access from outside is not allowed.
|
||||||
|
*/
|
||||||
|
int orig_buffer_size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Threshold to favor readahead over seek.
|
||||||
|
* This is current internal only, do not use from outside.
|
||||||
|
*/
|
||||||
|
int short_seek_threshold;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ',' separated list of allowed protocols.
|
||||||
|
*/
|
||||||
|
const char *protocol_whitelist;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ',' separated list of disallowed protocols.
|
||||||
|
*/
|
||||||
|
const char *protocol_blacklist;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A callback that is used instead of write_packet.
|
||||||
|
*/
|
||||||
|
int (*write_data_type)(void *opaque, uint8_t *buf, int buf_size,
|
||||||
|
enum AVIODataMarkerType type, int64_t time);
|
||||||
|
/**
|
||||||
|
* If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT,
|
||||||
|
* but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly
|
||||||
|
* small chunks of data returned from the callback).
|
||||||
|
*/
|
||||||
|
int ignore_boundary_point;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal, not meant to be used from outside of AVIOContext.
|
||||||
|
*/
|
||||||
|
enum AVIODataMarkerType current_type;
|
||||||
|
int64_t last_time;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A callback that is used instead of short_seek_threshold.
|
||||||
|
* This is current internal only, do not use from outside.
|
||||||
|
*/
|
||||||
|
int (*short_seek_get)(void *opaque);
|
||||||
|
|
||||||
|
int64_t written;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximum reached position before a backward seek in the write buffer,
|
||||||
|
* used keeping track of already written data for a later flush.
|
||||||
|
*/
|
||||||
|
unsigned char *buf_ptr_max;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to buffer at least this amount of data before flushing it
|
||||||
|
*/
|
||||||
|
int min_packet_size;
|
||||||
|
} AVIOContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the name of the protocol that will handle the passed URL.
|
||||||
|
*
|
||||||
|
* NULL is returned if no protocol could be found for the given URL.
|
||||||
|
*
|
||||||
|
* @return Name of the protocol or NULL.
|
||||||
|
*/
|
||||||
|
const char *avio_find_protocol_name(const char *url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return AVIO_FLAG_* access flags corresponding to the access permissions
|
||||||
|
* of the resource in url, or a negative value corresponding to an
|
||||||
|
* AVERROR code in case of failure. The returned access flags are
|
||||||
|
* masked by the value in flags.
|
||||||
|
*
|
||||||
|
* @note This function is intrinsically unsafe, in the sense that the
|
||||||
|
* checked resource may change its existence or permission status from
|
||||||
|
* one call to another. Thus you should not trust the returned value,
|
||||||
|
* unless you are sure that no other processes are accessing the
|
||||||
|
* checked resource.
|
||||||
|
*/
|
||||||
|
int avio_check(const char *url, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move or rename a resource.
|
||||||
|
*
|
||||||
|
* @note url_src and url_dst should share the same protocol and authority.
|
||||||
|
*
|
||||||
|
* @param url_src url to resource to be moved
|
||||||
|
* @param url_dst new url to resource if the operation succeeded
|
||||||
|
* @return >=0 on success or negative on error.
|
||||||
|
*/
|
||||||
|
int avpriv_io_move(const char *url_src, const char *url_dst);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a resource.
|
||||||
|
*
|
||||||
|
* @param url resource to be deleted.
|
||||||
|
* @return >=0 on success or negative on error.
|
||||||
|
*/
|
||||||
|
int avpriv_io_delete(const char *url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open directory for reading.
|
||||||
|
*
|
||||||
|
* @param s directory read context. Pointer to a NULL pointer must be passed.
|
||||||
|
* @param url directory to be listed.
|
||||||
|
* @param options A dictionary filled with protocol-private options. On return
|
||||||
|
* this parameter will be destroyed and replaced with a dictionary
|
||||||
|
* containing options that were not found. May be NULL.
|
||||||
|
* @return >=0 on success or negative on error.
|
||||||
|
*/
|
||||||
|
int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get next directory entry.
|
||||||
|
*
|
||||||
|
* Returned entry must be freed with avio_free_directory_entry(). In particular
|
||||||
|
* it may outlive AVIODirContext.
|
||||||
|
*
|
||||||
|
* @param s directory read context.
|
||||||
|
* @param[out] next next entry or NULL when no more entries.
|
||||||
|
* @return >=0 on success or negative on error. End of list is not considered an
|
||||||
|
* error.
|
||||||
|
*/
|
||||||
|
int avio_read_dir(AVIODirContext *s, AVIODirEntry **next);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close directory.
|
||||||
|
*
|
||||||
|
* @note Entries created using avio_read_dir() are not deleted and must be
|
||||||
|
* freeded with avio_free_directory_entry().
|
||||||
|
*
|
||||||
|
* @param s directory read context.
|
||||||
|
* @return >=0 on success or negative on error.
|
||||||
|
*/
|
||||||
|
int avio_close_dir(AVIODirContext **s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free entry allocated by avio_read_dir().
|
||||||
|
*
|
||||||
|
* @param entry entry to be freed.
|
||||||
|
*/
|
||||||
|
void avio_free_directory_entry(AVIODirEntry **entry);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate and initialize an AVIOContext for buffered I/O. It must be later
|
||||||
|
* freed with avio_context_free().
|
||||||
|
*
|
||||||
|
* @param buffer Memory block for input/output operations via AVIOContext.
|
||||||
|
* The buffer must be allocated with av_malloc() and friends.
|
||||||
|
* It may be freed and replaced with a new buffer by libavformat.
|
||||||
|
* AVIOContext.buffer holds the buffer currently in use,
|
||||||
|
* which must be later freed with av_free().
|
||||||
|
* @param buffer_size The buffer size is very important for performance.
|
||||||
|
* For protocols with fixed blocksize it should be set to this blocksize.
|
||||||
|
* For others a typical size is a cache page, e.g. 4kb.
|
||||||
|
* @param write_flag Set to 1 if the buffer should be writable, 0 otherwise.
|
||||||
|
* @param opaque An opaque pointer to user-specific data.
|
||||||
|
* @param read_packet A function for refilling the buffer, may be NULL.
|
||||||
|
* @param write_packet A function for writing the buffer contents, may be NULL.
|
||||||
|
* The function may not change the input buffers content.
|
||||||
|
* @param seek A function for seeking to specified byte position, may be NULL.
|
||||||
|
*
|
||||||
|
* @return Allocated AVIOContext or NULL on failure.
|
||||||
|
*/
|
||||||
|
AVIOContext *avio_alloc_context(
|
||||||
|
unsigned char *buffer,
|
||||||
|
int buffer_size,
|
||||||
|
int write_flag,
|
||||||
|
void *opaque,
|
||||||
|
int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
|
||||||
|
int64_t (*seek)(void *opaque, int64_t offset, int whence));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free the supplied IO context and everything associated with it.
|
||||||
|
*
|
||||||
|
* @param s Double pointer to the IO context. This function will write NULL
|
||||||
|
* into s.
|
||||||
|
*/
|
||||||
|
void avio_context_free(AVIOContext **s);
|
||||||
|
|
||||||
|
void avio_w8(AVIOContext *s, int b);
|
||||||
|
void avio_write(AVIOContext *s, const unsigned char *buf, int size);
|
||||||
|
void avio_wl64(AVIOContext *s, uint64_t val);
|
||||||
|
void avio_wb64(AVIOContext *s, uint64_t val);
|
||||||
|
void avio_wl32(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb32(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wl24(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb24(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wl16(AVIOContext *s, unsigned int val);
|
||||||
|
void avio_wb16(AVIOContext *s, unsigned int val);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write a NULL-terminated string.
|
||||||
|
* @return number of bytes written.
|
||||||
|
*/
|
||||||
|
int avio_put_str(AVIOContext *s, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an UTF-8 string to UTF-16LE and write it.
|
||||||
|
* @param s the AVIOContext
|
||||||
|
* @param str NULL-terminated UTF-8 string
|
||||||
|
*
|
||||||
|
* @return number of bytes written.
|
||||||
|
*/
|
||||||
|
int avio_put_str16le(AVIOContext *s, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert an UTF-8 string to UTF-16BE and write it.
|
||||||
|
* @param s the AVIOContext
|
||||||
|
* @param str NULL-terminated UTF-8 string
|
||||||
|
*
|
||||||
|
* @return number of bytes written.
|
||||||
|
*/
|
||||||
|
int avio_put_str16be(AVIOContext *s, const char *str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark the written bytestream as a specific type.
|
||||||
|
*
|
||||||
|
* Zero-length ranges are omitted from the output.
|
||||||
|
*
|
||||||
|
* @param time the stream time the current bytestream pos corresponds to
|
||||||
|
* (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not
|
||||||
|
* applicable
|
||||||
|
* @param type the kind of data written starting at the current pos
|
||||||
|
*/
|
||||||
|
void avio_write_marker(AVIOContext *s, int64_t time, enum AVIODataMarkerType type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ORing this as the "whence" parameter to a seek function causes it to
|
||||||
|
* return the filesize without seeking anywhere. Supporting this is optional.
|
||||||
|
* If it is not supported then the seek function will return <0.
|
||||||
|
*/
|
||||||
|
#define AVSEEK_SIZE 0x10000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Passing this flag as the "whence" parameter to a seek function causes it to
|
||||||
|
* seek by any means (like reopening and linear reading) or other normally unreasonable
|
||||||
|
* means that can be extremely slow.
|
||||||
|
* This may be ignored by the seek code.
|
||||||
|
*/
|
||||||
|
#define AVSEEK_FORCE 0x20000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fseek() equivalent for AVIOContext.
|
||||||
|
* @return new position or AVERROR.
|
||||||
|
*/
|
||||||
|
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skip given number of bytes forward
|
||||||
|
* @return new position or AVERROR.
|
||||||
|
*/
|
||||||
|
int64_t avio_skip(AVIOContext *s, int64_t offset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ftell() equivalent for AVIOContext.
|
||||||
|
* @return position or AVERROR.
|
||||||
|
*/
|
||||||
|
static av_always_inline int64_t avio_tell(AVIOContext *s)
|
||||||
|
{
|
||||||
|
return avio_seek(s, 0, SEEK_CUR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the filesize.
|
||||||
|
* @return filesize or AVERROR
|
||||||
|
*/
|
||||||
|
int64_t avio_size(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* feof() equivalent for AVIOContext.
|
||||||
|
* @return non zero if and only if end of file
|
||||||
|
*/
|
||||||
|
int avio_feof(AVIOContext *s);
|
||||||
|
#if FF_API_URL_FEOF
|
||||||
|
/**
|
||||||
|
* @deprecated use avio_feof()
|
||||||
|
*/
|
||||||
|
attribute_deprecated
|
||||||
|
int url_feof(AVIOContext *s);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/** @warning Writes up to 4 KiB per call */
|
||||||
|
int avio_printf(AVIOContext *s, const char *fmt, ...) av_printf_format(2, 3);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Force flushing of buffered data.
|
||||||
|
*
|
||||||
|
* For write streams, force the buffered data to be immediately written to the output,
|
||||||
|
* without to wait to fill the internal buffer.
|
||||||
|
*
|
||||||
|
* For read streams, discard all currently buffered data, and advance the
|
||||||
|
* reported file position to that of the underlying stream. This does not
|
||||||
|
* read new data, and does not perform any seeks.
|
||||||
|
*/
|
||||||
|
void avio_flush(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read size bytes from AVIOContext into buf.
|
||||||
|
* @return number of bytes read or AVERROR
|
||||||
|
*/
|
||||||
|
int avio_read(AVIOContext *s, unsigned char *buf, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read size bytes from AVIOContext into buf. Unlike avio_read(), this is allowed
|
||||||
|
* to read fewer bytes than requested. The missing bytes can be read in the next
|
||||||
|
* call. This always tries to read at least 1 byte.
|
||||||
|
* Useful to reduce latency in certain cases.
|
||||||
|
* @return number of bytes read or AVERROR
|
||||||
|
*/
|
||||||
|
int avio_read_partial(AVIOContext *s, unsigned char *buf, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name Functions for reading from AVIOContext
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @note return 0 if EOF, so you cannot use it if EOF handling is
|
||||||
|
* necessary
|
||||||
|
*/
|
||||||
|
int avio_r8 (AVIOContext *s);
|
||||||
|
unsigned int avio_rl16(AVIOContext *s);
|
||||||
|
unsigned int avio_rl24(AVIOContext *s);
|
||||||
|
unsigned int avio_rl32(AVIOContext *s);
|
||||||
|
uint64_t avio_rl64(AVIOContext *s);
|
||||||
|
unsigned int avio_rb16(AVIOContext *s);
|
||||||
|
unsigned int avio_rb24(AVIOContext *s);
|
||||||
|
unsigned int avio_rb32(AVIOContext *s);
|
||||||
|
uint64_t avio_rb64(AVIOContext *s);
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a string from pb into buf. The reading will terminate when either
|
||||||
|
* a NULL character was encountered, maxlen bytes have been read, or nothing
|
||||||
|
* more can be read from pb. The result is guaranteed to be NULL-terminated, it
|
||||||
|
* will be truncated if buf is too small.
|
||||||
|
* Note that the string is not interpreted or validated in any way, it
|
||||||
|
* might get truncated in the middle of a sequence for multi-byte encodings.
|
||||||
|
*
|
||||||
|
* @return number of bytes read (is always <= maxlen).
|
||||||
|
* If reading ends on EOF or error, the return value will be one more than
|
||||||
|
* bytes actually read.
|
||||||
|
*/
|
||||||
|
int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a UTF-16 string from pb and convert it to UTF-8.
|
||||||
|
* The reading will terminate when either a null or invalid character was
|
||||||
|
* encountered or maxlen bytes have been read.
|
||||||
|
* @return number of bytes read (is always <= maxlen)
|
||||||
|
*/
|
||||||
|
int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name URL open modes
|
||||||
|
* The flags argument to avio_open must be one of the following
|
||||||
|
* constants, optionally ORed with other flags.
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define AVIO_FLAG_READ 1 /**< read-only */
|
||||||
|
#define AVIO_FLAG_WRITE 2 /**< write-only */
|
||||||
|
#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) /**< read-write pseudo flag */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use non-blocking mode.
|
||||||
|
* If this flag is set, operations on the context will return
|
||||||
|
* AVERROR(EAGAIN) if they can not be performed immediately.
|
||||||
|
* If this flag is not set, operations on the context will never return
|
||||||
|
* AVERROR(EAGAIN).
|
||||||
|
* Note that this flag does not affect the opening/connecting of the
|
||||||
|
* context. Connecting a protocol will always block if necessary (e.g. on
|
||||||
|
* network protocols) but never hang (e.g. on busy devices).
|
||||||
|
* Warning: non-blocking protocols is work-in-progress; this flag may be
|
||||||
|
* silently ignored.
|
||||||
|
*/
|
||||||
|
#define AVIO_FLAG_NONBLOCK 8
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use direct mode.
|
||||||
|
* avio_read and avio_write should if possible be satisfied directly
|
||||||
|
* instead of going through a buffer, and avio_seek will always
|
||||||
|
* call the underlying seek function directly.
|
||||||
|
*/
|
||||||
|
#define AVIO_FLAG_DIRECT 0x8000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and initialize a AVIOContext for accessing the
|
||||||
|
* resource indicated by url.
|
||||||
|
* @note When the resource indicated by url has been opened in
|
||||||
|
* read+write mode, the AVIOContext can be used only for writing.
|
||||||
|
*
|
||||||
|
* @param s Used to return the pointer to the created AVIOContext.
|
||||||
|
* In case of failure the pointed to value is set to NULL.
|
||||||
|
* @param url resource to access
|
||||||
|
* @param flags flags which control how the resource indicated by url
|
||||||
|
* is to be opened
|
||||||
|
* @return >= 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code in case of failure
|
||||||
|
*/
|
||||||
|
int avio_open(AVIOContext **s, const char *url, int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create and initialize a AVIOContext for accessing the
|
||||||
|
* resource indicated by url.
|
||||||
|
* @note When the resource indicated by url has been opened in
|
||||||
|
* read+write mode, the AVIOContext can be used only for writing.
|
||||||
|
*
|
||||||
|
* @param s Used to return the pointer to the created AVIOContext.
|
||||||
|
* In case of failure the pointed to value is set to NULL.
|
||||||
|
* @param url resource to access
|
||||||
|
* @param flags flags which control how the resource indicated by url
|
||||||
|
* is to be opened
|
||||||
|
* @param int_cb an interrupt callback to be used at the protocols level
|
||||||
|
* @param options A dictionary filled with protocol-private options. On return
|
||||||
|
* this parameter will be destroyed and replaced with a dict containing options
|
||||||
|
* that were not found. May be NULL.
|
||||||
|
* @return >= 0 in case of success, a negative value corresponding to an
|
||||||
|
* AVERROR code in case of failure
|
||||||
|
*/
|
||||||
|
int avio_open2(AVIOContext **s, const char *url, int flags,
|
||||||
|
const AVIOInterruptCB *int_cb, AVDictionary **options);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the resource accessed by the AVIOContext s and free it.
|
||||||
|
* This function can only be used if s was opened by avio_open().
|
||||||
|
*
|
||||||
|
* The internal buffer is automatically flushed before closing the
|
||||||
|
* resource.
|
||||||
|
*
|
||||||
|
* @return 0 on success, an AVERROR < 0 on error.
|
||||||
|
* @see avio_closep
|
||||||
|
*/
|
||||||
|
int avio_close(AVIOContext *s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the resource accessed by the AVIOContext *s, free it
|
||||||
|
* and set the pointer pointing to it to NULL.
|
||||||
|
* This function can only be used if s was opened by avio_open().
|
||||||
|
*
|
||||||
|
* The internal buffer is automatically flushed before closing the
|
||||||
|
* resource.
|
||||||
|
*
|
||||||
|
* @return 0 on success, an AVERROR < 0 on error.
|
||||||
|
* @see avio_close
|
||||||
|
*/
|
||||||
|
int avio_closep(AVIOContext **s);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a write only memory stream.
|
||||||
|
*
|
||||||
|
* @param s new IO context
|
||||||
|
* @return zero if no error.
|
||||||
|
*/
|
||||||
|
int avio_open_dyn_buf(AVIOContext **s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the written size and a pointer to the buffer.
|
||||||
|
* The AVIOContext stream is left intact.
|
||||||
|
* The buffer must NOT be freed.
|
||||||
|
* No padding is added to the buffer.
|
||||||
|
*
|
||||||
|
* @param s IO context
|
||||||
|
* @param pbuffer pointer to a byte buffer
|
||||||
|
* @return the length of the byte buffer
|
||||||
|
*/
|
||||||
|
int avio_get_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the written size and a pointer to the buffer. The buffer
|
||||||
|
* must be freed with av_free().
|
||||||
|
* Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer.
|
||||||
|
*
|
||||||
|
* @param s IO context
|
||||||
|
* @param pbuffer pointer to a byte buffer
|
||||||
|
* @return the length of the byte buffer
|
||||||
|
*/
|
||||||
|
int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Iterate through names of available protocols.
|
||||||
|
*
|
||||||
|
* @param opaque A private pointer representing current protocol.
|
||||||
|
* It must be a pointer to NULL on first iteration and will
|
||||||
|
* be updated by successive calls to avio_enum_protocols.
|
||||||
|
* @param output If set to 1, iterate over output protocols,
|
||||||
|
* otherwise over input protocols.
|
||||||
|
*
|
||||||
|
* @return A static string containing the name of current protocol or NULL
|
||||||
|
*/
|
||||||
|
const char *avio_enum_protocols(void **opaque, int output);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Pause and resume playing - only meaningful if using a network streaming
|
||||||
|
* protocol (e.g. MMS).
|
||||||
|
*
|
||||||
|
* @param h IO context from which to call the read_pause function pointer
|
||||||
|
* @param pause 1 for pause, 0 for resume
|
||||||
|
*/
|
||||||
|
int avio_pause(AVIOContext *h, int pause);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Seek to a given timestamp relative to some component stream.
|
||||||
|
* Only meaningful if using a network streaming protocol (e.g. MMS.).
|
||||||
|
*
|
||||||
|
* @param h IO context from which to call the seek function pointers
|
||||||
|
* @param stream_index The stream index that the timestamp is relative to.
|
||||||
|
* If stream_index is (-1) the timestamp should be in AV_TIME_BASE
|
||||||
|
* units from the beginning of the presentation.
|
||||||
|
* If a stream_index >= 0 is used and the protocol does not support
|
||||||
|
* seeking based on component streams, the call will fail.
|
||||||
|
* @param timestamp timestamp in AVStream.time_base units
|
||||||
|
* or if there is no stream specified then in AV_TIME_BASE units.
|
||||||
|
* @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
|
||||||
|
* and AVSEEK_FLAG_ANY. The protocol may silently ignore
|
||||||
|
* AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
|
||||||
|
* fail if used and not supported.
|
||||||
|
* @return >= 0 on success
|
||||||
|
* @see AVInputFormat::read_seek
|
||||||
|
*/
|
||||||
|
int64_t avio_seek_time(AVIOContext *h, int stream_index,
|
||||||
|
int64_t timestamp, int flags);
|
||||||
|
|
||||||
|
/* Avoid a warning. The header can not be included because it breaks c++. */
|
||||||
|
struct AVBPrint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read contents of h into print buffer, up to max_size bytes, or up to EOF.
|
||||||
|
*
|
||||||
|
* @return 0 for success (max_size bytes read or EOF reached), negative error
|
||||||
|
* code otherwise
|
||||||
|
*/
|
||||||
|
int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Accept and allocate a client context on a server context.
|
||||||
|
* @param s the server context
|
||||||
|
* @param c the client context, must be unallocated
|
||||||
|
* @return >= 0 on success or a negative value corresponding
|
||||||
|
* to an AVERROR on failure
|
||||||
|
*/
|
||||||
|
int avio_accept(AVIOContext *s, AVIOContext **c);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform one step of the protocol handshake to accept a new client.
|
||||||
|
* This function must be called on a client returned by avio_accept() before
|
||||||
|
* using it as a read/write context.
|
||||||
|
* It is separate from avio_accept() because it may block.
|
||||||
|
* A step of the handshake is defined by places where the application may
|
||||||
|
* decide to change the proceedings.
|
||||||
|
* For example, on a protocol with a request header and a reply header, each
|
||||||
|
* one can constitute a step because the application may use the parameters
|
||||||
|
* from the request to change parameters in the reply; or each individual
|
||||||
|
* chunk of the request can constitute a step.
|
||||||
|
* If the handshake is already finished, avio_handshake() does nothing and
|
||||||
|
* returns 0 immediately.
|
||||||
|
*
|
||||||
|
* @param c the client context to perform the handshake on
|
||||||
|
* @return 0 on a complete and successful handshake
|
||||||
|
* > 0 if the handshake progressed, but is not complete
|
||||||
|
* < 0 for an AVERROR code
|
||||||
|
*/
|
||||||
|
int avio_handshake(AVIOContext *c);
|
||||||
|
#endif /* AVFORMAT_AVIO_H */
|
||||||
105
project/ffmpeg_dll_compact_348/include/libavformat/version.h
Normal file
105
project/ffmpeg_dll_compact_348/include/libavformat/version.h
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* Version macros.
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVFORMAT_VERSION_H
|
||||||
|
#define AVFORMAT_VERSION_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup libavf
|
||||||
|
* Libavformat version macros
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
|
// Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium)
|
||||||
|
// Also please add any ticket numbers that you believe might be affected here
|
||||||
|
#define LIBAVFORMAT_VERSION_MAJOR 57
|
||||||
|
#define LIBAVFORMAT_VERSION_MINOR 83
|
||||||
|
#define LIBAVFORMAT_VERSION_MICRO 100
|
||||||
|
|
||||||
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MICRO)
|
||||||
|
#define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MINOR, \
|
||||||
|
LIBAVFORMAT_VERSION_MICRO)
|
||||||
|
#define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FF_API_* defines may be placed below to indicate public API that will be
|
||||||
|
* dropped at a future version bump. The defines themselves are not part of
|
||||||
|
* the public API and may change, break or disappear at any time.
|
||||||
|
*
|
||||||
|
* @note, when bumping the major version it is recommended to manually
|
||||||
|
* disable each FF_API_* in its own commit instead of disabling them all
|
||||||
|
* at once through the bump. This improves the git bisect-ability of the change.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifndef FF_API_LAVF_BITEXACT
|
||||||
|
#define FF_API_LAVF_BITEXACT (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_FRAC
|
||||||
|
#define FF_API_LAVF_FRAC (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_CODEC_TB
|
||||||
|
#define FF_API_LAVF_CODEC_TB (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_URL_FEOF
|
||||||
|
#define FF_API_URL_FEOF (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_FMT_RAWPICTURE
|
||||||
|
#define FF_API_LAVF_FMT_RAWPICTURE (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_COMPUTE_PKT_FIELDS2
|
||||||
|
#define FF_API_COMPUTE_PKT_FIELDS2 (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_OPEN_CALLBACKS
|
||||||
|
#define FF_API_OLD_OPEN_CALLBACKS (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_AVCTX
|
||||||
|
#define FF_API_LAVF_AVCTX (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_NOCONST_GET_SIDE_DATA
|
||||||
|
#define FF_API_NOCONST_GET_SIDE_DATA (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_HTTP_USER_AGENT
|
||||||
|
#define FF_API_HTTP_USER_AGENT (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_HLS_WRAP
|
||||||
|
#define FF_API_HLS_WRAP (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_MERGE_SD
|
||||||
|
#define FF_API_LAVF_MERGE_SD (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_LAVF_KEEPSIDE_FLAG
|
||||||
|
#define FF_API_LAVF_KEEPSIDE_FLAG (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
#ifndef FF_API_OLD_ROTATE_API
|
||||||
|
#define FF_API_OLD_ROTATE_API (LIBAVFORMAT_VERSION_MAJOR < 58)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FF_API_R_FRAME_RATE
|
||||||
|
#define FF_API_R_FRAME_RATE 1
|
||||||
|
#endif
|
||||||
|
#endif /* AVFORMAT_VERSION_H */
|
||||||
@@ -0,0 +1,503 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVRESAMPLE_AVRESAMPLE_H
|
||||||
|
#define AVRESAMPLE_AVRESAMPLE_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavr
|
||||||
|
* external API header
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavr libavresample
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* Libavresample (lavr) is a library that handles audio resampling, sample
|
||||||
|
* format conversion and mixing.
|
||||||
|
*
|
||||||
|
* Interaction with lavr is done through AVAudioResampleContext, which is
|
||||||
|
* allocated with avresample_alloc_context(). It is opaque, so all parameters
|
||||||
|
* must be set with the @ref avoptions API.
|
||||||
|
*
|
||||||
|
* For example the following code will setup conversion from planar float sample
|
||||||
|
* format to interleaved signed 16-bit integer, downsampling from 48kHz to
|
||||||
|
* 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing
|
||||||
|
* matrix):
|
||||||
|
* @code
|
||||||
|
* AVAudioResampleContext *avr = avresample_alloc_context();
|
||||||
|
* av_opt_set_int(avr, "in_channel_layout", AV_CH_LAYOUT_5POINT1, 0);
|
||||||
|
* av_opt_set_int(avr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0);
|
||||||
|
* av_opt_set_int(avr, "in_sample_rate", 48000, 0);
|
||||||
|
* av_opt_set_int(avr, "out_sample_rate", 44100, 0);
|
||||||
|
* av_opt_set_int(avr, "in_sample_fmt", AV_SAMPLE_FMT_FLTP, 0);
|
||||||
|
* av_opt_set_int(avr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0);
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* Once the context is initialized, it must be opened with avresample_open(). If
|
||||||
|
* you need to change the conversion parameters, you must close the context with
|
||||||
|
* avresample_close(), change the parameters as described above, then reopen it
|
||||||
|
* again.
|
||||||
|
*
|
||||||
|
* The conversion itself is done by repeatedly calling avresample_convert().
|
||||||
|
* Note that the samples may get buffered in two places in lavr. The first one
|
||||||
|
* is the output FIFO, where the samples end up if the output buffer is not
|
||||||
|
* large enough. The data stored in there may be retrieved at any time with
|
||||||
|
* avresample_read(). The second place is the resampling delay buffer,
|
||||||
|
* applicable only when resampling is done. The samples in it require more input
|
||||||
|
* before they can be processed. Their current amount is returned by
|
||||||
|
* avresample_get_delay(). At the end of conversion the resampling buffer can be
|
||||||
|
* flushed by calling avresample_convert() with NULL input.
|
||||||
|
*
|
||||||
|
* The following code demonstrates the conversion loop assuming the parameters
|
||||||
|
* from above and caller-defined functions get_input() and handle_output():
|
||||||
|
* @code
|
||||||
|
* uint8_t **input;
|
||||||
|
* int in_linesize, in_samples;
|
||||||
|
*
|
||||||
|
* while (get_input(&input, &in_linesize, &in_samples)) {
|
||||||
|
* uint8_t *output
|
||||||
|
* int out_linesize;
|
||||||
|
* int out_samples = avresample_get_out_samples(avr, in_samples);
|
||||||
|
*
|
||||||
|
* av_samples_alloc(&output, &out_linesize, 2, out_samples,
|
||||||
|
* AV_SAMPLE_FMT_S16, 0);
|
||||||
|
* out_samples = avresample_convert(avr, &output, out_linesize, out_samples,
|
||||||
|
* input, in_linesize, in_samples);
|
||||||
|
* handle_output(output, out_linesize, out_samples);
|
||||||
|
* av_freep(&output);
|
||||||
|
* }
|
||||||
|
* @endcode
|
||||||
|
*
|
||||||
|
* When the conversion is finished and the FIFOs are flushed if required, the
|
||||||
|
* conversion context and everything associated with it must be freed with
|
||||||
|
* avresample_free().
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/avutil.h"
|
||||||
|
#include "libavutil/channel_layout.h"
|
||||||
|
#include "libavutil/dict.h"
|
||||||
|
#include "libavutil/frame.h"
|
||||||
|
#include "libavutil/log.h"
|
||||||
|
#include "libavutil/mathematics.h"
|
||||||
|
|
||||||
|
#include "libavresample/version.h"
|
||||||
|
|
||||||
|
#define AVRESAMPLE_MAX_CHANNELS 32
|
||||||
|
|
||||||
|
typedef struct AVAudioResampleContext AVAudioResampleContext;
|
||||||
|
|
||||||
|
/** Mixing Coefficient Types */
|
||||||
|
enum AVMixCoeffType {
|
||||||
|
AV_MIX_COEFF_TYPE_Q8, /** 16-bit 8.8 fixed-point */
|
||||||
|
AV_MIX_COEFF_TYPE_Q15, /** 32-bit 17.15 fixed-point */
|
||||||
|
AV_MIX_COEFF_TYPE_FLT, /** floating-point */
|
||||||
|
AV_MIX_COEFF_TYPE_NB, /** Number of coeff types. Not part of ABI */
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Resampling Filter Types */
|
||||||
|
enum AVResampleFilterType {
|
||||||
|
AV_RESAMPLE_FILTER_TYPE_CUBIC, /**< Cubic */
|
||||||
|
AV_RESAMPLE_FILTER_TYPE_BLACKMAN_NUTTALL, /**< Blackman Nuttall Windowed Sinc */
|
||||||
|
AV_RESAMPLE_FILTER_TYPE_KAISER, /**< Kaiser Windowed Sinc */
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AVResampleDitherMethod {
|
||||||
|
AV_RESAMPLE_DITHER_NONE, /**< Do not use dithering */
|
||||||
|
AV_RESAMPLE_DITHER_RECTANGULAR, /**< Rectangular Dither */
|
||||||
|
AV_RESAMPLE_DITHER_TRIANGULAR, /**< Triangular Dither*/
|
||||||
|
AV_RESAMPLE_DITHER_TRIANGULAR_HP, /**< Triangular Dither with High Pass */
|
||||||
|
AV_RESAMPLE_DITHER_TRIANGULAR_NS, /**< Triangular Dither with Noise Shaping */
|
||||||
|
AV_RESAMPLE_DITHER_NB, /**< Number of dither types. Not part of ABI. */
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the LIBAVRESAMPLE_VERSION_INT constant.
|
||||||
|
*/
|
||||||
|
unsigned avresample_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavresample build-time configuration.
|
||||||
|
* @return configure string
|
||||||
|
*/
|
||||||
|
const char *avresample_configuration(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavresample license.
|
||||||
|
*/
|
||||||
|
const char *avresample_license(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the AVClass for AVAudioResampleContext.
|
||||||
|
*
|
||||||
|
* Can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options
|
||||||
|
* without allocating a context.
|
||||||
|
*
|
||||||
|
* @see av_opt_find().
|
||||||
|
*
|
||||||
|
* @return AVClass for AVAudioResampleContext
|
||||||
|
*/
|
||||||
|
const AVClass *avresample_get_class(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate AVAudioResampleContext and set options.
|
||||||
|
*
|
||||||
|
* @return allocated audio resample context, or NULL on failure
|
||||||
|
*/
|
||||||
|
AVAudioResampleContext *avresample_alloc_context(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize AVAudioResampleContext.
|
||||||
|
* @note The context must be configured using the AVOption API.
|
||||||
|
* @note The fields "in_channel_layout", "out_channel_layout",
|
||||||
|
* "in_sample_rate", "out_sample_rate", "in_sample_fmt",
|
||||||
|
* "out_sample_fmt" must be set.
|
||||||
|
*
|
||||||
|
* @see av_opt_set_int()
|
||||||
|
* @see av_opt_set_dict()
|
||||||
|
* @see av_get_default_channel_layout()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_open(AVAudioResampleContext *avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether an AVAudioResampleContext is open or closed.
|
||||||
|
*
|
||||||
|
* @param avr AVAudioResampleContext to check
|
||||||
|
* @return 1 if avr is open, 0 if avr is closed.
|
||||||
|
*/
|
||||||
|
int avresample_is_open(AVAudioResampleContext *avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close AVAudioResampleContext.
|
||||||
|
*
|
||||||
|
* This closes the context, but it does not change the parameters. The context
|
||||||
|
* can be reopened with avresample_open(). It does, however, clear the output
|
||||||
|
* FIFO and any remaining leftover samples in the resampling delay buffer. If
|
||||||
|
* there was a custom matrix being used, that is also cleared.
|
||||||
|
*
|
||||||
|
* @see avresample_convert()
|
||||||
|
* @see avresample_set_matrix()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
*/
|
||||||
|
void avresample_close(AVAudioResampleContext *avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free AVAudioResampleContext and associated AVOption values.
|
||||||
|
*
|
||||||
|
* This also calls avresample_close() before freeing.
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
*/
|
||||||
|
void avresample_free(AVAudioResampleContext **avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a channel mixing matrix.
|
||||||
|
*
|
||||||
|
* This function is the one used internally by libavresample for building the
|
||||||
|
* default mixing matrix. It is made public just as a utility function for
|
||||||
|
* building custom matrices.
|
||||||
|
*
|
||||||
|
* @param in_layout input channel layout
|
||||||
|
* @param out_layout output channel layout
|
||||||
|
* @param center_mix_level mix level for the center channel
|
||||||
|
* @param surround_mix_level mix level for the surround channel(s)
|
||||||
|
* @param lfe_mix_level mix level for the low-frequency effects channel
|
||||||
|
* @param normalize if 1, coefficients will be normalized to prevent
|
||||||
|
* overflow. if 0, coefficients will not be
|
||||||
|
* normalized.
|
||||||
|
* @param[out] matrix mixing coefficients; matrix[i + stride * o] is
|
||||||
|
* the weight of input channel i in output channel o.
|
||||||
|
* @param stride distance between adjacent input channels in the
|
||||||
|
* matrix array
|
||||||
|
* @param matrix_encoding matrixed stereo downmix mode (e.g. dplii)
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout,
|
||||||
|
double center_mix_level, double surround_mix_level,
|
||||||
|
double lfe_mix_level, int normalize, double *matrix,
|
||||||
|
int stride, enum AVMatrixEncoding matrix_encoding);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current channel mixing matrix.
|
||||||
|
*
|
||||||
|
* If no custom matrix has been previously set or the AVAudioResampleContext is
|
||||||
|
* not open, an error is returned.
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param matrix mixing coefficients; matrix[i + stride * o] is the weight of
|
||||||
|
* input channel i in output channel o.
|
||||||
|
* @param stride distance between adjacent input channels in the matrix array
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix,
|
||||||
|
int stride);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set channel mixing matrix.
|
||||||
|
*
|
||||||
|
* Allows for setting a custom mixing matrix, overriding the default matrix
|
||||||
|
* generated internally during avresample_open(). This function can be called
|
||||||
|
* anytime on an allocated context, either before or after calling
|
||||||
|
* avresample_open(), as long as the channel layouts have been set.
|
||||||
|
* avresample_convert() always uses the current matrix.
|
||||||
|
* Calling avresample_close() on the context will clear the current matrix.
|
||||||
|
*
|
||||||
|
* @see avresample_close()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param matrix mixing coefficients; matrix[i + stride * o] is the weight of
|
||||||
|
* input channel i in output channel o.
|
||||||
|
* @param stride distance between adjacent input channels in the matrix array
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix,
|
||||||
|
int stride);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a customized input channel mapping.
|
||||||
|
*
|
||||||
|
* This function can only be called when the allocated context is not open.
|
||||||
|
* Also, the input channel layout must have already been set.
|
||||||
|
*
|
||||||
|
* Calling avresample_close() on the context will clear the channel mapping.
|
||||||
|
*
|
||||||
|
* The map for each input channel specifies the channel index in the source to
|
||||||
|
* use for that particular channel, or -1 to mute the channel. Source channels
|
||||||
|
* can be duplicated by using the same index for multiple input channels.
|
||||||
|
*
|
||||||
|
* Examples:
|
||||||
|
*
|
||||||
|
* Reordering 5.1 AAC order (C,L,R,Ls,Rs,LFE) to FFmpeg order (L,R,C,LFE,Ls,Rs):
|
||||||
|
* { 1, 2, 0, 5, 3, 4 }
|
||||||
|
*
|
||||||
|
* Muting the 3rd channel in 4-channel input:
|
||||||
|
* { 0, 1, -1, 3 }
|
||||||
|
*
|
||||||
|
* Duplicating the left channel of stereo input:
|
||||||
|
* { 0, 0 }
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param channel_map customized input channel mapping
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_set_channel_mapping(AVAudioResampleContext *avr,
|
||||||
|
const int *channel_map);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set compensation for resampling.
|
||||||
|
*
|
||||||
|
* This can be called anytime after avresample_open(). If resampling is not
|
||||||
|
* automatically enabled because of a sample rate conversion, the
|
||||||
|
* "force_resampling" option must have been set to 1 when opening the context
|
||||||
|
* in order to use resampling compensation.
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param sample_delta compensation delta, in samples
|
||||||
|
* @param compensation_distance compensation distance, in samples
|
||||||
|
* @return 0 on success, negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
|
||||||
|
int compensation_distance);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provide the upper bound on the number of samples the configured
|
||||||
|
* conversion would output.
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param in_nb_samples number of input samples
|
||||||
|
*
|
||||||
|
* @return number of samples or AVERROR(EINVAL) if the value
|
||||||
|
* would exceed INT_MAX
|
||||||
|
*/
|
||||||
|
|
||||||
|
int avresample_get_out_samples(AVAudioResampleContext *avr, int in_nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert input samples and write them to the output FIFO.
|
||||||
|
*
|
||||||
|
* The upper bound on the number of output samples can be obtained through
|
||||||
|
* avresample_get_out_samples().
|
||||||
|
*
|
||||||
|
* The output data can be NULL or have fewer allocated samples than required.
|
||||||
|
* In this case, any remaining samples not written to the output will be added
|
||||||
|
* to an internal FIFO buffer, to be returned at the next call to this function
|
||||||
|
* or to avresample_read().
|
||||||
|
*
|
||||||
|
* If converting sample rate, there may be data remaining in the internal
|
||||||
|
* resampling delay buffer. avresample_get_delay() tells the number of remaining
|
||||||
|
* samples. To get this data as output, call avresample_convert() with NULL
|
||||||
|
* input.
|
||||||
|
*
|
||||||
|
* At the end of the conversion process, there may be data remaining in the
|
||||||
|
* internal FIFO buffer. avresample_available() tells the number of remaining
|
||||||
|
* samples. To get this data as output, either call avresample_convert() with
|
||||||
|
* NULL input or call avresample_read().
|
||||||
|
*
|
||||||
|
* @see avresample_get_out_samples()
|
||||||
|
* @see avresample_read()
|
||||||
|
* @see avresample_get_delay()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param output output data pointers
|
||||||
|
* @param out_plane_size output plane size, in bytes.
|
||||||
|
* This can be 0 if unknown, but that will lead to
|
||||||
|
* optimized functions not being used directly on the
|
||||||
|
* output, which could slow down some conversions.
|
||||||
|
* @param out_samples maximum number of samples that the output buffer can hold
|
||||||
|
* @param input input data pointers
|
||||||
|
* @param in_plane_size input plane size, in bytes
|
||||||
|
* This can be 0 if unknown, but that will lead to
|
||||||
|
* optimized functions not being used directly on the
|
||||||
|
* input, which could slow down some conversions.
|
||||||
|
* @param in_samples number of input samples to convert
|
||||||
|
* @return number of samples written to the output buffer,
|
||||||
|
* not including converted samples added to the internal
|
||||||
|
* output FIFO
|
||||||
|
*/
|
||||||
|
int avresample_convert(AVAudioResampleContext *avr, uint8_t **output,
|
||||||
|
int out_plane_size, int out_samples,
|
||||||
|
uint8_t * const *input, int in_plane_size,
|
||||||
|
int in_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of samples currently in the resampling delay buffer.
|
||||||
|
*
|
||||||
|
* When resampling, there may be a delay between the input and output. Any
|
||||||
|
* unconverted samples in each call are stored internally in a delay buffer.
|
||||||
|
* This function allows the user to determine the current number of samples in
|
||||||
|
* the delay buffer, which can be useful for synchronization.
|
||||||
|
*
|
||||||
|
* @see avresample_convert()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @return number of samples currently in the resampling delay buffer
|
||||||
|
*/
|
||||||
|
int avresample_get_delay(AVAudioResampleContext *avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of available samples in the output FIFO.
|
||||||
|
*
|
||||||
|
* During conversion, if the user does not specify an output buffer or
|
||||||
|
* specifies an output buffer that is smaller than what is needed, remaining
|
||||||
|
* samples that are not written to the output are stored to an internal FIFO
|
||||||
|
* buffer. The samples in the FIFO can be read with avresample_read() or
|
||||||
|
* avresample_convert().
|
||||||
|
*
|
||||||
|
* @see avresample_read()
|
||||||
|
* @see avresample_convert()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @return number of samples available for reading
|
||||||
|
*/
|
||||||
|
int avresample_available(AVAudioResampleContext *avr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read samples from the output FIFO.
|
||||||
|
*
|
||||||
|
* During conversion, if the user does not specify an output buffer or
|
||||||
|
* specifies an output buffer that is smaller than what is needed, remaining
|
||||||
|
* samples that are not written to the output are stored to an internal FIFO
|
||||||
|
* buffer. This function can be used to read samples from that internal FIFO.
|
||||||
|
*
|
||||||
|
* @see avresample_available()
|
||||||
|
* @see avresample_convert()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param output output data pointers. May be NULL, in which case
|
||||||
|
* nb_samples of data is discarded from output FIFO.
|
||||||
|
* @param nb_samples number of samples to read from the FIFO
|
||||||
|
* @return the number of samples written to output
|
||||||
|
*/
|
||||||
|
int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert the samples in the input AVFrame and write them to the output AVFrame.
|
||||||
|
*
|
||||||
|
* Input and output AVFrames must have channel_layout, sample_rate and format set.
|
||||||
|
*
|
||||||
|
* The upper bound on the number of output samples is obtained through
|
||||||
|
* avresample_get_out_samples().
|
||||||
|
*
|
||||||
|
* If the output AVFrame does not have the data pointers allocated the nb_samples
|
||||||
|
* field will be set using avresample_get_out_samples() and av_frame_get_buffer()
|
||||||
|
* is called to allocate the frame.
|
||||||
|
*
|
||||||
|
* The output AVFrame can be NULL or have fewer allocated samples than required.
|
||||||
|
* In this case, any remaining samples not written to the output will be added
|
||||||
|
* to an internal FIFO buffer, to be returned at the next call to this function
|
||||||
|
* or to avresample_convert() or to avresample_read().
|
||||||
|
*
|
||||||
|
* If converting sample rate, there may be data remaining in the internal
|
||||||
|
* resampling delay buffer. avresample_get_delay() tells the number of
|
||||||
|
* remaining samples. To get this data as output, call this function or
|
||||||
|
* avresample_convert() with NULL input.
|
||||||
|
*
|
||||||
|
* At the end of the conversion process, there may be data remaining in the
|
||||||
|
* internal FIFO buffer. avresample_available() tells the number of remaining
|
||||||
|
* samples. To get this data as output, either call this function or
|
||||||
|
* avresample_convert() with NULL input or call avresample_read().
|
||||||
|
*
|
||||||
|
* If the AVAudioResampleContext configuration does not match the output and
|
||||||
|
* input AVFrame settings the conversion does not take place and depending on
|
||||||
|
* which AVFrame is not matching AVERROR_OUTPUT_CHANGED, AVERROR_INPUT_CHANGED
|
||||||
|
* or AVERROR_OUTPUT_CHANGED|AVERROR_INPUT_CHANGED is returned.
|
||||||
|
*
|
||||||
|
* @see avresample_get_out_samples()
|
||||||
|
* @see avresample_available()
|
||||||
|
* @see avresample_convert()
|
||||||
|
* @see avresample_read()
|
||||||
|
* @see avresample_get_delay()
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param output output AVFrame
|
||||||
|
* @param input input AVFrame
|
||||||
|
* @return 0 on success, AVERROR on failure or nonmatching
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
int avresample_convert_frame(AVAudioResampleContext *avr,
|
||||||
|
AVFrame *output, AVFrame *input);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure or reconfigure the AVAudioResampleContext using the information
|
||||||
|
* provided by the AVFrames.
|
||||||
|
*
|
||||||
|
* The original resampling context is reset even on failure.
|
||||||
|
* The function calls avresample_close() internally if the context is open.
|
||||||
|
*
|
||||||
|
* @see avresample_open();
|
||||||
|
* @see avresample_close();
|
||||||
|
*
|
||||||
|
* @param avr audio resample context
|
||||||
|
* @param out output AVFrame
|
||||||
|
* @param in input AVFrame
|
||||||
|
* @return 0 on success, AVERROR on failure.
|
||||||
|
*/
|
||||||
|
int avresample_config(AVAudioResampleContext *avr, AVFrame *out, AVFrame *in);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVRESAMPLE_AVRESAMPLE_H */
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVRESAMPLE_VERSION_H
|
||||||
|
#define AVRESAMPLE_VERSION_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavr
|
||||||
|
* Libavresample version macros.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "libavutil/version.h"
|
||||||
|
|
||||||
|
#define LIBAVRESAMPLE_VERSION_MAJOR 3
|
||||||
|
#define LIBAVRESAMPLE_VERSION_MINOR 7
|
||||||
|
#define LIBAVRESAMPLE_VERSION_MICRO 0
|
||||||
|
|
||||||
|
#define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \
|
||||||
|
LIBAVRESAMPLE_VERSION_MINOR, \
|
||||||
|
LIBAVRESAMPLE_VERSION_MICRO)
|
||||||
|
#define LIBAVRESAMPLE_VERSION AV_VERSION(LIBAVRESAMPLE_VERSION_MAJOR, \
|
||||||
|
LIBAVRESAMPLE_VERSION_MINOR, \
|
||||||
|
LIBAVRESAMPLE_VERSION_MICRO)
|
||||||
|
#define LIBAVRESAMPLE_BUILD LIBAVRESAMPLE_VERSION_INT
|
||||||
|
|
||||||
|
#define LIBAVRESAMPLE_IDENT "Lavr" AV_STRINGIFY(LIBAVRESAMPLE_VERSION)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* FF_API_* defines may be placed below to indicate public API that will be
|
||||||
|
* dropped at a future version bump. The defines themselves are not part of
|
||||||
|
* the public API and may change, break or disappear at any time.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVRESAMPLE_VERSION_H */
|
||||||
60
project/ffmpeg_dll_compact_348/include/libavutil/adler32.h
Normal file
60
project/ffmpeg_dll_compact_348/include/libavutil/adler32.h
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Mans Rullgard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavu_adler32
|
||||||
|
* Public header for Adler-32 hash function implementation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_ADLER32_H
|
||||||
|
#define AVUTIL_ADLER32_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu_adler32 Adler-32
|
||||||
|
* @ingroup lavu_hash
|
||||||
|
* Adler-32 hash function implementation.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the Adler32 checksum of a buffer.
|
||||||
|
*
|
||||||
|
* Passing the return value to a subsequent av_adler32_update() call
|
||||||
|
* allows the checksum of multiple buffers to be calculated as though
|
||||||
|
* they were concatenated.
|
||||||
|
*
|
||||||
|
* @param adler initial checksum value
|
||||||
|
* @param buf pointer to input buffer
|
||||||
|
* @param len size of input buffer
|
||||||
|
* @return updated checksum
|
||||||
|
*/
|
||||||
|
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
|
||||||
|
unsigned int len) av_pure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_ADLER32_H */
|
||||||
65
project/ffmpeg_dll_compact_348/include/libavutil/aes.h
Normal file
65
project/ffmpeg_dll_compact_348/include/libavutil/aes.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2007 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AES_H
|
||||||
|
#define AVUTIL_AES_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu_aes AES
|
||||||
|
* @ingroup lavu_crypto
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern const int av_aes_size;
|
||||||
|
|
||||||
|
struct AVAES;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVAES context.
|
||||||
|
*/
|
||||||
|
struct AVAES *av_aes_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize an AVAES context.
|
||||||
|
* @param key_bits 128, 192 or 256
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
int av_aes_init(struct AVAES *a, const uint8_t *key, int key_bits, int decrypt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||||
|
* @param count number of 16 byte blocks
|
||||||
|
* @param dst destination array, can be equal to src
|
||||||
|
* @param src source array, can be equal to dst
|
||||||
|
* @param iv initialization vector for CBC mode, if NULL then ECB will be used
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
void av_aes_crypt(struct AVAES *a, uint8_t *dst, const uint8_t *src, int count, uint8_t *iv, int decrypt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AES_H */
|
||||||
83
project/ffmpeg_dll_compact_348/include/libavutil/aes_ctr.h
Normal file
83
project/ffmpeg_dll_compact_348/include/libavutil/aes_ctr.h
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* AES-CTR cipher
|
||||||
|
* Copyright (c) 2015 Eran Kornblau <erankor at gmail dot com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AES_CTR_H
|
||||||
|
#define AVUTIL_AES_CTR_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "version.h"
|
||||||
|
|
||||||
|
#define AES_CTR_KEY_SIZE (16)
|
||||||
|
#define AES_CTR_IV_SIZE (8)
|
||||||
|
|
||||||
|
struct AVAESCTR;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVAESCTR context.
|
||||||
|
*/
|
||||||
|
struct AVAESCTR *av_aes_ctr_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize an AVAESCTR context.
|
||||||
|
* @param key encryption key, must have a length of AES_CTR_KEY_SIZE
|
||||||
|
*/
|
||||||
|
int av_aes_ctr_init(struct AVAESCTR *a, const uint8_t *key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Release an AVAESCTR context.
|
||||||
|
*/
|
||||||
|
void av_aes_ctr_free(struct AVAESCTR *a);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process a buffer using a previously initialized context.
|
||||||
|
* @param dst destination array, can be equal to src
|
||||||
|
* @param src source array, can be equal to dst
|
||||||
|
* @param size the size of src and dst
|
||||||
|
*/
|
||||||
|
void av_aes_ctr_crypt(struct AVAESCTR *a, uint8_t *dst, const uint8_t *src, int size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current iv
|
||||||
|
*/
|
||||||
|
const uint8_t* av_aes_ctr_get_iv(struct AVAESCTR *a);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a random iv
|
||||||
|
*/
|
||||||
|
void av_aes_ctr_set_random_iv(struct AVAESCTR *a);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forcefully change the iv
|
||||||
|
*/
|
||||||
|
void av_aes_ctr_set_iv(struct AVAESCTR *a, const uint8_t* iv);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increment the top 64 bit of the iv (performed after each frame)
|
||||||
|
*/
|
||||||
|
void av_aes_ctr_increment_iv(struct AVAESCTR *a);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AES_CTR_H */
|
||||||
167
project/ffmpeg_dll_compact_348/include/libavutil/attributes.h
Normal file
167
project/ffmpeg_dll_compact_348/include/libavutil/attributes.h
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Macro definitions for various function/variable attributes
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_ATTRIBUTES_H
|
||||||
|
#define AVUTIL_ATTRIBUTES_H
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y))
|
||||||
|
# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y))
|
||||||
|
#else
|
||||||
|
# define AV_GCC_VERSION_AT_LEAST(x,y) 0
|
||||||
|
# define AV_GCC_VERSION_AT_MOST(x,y) 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_always_inline
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_always_inline __attribute__((always_inline)) inline
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define av_always_inline __forceinline
|
||||||
|
#else
|
||||||
|
# define av_always_inline inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_extern_inline
|
||||||
|
#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__)
|
||||||
|
# define av_extern_inline extern inline
|
||||||
|
#else
|
||||||
|
# define av_extern_inline inline
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,4)
|
||||||
|
# define av_warn_unused_result __attribute__((warn_unused_result))
|
||||||
|
#else
|
||||||
|
# define av_warn_unused_result
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_noinline __attribute__((noinline))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define av_noinline __declspec(noinline)
|
||||||
|
#else
|
||||||
|
# define av_noinline
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define av_pure __attribute__((pure))
|
||||||
|
#else
|
||||||
|
# define av_pure
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(2,6)
|
||||||
|
# define av_const __attribute__((const))
|
||||||
|
#else
|
||||||
|
# define av_const
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,3)
|
||||||
|
# define av_cold __attribute__((cold))
|
||||||
|
#else
|
||||||
|
# define av_cold
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__)
|
||||||
|
# define av_flatten __attribute__((flatten))
|
||||||
|
#else
|
||||||
|
# define av_flatten
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1)
|
||||||
|
# define attribute_deprecated __attribute__((deprecated))
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define attribute_deprecated __declspec(deprecated)
|
||||||
|
#else
|
||||||
|
# define attribute_deprecated
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disable warnings about deprecated features
|
||||||
|
* This is useful for sections of code kept for backward compatibility and
|
||||||
|
* scheduled for removal.
|
||||||
|
*/
|
||||||
|
#ifndef AV_NOWARN_DEPRECATED
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(4,6)
|
||||||
|
# define AV_NOWARN_DEPRECATED(code) \
|
||||||
|
_Pragma("GCC diagnostic push") \
|
||||||
|
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
|
||||||
|
code \
|
||||||
|
_Pragma("GCC diagnostic pop")
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# define AV_NOWARN_DEPRECATED(code) \
|
||||||
|
__pragma(warning(push)) \
|
||||||
|
__pragma(warning(disable : 4996)) \
|
||||||
|
code; \
|
||||||
|
__pragma(warning(pop))
|
||||||
|
#else
|
||||||
|
# define AV_NOWARN_DEPRECATED(code) code
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) || defined(__clang__)
|
||||||
|
# define av_unused __attribute__((unused))
|
||||||
|
#else
|
||||||
|
# define av_unused
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mark a variable as used and prevent the compiler from optimizing it
|
||||||
|
* away. This is useful for variables accessed only from inline
|
||||||
|
* assembler without the compiler being aware.
|
||||||
|
*/
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__)
|
||||||
|
# define av_used __attribute__((used))
|
||||||
|
#else
|
||||||
|
# define av_used
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(3,3)
|
||||||
|
# define av_alias __attribute__((may_alias))
|
||||||
|
#else
|
||||||
|
# define av_alias
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__GNUC__) && !defined(__INTEL_COMPILER) && !defined(__clang__)
|
||||||
|
# define av_uninit(x) x=x
|
||||||
|
#else
|
||||||
|
# define av_uninit(x) x
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# define av_builtin_constant_p __builtin_constant_p
|
||||||
|
# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos)))
|
||||||
|
#else
|
||||||
|
# define av_builtin_constant_p(x) 0
|
||||||
|
# define av_printf_format(fmtpos, attrpos)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if AV_GCC_VERSION_AT_LEAST(2,5)
|
||||||
|
# define av_noreturn __attribute__((noreturn))
|
||||||
|
#else
|
||||||
|
# define av_noreturn
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* AVUTIL_ATTRIBUTES_H */
|
||||||
187
project/ffmpeg_dll_compact_348/include/libavutil/audio_fifo.h
Normal file
187
project/ffmpeg_dll_compact_348/include/libavutil/audio_fifo.h
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
/*
|
||||||
|
* Audio FIFO
|
||||||
|
* Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Audio FIFO Buffer
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AUDIO_FIFO_H
|
||||||
|
#define AVUTIL_AUDIO_FIFO_H
|
||||||
|
|
||||||
|
#include "avutil.h"
|
||||||
|
#include "fifo.h"
|
||||||
|
#include "samplefmt.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavu_audio
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @defgroup lavu_audiofifo Audio FIFO Buffer
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Context for an Audio FIFO Buffer.
|
||||||
|
*
|
||||||
|
* - Operates at the sample level rather than the byte level.
|
||||||
|
* - Supports multiple channels with either planar or packed sample format.
|
||||||
|
* - Automatic reallocation when writing to a full buffer.
|
||||||
|
*/
|
||||||
|
typedef struct AVAudioFifo AVAudioFifo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to free
|
||||||
|
*/
|
||||||
|
void av_audio_fifo_free(AVAudioFifo *af);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @param sample_fmt sample format
|
||||||
|
* @param channels number of channels
|
||||||
|
* @param nb_samples initial allocation size, in samples
|
||||||
|
* @return newly allocated AVAudioFifo, or NULL on error
|
||||||
|
*/
|
||||||
|
AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels,
|
||||||
|
int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reallocate an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to reallocate
|
||||||
|
* @param nb_samples new allocation size, in samples
|
||||||
|
* @return 0 if OK, or negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write data to an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* The AVAudioFifo will be reallocated automatically if the available space
|
||||||
|
* is less than nb_samples.
|
||||||
|
*
|
||||||
|
* @see enum AVSampleFormat
|
||||||
|
* The documentation for AVSampleFormat describes the data layout.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to write to
|
||||||
|
* @param data audio data plane pointers
|
||||||
|
* @param nb_samples number of samples to write
|
||||||
|
* @return number of samples actually written, or negative AVERROR
|
||||||
|
* code on failure. If successful, the number of samples
|
||||||
|
* actually written will always be nb_samples.
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Peek data from an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @see enum AVSampleFormat
|
||||||
|
* The documentation for AVSampleFormat describes the data layout.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to read from
|
||||||
|
* @param data audio data plane pointers
|
||||||
|
* @param nb_samples number of samples to peek
|
||||||
|
* @return number of samples actually peek, or negative AVERROR code
|
||||||
|
* on failure. The number of samples actually peek will not
|
||||||
|
* be greater than nb_samples, and will only be less than
|
||||||
|
* nb_samples if av_audio_fifo_size is less than nb_samples.
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_peek(AVAudioFifo *af, void **data, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Peek data from an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @see enum AVSampleFormat
|
||||||
|
* The documentation for AVSampleFormat describes the data layout.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to read from
|
||||||
|
* @param data audio data plane pointers
|
||||||
|
* @param nb_samples number of samples to peek
|
||||||
|
* @param offset offset from current read position
|
||||||
|
* @return number of samples actually peek, or negative AVERROR code
|
||||||
|
* on failure. The number of samples actually peek will not
|
||||||
|
* be greater than nb_samples, and will only be less than
|
||||||
|
* nb_samples if av_audio_fifo_size is less than nb_samples.
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_peek_at(AVAudioFifo *af, void **data, int nb_samples, int offset);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read data from an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* @see enum AVSampleFormat
|
||||||
|
* The documentation for AVSampleFormat describes the data layout.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to read from
|
||||||
|
* @param data audio data plane pointers
|
||||||
|
* @param nb_samples number of samples to read
|
||||||
|
* @return number of samples actually read, or negative AVERROR code
|
||||||
|
* on failure. The number of samples actually read will not
|
||||||
|
* be greater than nb_samples, and will only be less than
|
||||||
|
* nb_samples if av_audio_fifo_size is less than nb_samples.
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drain data from an AVAudioFifo.
|
||||||
|
*
|
||||||
|
* Removes the data without reading it.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to drain
|
||||||
|
* @param nb_samples number of samples to drain
|
||||||
|
* @return 0 if OK, or negative AVERROR code on failure
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the AVAudioFifo buffer.
|
||||||
|
*
|
||||||
|
* This empties all data in the buffer.
|
||||||
|
*
|
||||||
|
* @param af AVAudioFifo to reset
|
||||||
|
*/
|
||||||
|
void av_audio_fifo_reset(AVAudioFifo *af);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current number of samples in the AVAudioFifo available for reading.
|
||||||
|
*
|
||||||
|
* @param af the AVAudioFifo to query
|
||||||
|
* @return number of samples available for reading
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_size(AVAudioFifo *af);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current number of samples in the AVAudioFifo available for writing.
|
||||||
|
*
|
||||||
|
* @param af the AVAudioFifo to query
|
||||||
|
* @return number of samples available for writing
|
||||||
|
*/
|
||||||
|
int av_audio_fifo_space(AVAudioFifo *af);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AUDIO_FIFO_H */
|
||||||
75
project/ffmpeg_dll_compact_348/include/libavutil/avassert.h
Normal file
75
project/ffmpeg_dll_compact_348/include/libavutil/avassert.h
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* simple assert() macros that are a bit more flexible than ISO C assert().
|
||||||
|
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVASSERT_H
|
||||||
|
#define AVUTIL_AVASSERT_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "avutil.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that is always enabled.
|
||||||
|
*/
|
||||||
|
#define av_assert0(cond) do { \
|
||||||
|
if (!(cond)) { \
|
||||||
|
av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n", \
|
||||||
|
AV_STRINGIFY(cond), __FILE__, __LINE__); \
|
||||||
|
abort(); \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that does not lie in speed critical code.
|
||||||
|
* These asserts() thus can be enabled without fearing speed loss.
|
||||||
|
*/
|
||||||
|
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0
|
||||||
|
#define av_assert1(cond) av_assert0(cond)
|
||||||
|
#else
|
||||||
|
#define av_assert1(cond) ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* assert() equivalent, that does lie in speed critical code.
|
||||||
|
*/
|
||||||
|
#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1
|
||||||
|
#define av_assert2(cond) av_assert0(cond)
|
||||||
|
#define av_assert2_fpu() av_assert0_fpu()
|
||||||
|
#else
|
||||||
|
#define av_assert2(cond) ((void)0)
|
||||||
|
#define av_assert2_fpu() ((void)0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assert that floating point opperations can be executed.
|
||||||
|
*
|
||||||
|
* This will av_assert0() that the cpu is not in MMX state on X86
|
||||||
|
*/
|
||||||
|
void av_assert0_fpu(void);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVASSERT_H */
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/* Generated by ffconf */
|
||||||
|
#ifndef AVUTIL_AVCONFIG_H
|
||||||
|
#define AVUTIL_AVCONFIG_H
|
||||||
|
#define AV_HAVE_BIGENDIAN 0
|
||||||
|
#define AV_HAVE_FAST_UNALIGNED 1
|
||||||
|
#endif /* AVUTIL_AVCONFIG_H */
|
||||||
407
project/ffmpeg_dll_compact_348/include/libavutil/avstring.h
Normal file
407
project/ffmpeg_dll_compact_348/include/libavutil/avstring.h
Normal file
@@ -0,0 +1,407 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2007 Mans Rullgard
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVSTRING_H
|
||||||
|
#define AVUTIL_AVSTRING_H
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavu_string
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return non-zero if pfx is a prefix of str. If it is, *ptr is set to
|
||||||
|
* the address of the first character in str after the prefix.
|
||||||
|
*
|
||||||
|
* @param str input string
|
||||||
|
* @param pfx prefix to test
|
||||||
|
* @param ptr updated if the prefix is matched inside str
|
||||||
|
* @return non-zero if the prefix matches, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_strstart(const char *str, const char *pfx, const char **ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return non-zero if pfx is a prefix of str independent of case. If
|
||||||
|
* it is, *ptr is set to the address of the first character in str
|
||||||
|
* after the prefix.
|
||||||
|
*
|
||||||
|
* @param str input string
|
||||||
|
* @param pfx prefix to test
|
||||||
|
* @param ptr updated if the prefix is matched inside str
|
||||||
|
* @return non-zero if the prefix matches, zero otherwise
|
||||||
|
*/
|
||||||
|
int av_stristart(const char *str, const char *pfx, const char **ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locate the first case-independent occurrence in the string haystack
|
||||||
|
* of the string needle. A zero-length string needle is considered to
|
||||||
|
* match at the start of haystack.
|
||||||
|
*
|
||||||
|
* This function is a case-insensitive version of the standard strstr().
|
||||||
|
*
|
||||||
|
* @param haystack string to search in
|
||||||
|
* @param needle string to search for
|
||||||
|
* @return pointer to the located match within haystack
|
||||||
|
* or a null pointer if no match
|
||||||
|
*/
|
||||||
|
char *av_stristr(const char *haystack, const char *needle);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locate the first occurrence of the string needle in the string haystack
|
||||||
|
* where not more than hay_length characters are searched. A zero-length
|
||||||
|
* string needle is considered to match at the start of haystack.
|
||||||
|
*
|
||||||
|
* This function is a length-limited version of the standard strstr().
|
||||||
|
*
|
||||||
|
* @param haystack string to search in
|
||||||
|
* @param needle string to search for
|
||||||
|
* @param hay_length length of string to search in
|
||||||
|
* @return pointer to the located match within haystack
|
||||||
|
* or a null pointer if no match
|
||||||
|
*/
|
||||||
|
char *av_strnstr(const char *haystack, const char *needle, size_t hay_length);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy the string src to dst, but no more than size - 1 bytes, and
|
||||||
|
* null-terminate dst.
|
||||||
|
*
|
||||||
|
* This function is the same as BSD strlcpy().
|
||||||
|
*
|
||||||
|
* @param dst destination buffer
|
||||||
|
* @param src source string
|
||||||
|
* @param size size of destination buffer
|
||||||
|
* @return the length of src
|
||||||
|
*
|
||||||
|
* @warning since the return value is the length of src, src absolutely
|
||||||
|
* _must_ be a properly 0-terminated string, otherwise this will read beyond
|
||||||
|
* the end of the buffer and possibly crash.
|
||||||
|
*/
|
||||||
|
size_t av_strlcpy(char *dst, const char *src, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append the string src to the string dst, but to a total length of
|
||||||
|
* no more than size - 1 bytes, and null-terminate dst.
|
||||||
|
*
|
||||||
|
* This function is similar to BSD strlcat(), but differs when
|
||||||
|
* size <= strlen(dst).
|
||||||
|
*
|
||||||
|
* @param dst destination buffer
|
||||||
|
* @param src source string
|
||||||
|
* @param size size of destination buffer
|
||||||
|
* @return the total length of src and dst
|
||||||
|
*
|
||||||
|
* @warning since the return value use the length of src and dst, these
|
||||||
|
* absolutely _must_ be a properly 0-terminated strings, otherwise this
|
||||||
|
* will read beyond the end of the buffer and possibly crash.
|
||||||
|
*/
|
||||||
|
size_t av_strlcat(char *dst, const char *src, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append output to a string, according to a format. Never write out of
|
||||||
|
* the destination buffer, and always put a terminating 0 within
|
||||||
|
* the buffer.
|
||||||
|
* @param dst destination buffer (string to which the output is
|
||||||
|
* appended)
|
||||||
|
* @param size total size of the destination buffer
|
||||||
|
* @param fmt printf-compatible format string, specifying how the
|
||||||
|
* following parameters are used
|
||||||
|
* @return the length of the string that would have been generated
|
||||||
|
* if enough space had been available
|
||||||
|
*/
|
||||||
|
size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the count of continuous non zero chars starting from the beginning.
|
||||||
|
*
|
||||||
|
* @param len maximum number of characters to check in the string, that
|
||||||
|
* is the maximum value which is returned by the function
|
||||||
|
*/
|
||||||
|
static inline size_t av_strnlen(const char *s, size_t len)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
for (i = 0; i < len && s[i]; i++)
|
||||||
|
;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Print arguments following specified format into a large enough auto
|
||||||
|
* allocated buffer. It is similar to GNU asprintf().
|
||||||
|
* @param fmt printf-compatible format string, specifying how the
|
||||||
|
* following parameters are used.
|
||||||
|
* @return the allocated string
|
||||||
|
* @note You have to free the string yourself with av_free().
|
||||||
|
*/
|
||||||
|
char *av_asprintf(const char *fmt, ...) av_printf_format(1, 2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert a number to an av_malloced string.
|
||||||
|
*/
|
||||||
|
char *av_d2str(double d);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unescape the given string until a non escaped terminating char,
|
||||||
|
* and return the token corresponding to the unescaped string.
|
||||||
|
*
|
||||||
|
* The normal \ and ' escaping is supported. Leading and trailing
|
||||||
|
* whitespaces are removed, unless they are escaped with '\' or are
|
||||||
|
* enclosed between ''.
|
||||||
|
*
|
||||||
|
* @param buf the buffer to parse, buf will be updated to point to the
|
||||||
|
* terminating char
|
||||||
|
* @param term a 0-terminated list of terminating chars
|
||||||
|
* @return the malloced unescaped string, which must be av_freed by
|
||||||
|
* the user, NULL in case of allocation failure
|
||||||
|
*/
|
||||||
|
char *av_get_token(const char **buf, const char *term);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Split the string into several tokens which can be accessed by
|
||||||
|
* successive calls to av_strtok().
|
||||||
|
*
|
||||||
|
* A token is defined as a sequence of characters not belonging to the
|
||||||
|
* set specified in delim.
|
||||||
|
*
|
||||||
|
* On the first call to av_strtok(), s should point to the string to
|
||||||
|
* parse, and the value of saveptr is ignored. In subsequent calls, s
|
||||||
|
* should be NULL, and saveptr should be unchanged since the previous
|
||||||
|
* call.
|
||||||
|
*
|
||||||
|
* This function is similar to strtok_r() defined in POSIX.1.
|
||||||
|
*
|
||||||
|
* @param s the string to parse, may be NULL
|
||||||
|
* @param delim 0-terminated list of token delimiters, must be non-NULL
|
||||||
|
* @param saveptr user-provided pointer which points to stored
|
||||||
|
* information necessary for av_strtok() to continue scanning the same
|
||||||
|
* string. saveptr is updated to point to the next character after the
|
||||||
|
* first delimiter found, or to NULL if the string was terminated
|
||||||
|
* @return the found token, or NULL when no token is found
|
||||||
|
*/
|
||||||
|
char *av_strtok(char *s, const char *delim, char **saveptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII isdigit.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_isdigit(int c)
|
||||||
|
{
|
||||||
|
return c >= '0' && c <= '9';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII isgraph.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_isgraph(int c)
|
||||||
|
{
|
||||||
|
return c > 32 && c < 127;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII isspace.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_isspace(int c)
|
||||||
|
{
|
||||||
|
return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' ||
|
||||||
|
c == '\v';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII characters to uppercase.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_toupper(int c)
|
||||||
|
{
|
||||||
|
if (c >= 'a' && c <= 'z')
|
||||||
|
c ^= 0x20;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII characters to lowercase.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_tolower(int c)
|
||||||
|
{
|
||||||
|
if (c >= 'A' && c <= 'Z')
|
||||||
|
c ^= 0x20;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent conversion of ASCII isxdigit.
|
||||||
|
*/
|
||||||
|
static inline av_const int av_isxdigit(int c)
|
||||||
|
{
|
||||||
|
c = av_tolower(c);
|
||||||
|
return av_isdigit(c) || (c >= 'a' && c <= 'f');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent case-insensitive compare.
|
||||||
|
* @note This means only ASCII-range characters are case-insensitive
|
||||||
|
*/
|
||||||
|
int av_strcasecmp(const char *a, const char *b);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent case-insensitive compare.
|
||||||
|
* @note This means only ASCII-range characters are case-insensitive
|
||||||
|
*/
|
||||||
|
int av_strncasecmp(const char *a, const char *b, size_t n);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locale-independent strings replace.
|
||||||
|
* @note This means only ASCII-range characters are replace
|
||||||
|
*/
|
||||||
|
char *av_strireplace(const char *str, const char *from, const char *to);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Thread safe basename.
|
||||||
|
* @param path the path, on DOS both \ and / are considered separators.
|
||||||
|
* @return pointer to the basename substring.
|
||||||
|
*/
|
||||||
|
const char *av_basename(const char *path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Thread safe dirname.
|
||||||
|
* @param path the path, on DOS both \ and / are considered separators.
|
||||||
|
* @return the path with the separator replaced by the string terminator or ".".
|
||||||
|
* @note the function may change the input string.
|
||||||
|
*/
|
||||||
|
const char *av_dirname(char *path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match instances of a name in a comma-separated list of names.
|
||||||
|
* List entries are checked from the start to the end of the names list,
|
||||||
|
* the first match ends further processing. If an entry prefixed with '-'
|
||||||
|
* matches, then 0 is returned. The "ALL" list entry is considered to
|
||||||
|
* match all names.
|
||||||
|
*
|
||||||
|
* @param name Name to look for.
|
||||||
|
* @param names List of names.
|
||||||
|
* @return 1 on match, 0 otherwise.
|
||||||
|
*/
|
||||||
|
int av_match_name(const char *name, const char *names);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append path component to the existing path.
|
||||||
|
* Path separator '/' is placed between when needed.
|
||||||
|
* Resulting string have to be freed with av_free().
|
||||||
|
* @param path base path
|
||||||
|
* @param component component to be appended
|
||||||
|
* @return new path or NULL on error.
|
||||||
|
*/
|
||||||
|
char *av_append_path_component(const char *path, const char *component);
|
||||||
|
|
||||||
|
enum AVEscapeMode {
|
||||||
|
AV_ESCAPE_MODE_AUTO, ///< Use auto-selected escaping mode.
|
||||||
|
AV_ESCAPE_MODE_BACKSLASH, ///< Use backslash escaping.
|
||||||
|
AV_ESCAPE_MODE_QUOTE, ///< Use single-quote escaping.
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Consider spaces special and escape them even in the middle of the
|
||||||
|
* string.
|
||||||
|
*
|
||||||
|
* This is equivalent to adding the whitespace characters to the special
|
||||||
|
* characters lists, except it is guaranteed to use the exact same list
|
||||||
|
* of whitespace characters as the rest of libavutil.
|
||||||
|
*/
|
||||||
|
#define AV_ESCAPE_FLAG_WHITESPACE (1 << 0)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape only specified special characters.
|
||||||
|
* Without this flag, escape also any characters that may be considered
|
||||||
|
* special by av_get_token(), such as the single quote.
|
||||||
|
*/
|
||||||
|
#define AV_ESCAPE_FLAG_STRICT (1 << 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape string in src, and put the escaped string in an allocated
|
||||||
|
* string in *dst, which must be freed with av_free().
|
||||||
|
*
|
||||||
|
* @param dst pointer where an allocated string is put
|
||||||
|
* @param src string to escape, must be non-NULL
|
||||||
|
* @param special_chars string containing the special characters which
|
||||||
|
* need to be escaped, can be NULL
|
||||||
|
* @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros.
|
||||||
|
* Any unknown value for mode will be considered equivalent to
|
||||||
|
* AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without
|
||||||
|
* notice.
|
||||||
|
* @param flags flags which control how to escape, see AV_ESCAPE_FLAG_ macros
|
||||||
|
* @return the length of the allocated string, or a negative error code in case of error
|
||||||
|
* @see av_bprint_escape()
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_escape(char **dst, const char *src, const char *special_chars,
|
||||||
|
enum AVEscapeMode mode, int flags);
|
||||||
|
|
||||||
|
#define AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES 1 ///< accept codepoints over 0x10FFFF
|
||||||
|
#define AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS 2 ///< accept non-characters - 0xFFFE and 0xFFFF
|
||||||
|
#define AV_UTF8_FLAG_ACCEPT_SURROGATES 4 ///< accept UTF-16 surrogates codes
|
||||||
|
#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES 8 ///< exclude control codes not accepted by XML
|
||||||
|
|
||||||
|
#define AV_UTF8_FLAG_ACCEPT_ALL \
|
||||||
|
AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES|AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS|AV_UTF8_FLAG_ACCEPT_SURROGATES
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read and decode a single UTF-8 code point (character) from the
|
||||||
|
* buffer in *buf, and update *buf to point to the next byte to
|
||||||
|
* decode.
|
||||||
|
*
|
||||||
|
* In case of an invalid byte sequence, the pointer will be updated to
|
||||||
|
* the next byte after the invalid sequence and the function will
|
||||||
|
* return an error code.
|
||||||
|
*
|
||||||
|
* Depending on the specified flags, the function will also fail in
|
||||||
|
* case the decoded code point does not belong to a valid range.
|
||||||
|
*
|
||||||
|
* @note For speed-relevant code a carefully implemented use of
|
||||||
|
* GET_UTF8() may be preferred.
|
||||||
|
*
|
||||||
|
* @param codep pointer used to return the parsed code in case of success.
|
||||||
|
* The value in *codep is set even in case the range check fails.
|
||||||
|
* @param bufp pointer to the address the first byte of the sequence
|
||||||
|
* to decode, updated by the function to point to the
|
||||||
|
* byte next after the decoded sequence
|
||||||
|
* @param buf_end pointer to the end of the buffer, points to the next
|
||||||
|
* byte past the last in the buffer. This is used to
|
||||||
|
* avoid buffer overreads (in case of an unfinished
|
||||||
|
* UTF-8 sequence towards the end of the buffer).
|
||||||
|
* @param flags a collection of AV_UTF8_FLAG_* flags
|
||||||
|
* @return >= 0 in case a sequence was successfully read, a negative
|
||||||
|
* value in case of invalid sequence
|
||||||
|
*/
|
||||||
|
av_warn_unused_result
|
||||||
|
int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end,
|
||||||
|
unsigned int flags);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a name is in a list.
|
||||||
|
* @returns 0 if not found, or the 1 based index where it has been found in the
|
||||||
|
* list.
|
||||||
|
*/
|
||||||
|
int av_match_list(const char *name, const char *list, char separator);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVSTRING_H */
|
||||||
365
project/ffmpeg_dll_compact_348/include/libavutil/avutil.h
Normal file
365
project/ffmpeg_dll_compact_348/include/libavutil/avutil.h
Normal file
@@ -0,0 +1,365 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_AVUTIL_H
|
||||||
|
#define AVUTIL_AVUTIL_H
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* @ingroup lavu
|
||||||
|
* Convenience header that includes @ref lavu "libavutil"'s core.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @mainpage
|
||||||
|
*
|
||||||
|
* @section ffmpeg_intro Introduction
|
||||||
|
*
|
||||||
|
* This document describes the usage of the different libraries
|
||||||
|
* provided by FFmpeg.
|
||||||
|
*
|
||||||
|
* @li @ref libavc "libavcodec" encoding/decoding library
|
||||||
|
* @li @ref lavfi "libavfilter" graph-based frame editing library
|
||||||
|
* @li @ref libavf "libavformat" I/O and muxing/demuxing library
|
||||||
|
* @li @ref lavd "libavdevice" special devices muxing/demuxing library
|
||||||
|
* @li @ref lavu "libavutil" common utility library
|
||||||
|
* @li @ref lswr "libswresample" audio resampling, format conversion and mixing
|
||||||
|
* @li @ref lpp "libpostproc" post processing library
|
||||||
|
* @li @ref libsws "libswscale" color conversion and scaling library
|
||||||
|
*
|
||||||
|
* @section ffmpeg_versioning Versioning and compatibility
|
||||||
|
*
|
||||||
|
* Each of the FFmpeg libraries contains a version.h header, which defines a
|
||||||
|
* major, minor and micro version number with the
|
||||||
|
* <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
|
||||||
|
* number is incremented with backward incompatible changes - e.g. removing
|
||||||
|
* parts of the public API, reordering public struct members, etc. The minor
|
||||||
|
* version number is incremented for backward compatible API changes or major
|
||||||
|
* new features - e.g. adding a new public function or a new decoder. The micro
|
||||||
|
* version number is incremented for smaller changes that a calling program
|
||||||
|
* might still want to check for - e.g. changing behavior in a previously
|
||||||
|
* unspecified situation.
|
||||||
|
*
|
||||||
|
* FFmpeg guarantees backward API and ABI compatibility for each library as long
|
||||||
|
* as its major version number is unchanged. This means that no public symbols
|
||||||
|
* will be removed or renamed. Types and names of the public struct members and
|
||||||
|
* values of public macros and enums will remain the same (unless they were
|
||||||
|
* explicitly declared as not part of the public API). Documented behavior will
|
||||||
|
* not change.
|
||||||
|
*
|
||||||
|
* In other words, any correct program that works with a given FFmpeg snapshot
|
||||||
|
* should work just as well without any changes with any later snapshot with the
|
||||||
|
* same major versions. This applies to both rebuilding the program against new
|
||||||
|
* FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program
|
||||||
|
* links against.
|
||||||
|
*
|
||||||
|
* However, new public symbols may be added and new members may be appended to
|
||||||
|
* public structs whose size is not part of public ABI (most public structs in
|
||||||
|
* FFmpeg). New macros and enum values may be added. Behavior in undocumented
|
||||||
|
* situations may change slightly (and be documented). All those are accompanied
|
||||||
|
* by an entry in doc/APIchanges and incrementing either the minor or micro
|
||||||
|
* version number.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu libavutil
|
||||||
|
* Common code shared across all FFmpeg libraries.
|
||||||
|
*
|
||||||
|
* @note
|
||||||
|
* libavutil is designed to be modular. In most cases, in order to use the
|
||||||
|
* functions provided by one component of libavutil you must explicitly include
|
||||||
|
* the specific header containing that feature. If you are only using
|
||||||
|
* media-related components, you could simply include libavutil/avutil.h, which
|
||||||
|
* brings in most of the "core" components.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @defgroup lavu_crypto Crypto and Hashing
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_math Mathematics
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_string String Manipulation
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_mem Memory Management
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_data Data Structures
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_video Video related
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_audio Audio related
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_error Error Codes
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_log Logging Facility
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup lavu_misc Other
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @defgroup preproc_misc Preprocessor String Macros
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*
|
||||||
|
* @defgroup version_utils Library Version Macros
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavu_ver
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the LIBAVUTIL_VERSION_INT constant.
|
||||||
|
*/
|
||||||
|
unsigned avutil_version(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return an informative version string. This usually is the actual release
|
||||||
|
* version number or a git commit description. This string has no fixed format
|
||||||
|
* and can change any time. It should never be parsed by code.
|
||||||
|
*/
|
||||||
|
const char *av_version_info(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavutil build-time configuration.
|
||||||
|
*/
|
||||||
|
const char *avutil_configuration(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the libavutil license.
|
||||||
|
*/
|
||||||
|
const char *avutil_license(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @addtogroup lavu_media Media Type
|
||||||
|
* @brief Media Type
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum AVMediaType {
|
||||||
|
AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
|
||||||
|
AVMEDIA_TYPE_VIDEO,
|
||||||
|
AVMEDIA_TYPE_AUDIO,
|
||||||
|
AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
|
||||||
|
AVMEDIA_TYPE_SUBTITLE,
|
||||||
|
AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
|
||||||
|
AVMEDIA_TYPE_NB
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a string describing the media_type enum, NULL if media_type
|
||||||
|
* is unknown.
|
||||||
|
*/
|
||||||
|
const char *av_get_media_type_string(enum AVMediaType media_type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu_const Constants
|
||||||
|
* @{
|
||||||
|
*
|
||||||
|
* @defgroup lavu_enc Encoding specific
|
||||||
|
*
|
||||||
|
* @note those definition should move to avcodec
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FF_LAMBDA_SHIFT 7
|
||||||
|
#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
|
||||||
|
#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
|
||||||
|
#define FF_LAMBDA_MAX (256*128-1)
|
||||||
|
|
||||||
|
#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @defgroup lavu_time Timestamp specific
|
||||||
|
*
|
||||||
|
* FFmpeg internal timebase and timestamp definitions
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Undefined timestamp value
|
||||||
|
*
|
||||||
|
* Usually reported by demuxer that work on containers that do not provide
|
||||||
|
* either pts or dts.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal time base represented as integer
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_TIME_BASE 1000000
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal time base represented as fractional value
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
* @defgroup lavu_picture Image related
|
||||||
|
*
|
||||||
|
* AVPicture types, pixel formats and basic image planes manipulation.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
enum AVPictureType {
|
||||||
|
AV_PICTURE_TYPE_NONE = 0, ///< Undefined
|
||||||
|
AV_PICTURE_TYPE_I, ///< Intra
|
||||||
|
AV_PICTURE_TYPE_P, ///< Predicted
|
||||||
|
AV_PICTURE_TYPE_B, ///< Bi-dir predicted
|
||||||
|
AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG-4
|
||||||
|
AV_PICTURE_TYPE_SI, ///< Switching Intra
|
||||||
|
AV_PICTURE_TYPE_SP, ///< Switching Predicted
|
||||||
|
AV_PICTURE_TYPE_BI, ///< BI type
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a single letter to describe the given picture type
|
||||||
|
* pict_type.
|
||||||
|
*
|
||||||
|
* @param[in] pict_type the picture type @return a single character
|
||||||
|
* representing the picture type, '?' if pict_type is unknown
|
||||||
|
*/
|
||||||
|
char av_get_picture_type_char(enum AVPictureType pict_type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "error.h"
|
||||||
|
#include "rational.h"
|
||||||
|
#include "version.h"
|
||||||
|
#include "macros.h"
|
||||||
|
#include "mathematics.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "pixfmt.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return x default pointer in case p is NULL.
|
||||||
|
*/
|
||||||
|
static inline void *av_x_if_null(const void *p, const void *x)
|
||||||
|
{
|
||||||
|
return (void *)(intptr_t)(p ? p : x);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compute the length of an integer list.
|
||||||
|
*
|
||||||
|
* @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
|
||||||
|
* @param term list terminator (usually 0 or -1)
|
||||||
|
* @param list pointer to the list
|
||||||
|
* @return length of the list, in elements, not counting the terminator
|
||||||
|
*/
|
||||||
|
unsigned av_int_list_length_for_size(unsigned elsize,
|
||||||
|
const void *list, uint64_t term) av_pure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compute the length of an integer list.
|
||||||
|
*
|
||||||
|
* @param term list terminator (usually 0 or -1)
|
||||||
|
* @param list pointer to the list
|
||||||
|
* @return length of the list, in elements, not counting the terminator
|
||||||
|
*/
|
||||||
|
#define av_int_list_length(list, term) \
|
||||||
|
av_int_list_length_for_size(sizeof(*(list)), list, term)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a file using a UTF-8 filename.
|
||||||
|
* The API of this function matches POSIX fopen(), errors are returned through
|
||||||
|
* errno.
|
||||||
|
*/
|
||||||
|
FILE *av_fopen_utf8(const char *path, const char *mode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the fractional representation of the internal time base.
|
||||||
|
*/
|
||||||
|
AVRational av_get_time_base_q(void);
|
||||||
|
|
||||||
|
#define AV_FOURCC_MAX_STRING_SIZE 32
|
||||||
|
|
||||||
|
#define av_fourcc2str(fourcc) av_fourcc_make_string((char[AV_FOURCC_MAX_STRING_SIZE]){0}, fourcc)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill the provided buffer with a string containing a FourCC (four-character
|
||||||
|
* code) representation.
|
||||||
|
*
|
||||||
|
* @param buf a buffer with size in bytes of at least AV_FOURCC_MAX_STRING_SIZE
|
||||||
|
* @param fourcc the fourcc to represent
|
||||||
|
* @return the buffer in input
|
||||||
|
*/
|
||||||
|
char *av_fourcc_make_string(char *buf, uint32_t fourcc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_AVUTIL_H */
|
||||||
72
project/ffmpeg_dll_compact_348/include/libavutil/base64.h
Normal file
72
project/ffmpeg_dll_compact_348/include/libavutil/base64.h
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2006 Ryan Martell. (rdm4@martellventures.com)
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BASE64_H
|
||||||
|
#define AVUTIL_BASE64_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu_base64 Base64
|
||||||
|
* @ingroup lavu_crypto
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a base64-encoded string.
|
||||||
|
*
|
||||||
|
* @param out buffer for decoded data
|
||||||
|
* @param in null-terminated input string
|
||||||
|
* @param out_size size in bytes of the out buffer, must be at
|
||||||
|
* least 3/4 of the length of in, that is AV_BASE64_DECODE_SIZE(strlen(in))
|
||||||
|
* @return number of bytes written, or a negative value in case of
|
||||||
|
* invalid input
|
||||||
|
*/
|
||||||
|
int av_base64_decode(uint8_t *out, const char *in, int out_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the output size in bytes needed to decode a base64 string
|
||||||
|
* with length x to a data buffer.
|
||||||
|
*/
|
||||||
|
#define AV_BASE64_DECODE_SIZE(x) ((x) * 3LL / 4)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode data to base64 and null-terminate.
|
||||||
|
*
|
||||||
|
* @param out buffer for encoded data
|
||||||
|
* @param out_size size in bytes of the out buffer (including the
|
||||||
|
* null terminator), must be at least AV_BASE64_SIZE(in_size)
|
||||||
|
* @param in input buffer containing the data to encode
|
||||||
|
* @param in_size size in bytes of the in buffer
|
||||||
|
* @return out or NULL in case of error
|
||||||
|
*/
|
||||||
|
char *av_base64_encode(char *out, int out_size, const uint8_t *in, int in_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate the output size needed to base64-encode x bytes to a
|
||||||
|
* null-terminated string.
|
||||||
|
*/
|
||||||
|
#define AV_BASE64_SIZE(x) (((x)+2) / 3 * 4 + 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BASE64_H */
|
||||||
82
project/ffmpeg_dll_compact_348/include/libavutil/blowfish.h
Normal file
82
project/ffmpeg_dll_compact_348/include/libavutil/blowfish.h
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* Blowfish algorithm
|
||||||
|
* Copyright (c) 2012 Samuel Pitoiset
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BLOWFISH_H
|
||||||
|
#define AVUTIL_BLOWFISH_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup lavu_blowfish Blowfish
|
||||||
|
* @ingroup lavu_crypto
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define AV_BF_ROUNDS 16
|
||||||
|
|
||||||
|
typedef struct AVBlowfish {
|
||||||
|
uint32_t p[AV_BF_ROUNDS + 2];
|
||||||
|
uint32_t s[4][256];
|
||||||
|
} AVBlowfish;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate an AVBlowfish context.
|
||||||
|
*/
|
||||||
|
AVBlowfish *av_blowfish_alloc(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize an AVBlowfish context.
|
||||||
|
*
|
||||||
|
* @param ctx an AVBlowfish context
|
||||||
|
* @param key a key
|
||||||
|
* @param key_len length of the key
|
||||||
|
*/
|
||||||
|
void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||||
|
*
|
||||||
|
* @param ctx an AVBlowfish context
|
||||||
|
* @param xl left four bytes halves of input to be encrypted
|
||||||
|
* @param xr right four bytes halves of input to be encrypted
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr,
|
||||||
|
int decrypt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encrypt or decrypt a buffer using a previously initialized context.
|
||||||
|
*
|
||||||
|
* @param ctx an AVBlowfish context
|
||||||
|
* @param dst destination array, can be equal to src
|
||||||
|
* @param src source array, can be equal to dst
|
||||||
|
* @param count number of 8 byte blocks
|
||||||
|
* @param iv initialization vector for CBC mode, if NULL ECB will be used
|
||||||
|
* @param decrypt 0 for encryption, 1 for decryption
|
||||||
|
*/
|
||||||
|
void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src,
|
||||||
|
int count, uint8_t *iv, int decrypt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BLOWFISH_H */
|
||||||
219
project/ffmpeg_dll_compact_348/include/libavutil/bprint.h
Normal file
219
project/ffmpeg_dll_compact_348/include/libavutil/bprint.h
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 Nicolas George
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BPRINT_H
|
||||||
|
#define AVUTIL_BPRINT_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "attributes.h"
|
||||||
|
#include "avstring.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define a structure with extra padding to a fixed size
|
||||||
|
* This helps ensuring binary compatibility with future versions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FF_PAD_STRUCTURE(name, size, ...) \
|
||||||
|
struct ff_pad_helper_##name { __VA_ARGS__ }; \
|
||||||
|
typedef struct name { \
|
||||||
|
__VA_ARGS__ \
|
||||||
|
char reserved_padding[size - sizeof(struct ff_pad_helper_##name)]; \
|
||||||
|
} name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Buffer to print data progressively
|
||||||
|
*
|
||||||
|
* The string buffer grows as necessary and is always 0-terminated.
|
||||||
|
* The content of the string is never accessed, and thus is
|
||||||
|
* encoding-agnostic and can even hold binary data.
|
||||||
|
*
|
||||||
|
* Small buffers are kept in the structure itself, and thus require no
|
||||||
|
* memory allocation at all (unless the contents of the buffer is needed
|
||||||
|
* after the structure goes out of scope). This is almost as lightweight as
|
||||||
|
* declaring a local "char buf[512]".
|
||||||
|
*
|
||||||
|
* The length of the string can go beyond the allocated size: the buffer is
|
||||||
|
* then truncated, but the functions still keep account of the actual total
|
||||||
|
* length.
|
||||||
|
*
|
||||||
|
* In other words, buf->len can be greater than buf->size and records the
|
||||||
|
* total length of what would have been to the buffer if there had been
|
||||||
|
* enough memory.
|
||||||
|
*
|
||||||
|
* Append operations do not need to be tested for failure: if a memory
|
||||||
|
* allocation fails, data stop being appended to the buffer, but the length
|
||||||
|
* is still updated. This situation can be tested with
|
||||||
|
* av_bprint_is_complete().
|
||||||
|
*
|
||||||
|
* The size_max field determines several possible behaviours:
|
||||||
|
*
|
||||||
|
* size_max = -1 (= UINT_MAX) or any large value will let the buffer be
|
||||||
|
* reallocated as necessary, with an amortized linear cost.
|
||||||
|
*
|
||||||
|
* size_max = 0 prevents writing anything to the buffer: only the total
|
||||||
|
* length is computed. The write operations can then possibly be repeated in
|
||||||
|
* a buffer with exactly the necessary size
|
||||||
|
* (using size_init = size_max = len + 1).
|
||||||
|
*
|
||||||
|
* size_max = 1 is automatically replaced by the exact size available in the
|
||||||
|
* structure itself, thus ensuring no dynamic memory allocation. The
|
||||||
|
* internal buffer is large enough to hold a reasonable paragraph of text,
|
||||||
|
* such as the current paragraph.
|
||||||
|
*/
|
||||||
|
|
||||||
|
FF_PAD_STRUCTURE(AVBPrint, 1024,
|
||||||
|
char *str; /**< string so far */
|
||||||
|
unsigned len; /**< length so far */
|
||||||
|
unsigned size; /**< allocated memory */
|
||||||
|
unsigned size_max; /**< maximum allocated memory */
|
||||||
|
char reserved_internal_buffer[1];
|
||||||
|
)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience macros for special values for av_bprint_init() size_max
|
||||||
|
* parameter.
|
||||||
|
*/
|
||||||
|
#define AV_BPRINT_SIZE_UNLIMITED ((unsigned)-1)
|
||||||
|
#define AV_BPRINT_SIZE_AUTOMATIC 1
|
||||||
|
#define AV_BPRINT_SIZE_COUNT_ONLY 0
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init a print buffer.
|
||||||
|
*
|
||||||
|
* @param buf buffer to init
|
||||||
|
* @param size_init initial size (including the final 0)
|
||||||
|
* @param size_max maximum size;
|
||||||
|
* 0 means do not write anything, just count the length;
|
||||||
|
* 1 is replaced by the maximum value for automatic storage;
|
||||||
|
* any large value means that the internal buffer will be
|
||||||
|
* reallocated as needed up to that limit; -1 is converted to
|
||||||
|
* UINT_MAX, the largest limit possible.
|
||||||
|
* Check also AV_BPRINT_SIZE_* macros.
|
||||||
|
*/
|
||||||
|
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init a print buffer using a pre-existing buffer.
|
||||||
|
*
|
||||||
|
* The buffer will not be reallocated.
|
||||||
|
*
|
||||||
|
* @param buf buffer structure to init
|
||||||
|
* @param buffer byte buffer to use for the string data
|
||||||
|
* @param size size of buffer
|
||||||
|
*/
|
||||||
|
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append a formatted string to a print buffer.
|
||||||
|
*/
|
||||||
|
void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append a formatted string to a print buffer.
|
||||||
|
*/
|
||||||
|
void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append char c n times to a print buffer.
|
||||||
|
*/
|
||||||
|
void av_bprint_chars(AVBPrint *buf, char c, unsigned n);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Append data to a print buffer.
|
||||||
|
*
|
||||||
|
* param buf bprint buffer to use
|
||||||
|
* param data pointer to data
|
||||||
|
* param size size of data
|
||||||
|
*/
|
||||||
|
void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size);
|
||||||
|
|
||||||
|
struct tm;
|
||||||
|
/**
|
||||||
|
* Append a formatted date and time to a print buffer.
|
||||||
|
*
|
||||||
|
* param buf bprint buffer to use
|
||||||
|
* param fmt date and time format string, see strftime()
|
||||||
|
* param tm broken-down time structure to translate
|
||||||
|
*
|
||||||
|
* @note due to poor design of the standard strftime function, it may
|
||||||
|
* produce poor results if the format string expands to a very long text and
|
||||||
|
* the bprint buffer is near the limit stated by the size_max option.
|
||||||
|
*/
|
||||||
|
void av_bprint_strftime(AVBPrint *buf, const char *fmt, const struct tm *tm);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocate bytes in the buffer for external use.
|
||||||
|
*
|
||||||
|
* @param[in] buf buffer structure
|
||||||
|
* @param[in] size required size
|
||||||
|
* @param[out] mem pointer to the memory area
|
||||||
|
* @param[out] actual_size size of the memory area after allocation;
|
||||||
|
* can be larger or smaller than size
|
||||||
|
*/
|
||||||
|
void av_bprint_get_buffer(AVBPrint *buf, unsigned size,
|
||||||
|
unsigned char **mem, unsigned *actual_size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset the string to "" but keep internal allocated data.
|
||||||
|
*/
|
||||||
|
void av_bprint_clear(AVBPrint *buf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if the print buffer is complete (not truncated).
|
||||||
|
*
|
||||||
|
* It may have been truncated due to a memory allocation failure
|
||||||
|
* or the size_max limit (compare size and size_max if necessary).
|
||||||
|
*/
|
||||||
|
static inline int av_bprint_is_complete(const AVBPrint *buf)
|
||||||
|
{
|
||||||
|
return buf->len < buf->size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finalize a print buffer.
|
||||||
|
*
|
||||||
|
* The print buffer can no longer be used afterwards,
|
||||||
|
* but the len and size fields are still valid.
|
||||||
|
*
|
||||||
|
* @arg[out] ret_str if not NULL, used to return a permanent copy of the
|
||||||
|
* buffer contents, or NULL if memory allocation fails;
|
||||||
|
* if NULL, the buffer is discarded and freed
|
||||||
|
* @return 0 for success or error code (probably AVERROR(ENOMEM))
|
||||||
|
*/
|
||||||
|
int av_bprint_finalize(AVBPrint *buf, char **ret_str);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Escape the content in src and append it to dstbuf.
|
||||||
|
*
|
||||||
|
* @param dstbuf already inited destination bprint buffer
|
||||||
|
* @param src string containing the text to escape
|
||||||
|
* @param special_chars string containing the special characters which
|
||||||
|
* need to be escaped, can be NULL
|
||||||
|
* @param mode escape mode to employ, see AV_ESCAPE_MODE_* macros.
|
||||||
|
* Any unknown value for mode will be considered equivalent to
|
||||||
|
* AV_ESCAPE_MODE_BACKSLASH, but this behaviour can change without
|
||||||
|
* notice.
|
||||||
|
* @param flags flags which control how to escape, see AV_ESCAPE_FLAG_* macros
|
||||||
|
*/
|
||||||
|
void av_bprint_escape(AVBPrint *dstbuf, const char *src, const char *special_chars,
|
||||||
|
enum AVEscapeMode mode, int flags);
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BPRINT_H */
|
||||||
109
project/ffmpeg_dll_compact_348/include/libavutil/bswap.h
Normal file
109
project/ffmpeg_dll_compact_348/include/libavutil/bswap.h
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
* copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This file is part of FFmpeg.
|
||||||
|
*
|
||||||
|
* FFmpeg is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* FFmpeg is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* byte swapping routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef AVUTIL_BSWAP_H
|
||||||
|
#define AVUTIL_BSWAP_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "libavutil/avconfig.h"
|
||||||
|
#include "attributes.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_AV_CONFIG_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#if ARCH_AARCH64
|
||||||
|
# include "aarch64/bswap.h"
|
||||||
|
#elif ARCH_ARM
|
||||||
|
# include "arm/bswap.h"
|
||||||
|
#elif ARCH_AVR32
|
||||||
|
# include "avr32/bswap.h"
|
||||||
|
#elif ARCH_SH4
|
||||||
|
# include "sh4/bswap.h"
|
||||||
|
#elif ARCH_X86
|
||||||
|
# include "x86/bswap.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* HAVE_AV_CONFIG_H */
|
||||||
|
|
||||||
|
#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff))
|
||||||
|
#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16))
|
||||||
|
#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32))
|
||||||
|
|
||||||
|
#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x)
|
||||||
|
|
||||||
|
#ifndef av_bswap16
|
||||||
|
static av_always_inline av_const uint16_t av_bswap16(uint16_t x)
|
||||||
|
{
|
||||||
|
x= (x>>8) | (x<<8);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_bswap32
|
||||||
|
static av_always_inline av_const uint32_t av_bswap32(uint32_t x)
|
||||||
|
{
|
||||||
|
return AV_BSWAP32C(x);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef av_bswap64
|
||||||
|
static inline uint64_t av_const av_bswap64(uint64_t x)
|
||||||
|
{
|
||||||
|
return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// be2ne ... big-endian to native-endian
|
||||||
|
// le2ne ... little-endian to native-endian
|
||||||
|
|
||||||
|
#if AV_HAVE_BIGENDIAN
|
||||||
|
#define av_be2ne16(x) (x)
|
||||||
|
#define av_be2ne32(x) (x)
|
||||||
|
#define av_be2ne64(x) (x)
|
||||||
|
#define av_le2ne16(x) av_bswap16(x)
|
||||||
|
#define av_le2ne32(x) av_bswap32(x)
|
||||||
|
#define av_le2ne64(x) av_bswap64(x)
|
||||||
|
#define AV_BE2NEC(s, x) (x)
|
||||||
|
#define AV_LE2NEC(s, x) AV_BSWAPC(s, x)
|
||||||
|
#else
|
||||||
|
#define av_be2ne16(x) av_bswap16(x)
|
||||||
|
#define av_be2ne32(x) av_bswap32(x)
|
||||||
|
#define av_be2ne64(x) av_bswap64(x)
|
||||||
|
#define av_le2ne16(x) (x)
|
||||||
|
#define av_le2ne32(x) (x)
|
||||||
|
#define av_le2ne64(x) (x)
|
||||||
|
#define AV_BE2NEC(s, x) AV_BSWAPC(s, x)
|
||||||
|
#define AV_LE2NEC(s, x) (x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define AV_BE2NE16C(x) AV_BE2NEC(16, x)
|
||||||
|
#define AV_BE2NE32C(x) AV_BE2NEC(32, x)
|
||||||
|
#define AV_BE2NE64C(x) AV_BE2NEC(64, x)
|
||||||
|
#define AV_LE2NE16C(x) AV_LE2NEC(16, x)
|
||||||
|
#define AV_LE2NE32C(x) AV_LE2NEC(32, x)
|
||||||
|
#define AV_LE2NE64C(x) AV_LE2NEC(64, x)
|
||||||
|
|
||||||
|
#endif /* AVUTIL_BSWAP_H */
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user