mirror of
https://github.com/shadps4-emu/ext-ffmpeg-core.git
synced 2026-01-31 00:55:17 +01:00
Contains the following squashed commits from the old branch: Initial commit Fix link order Add option to link against system ffmpeg, disable precompiled binaries for mingw Update macOS files for XCode 12 Update ffmpeg to 5.1.2 Add mjpeg encoder (#7) Add mjpeg2jpeg bitstream filter Add macOS-arm64 builds Add macOS arm64 to CMakeLists Add arm64-osx-release to build.yml dummy commit to trigger workflow Properly split macOS builds in build.yml Try to fix actions uploads Rename the builds Fix build.yml Fix typo in build.yml Amend CMakeLists using the correct check ci: change upload path to directly upload libraries ci: build and use universal binary on macOS ci: set macOS deployment target to macOS 11.0 ci: build FFMPEG prebuilt for each OS/architecture Add linux arm64 prebuilt. Add both x86_64 and arm64 prebuilts for macOS. ci: create release for pre-built FFMPEG cmake: download and use only necessary prebuilt FFMPEG Add arm64 windows prebuilt Co-authored-by: Seungyun Lee <khora.lee.0@gmail.com> Co-authored-by: shinra-electric <50119606+shinra-electric@users.noreply.github.com> Co-authored-by: SaturnSky <ikadro@gmail.com>
171 lines
5.2 KiB
C
171 lines
5.2 KiB
C
/*
|
|
*
|
|
* 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_DEFS_H
|
|
#define AVCODEC_DEFS_H
|
|
|
|
/**
|
|
* @file
|
|
* @ingroup libavc
|
|
* Misc types and constants that do not belong anywhere else.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
/**
|
|
* @ingroup lavc_decoding
|
|
* Required number of additionally allocated bytes at the end of the input bitstream for decoding.
|
|
* This is mainly needed because some optimized bitstream readers read
|
|
* 32 or 64 bit at once and could read over the end.<br>
|
|
* Note: If the first 23 bits of the additional bytes are not 0, then damaged
|
|
* MPEG bitstreams could cause overread and segfault.
|
|
*/
|
|
#define AV_INPUT_BUFFER_PADDING_SIZE 64
|
|
|
|
/**
|
|
* @ingroup lavc_decoding
|
|
*/
|
|
enum AVDiscard{
|
|
/* We leave some space between them for extensions (drop some
|
|
* keyframes for intra-only or drop just some bidir frames). */
|
|
AVDISCARD_NONE =-16, ///< discard nothing
|
|
AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
|
|
AVDISCARD_NONREF = 8, ///< discard all non reference
|
|
AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
|
|
AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
|
|
AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
|
|
AVDISCARD_ALL = 48, ///< discard all
|
|
};
|
|
|
|
enum AVAudioServiceType {
|
|
AV_AUDIO_SERVICE_TYPE_MAIN = 0,
|
|
AV_AUDIO_SERVICE_TYPE_EFFECTS = 1,
|
|
AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
|
|
AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3,
|
|
AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4,
|
|
AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5,
|
|
AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6,
|
|
AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7,
|
|
AV_AUDIO_SERVICE_TYPE_KARAOKE = 8,
|
|
AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
|
|
};
|
|
|
|
/**
|
|
* Pan Scan area.
|
|
* This specifies the area which should be displayed.
|
|
* Note there may be multiple such areas for one frame.
|
|
*/
|
|
typedef struct AVPanScan {
|
|
/**
|
|
* id
|
|
* - encoding: Set by user.
|
|
* - decoding: Set by libavcodec.
|
|
*/
|
|
int id;
|
|
|
|
/**
|
|
* width and height in 1/16 pel
|
|
* - encoding: Set by user.
|
|
* - decoding: Set by libavcodec.
|
|
*/
|
|
int width;
|
|
int height;
|
|
|
|
/**
|
|
* position of the top left corner in 1/16 pel for up to 3 fields/frames
|
|
* - encoding: Set by user.
|
|
* - decoding: Set by libavcodec.
|
|
*/
|
|
int16_t position[3][2];
|
|
} AVPanScan;
|
|
|
|
/**
|
|
* This structure describes the bitrate properties of an encoded bitstream. It
|
|
* roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
|
|
* parameters for H.264/HEVC.
|
|
*/
|
|
typedef struct AVCPBProperties {
|
|
/**
|
|
* Maximum bitrate of the stream, in bits per second.
|
|
* Zero if unknown or unspecified.
|
|
*/
|
|
int64_t max_bitrate;
|
|
/**
|
|
* Minimum bitrate of the stream, in bits per second.
|
|
* Zero if unknown or unspecified.
|
|
*/
|
|
int64_t min_bitrate;
|
|
/**
|
|
* Average bitrate of the stream, in bits per second.
|
|
* Zero if unknown or unspecified.
|
|
*/
|
|
int64_t avg_bitrate;
|
|
|
|
/**
|
|
* The size of the buffer to which the ratecontrol is applied, in bits.
|
|
* Zero if unknown or unspecified.
|
|
*/
|
|
int64_t buffer_size;
|
|
|
|
/**
|
|
* The delay between the time the packet this structure is associated with
|
|
* is received and the time when it should be decoded, in periods of a 27MHz
|
|
* clock.
|
|
*
|
|
* UINT64_MAX when unknown or unspecified.
|
|
*/
|
|
uint64_t vbv_delay;
|
|
} AVCPBProperties;
|
|
|
|
/**
|
|
* Allocate a CPB properties structure and initialize its fields to default
|
|
* values.
|
|
*
|
|
* @param size if non-NULL, the size of the allocated struct will be written
|
|
* here. This is useful for embedding it in side data.
|
|
*
|
|
* @return the newly allocated struct or NULL on failure
|
|
*/
|
|
AVCPBProperties *av_cpb_properties_alloc(size_t *size);
|
|
|
|
/**
|
|
* This structure supplies correlation between a packet timestamp and a wall clock
|
|
* production time. The definition follows the Producer Reference Time ('prft')
|
|
* as defined in ISO/IEC 14496-12
|
|
*/
|
|
typedef struct AVProducerReferenceTime {
|
|
/**
|
|
* A UTC timestamp, in microseconds, since Unix epoch (e.g, av_gettime()).
|
|
*/
|
|
int64_t wallclock;
|
|
int flags;
|
|
} AVProducerReferenceTime;
|
|
|
|
/**
|
|
* Encode extradata length to a buffer. Used by xiph codecs.
|
|
*
|
|
* @param s buffer to write to; must be at least (v/255+1) bytes long
|
|
* @param v size of extradata in bytes
|
|
* @return number of bytes written to the buffer.
|
|
*/
|
|
unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
|
|
|
|
#endif // AVCODEC_DEFS_H
|