mirror of
https://github.com/RPCS3/ffmpeg-core.git
synced 2025-04-14 04:20:26 +00: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>
116 lines
3.4 KiB
C
Executable File
116 lines
3.4 KiB
C
Executable File
/*
|
|
* Copyright (C) 2013 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
|
|
*
|
|
* 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_murmur3
|
|
* Public header for MurmurHash3 hash function implementation.
|
|
*/
|
|
|
|
#ifndef AVUTIL_MURMUR3_H
|
|
#define AVUTIL_MURMUR3_H
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
/**
|
|
* @defgroup lavu_murmur3 Murmur3
|
|
* @ingroup lavu_hash
|
|
* MurmurHash3 hash function implementation.
|
|
*
|
|
* MurmurHash3 is a non-cryptographic hash function, of which three
|
|
* incompatible versions were created by its inventor Austin Appleby:
|
|
*
|
|
* - 32-bit output
|
|
* - 128-bit output for 32-bit platforms
|
|
* - 128-bit output for 64-bit platforms
|
|
*
|
|
* FFmpeg only implements the last variant: 128-bit output designed for 64-bit
|
|
* platforms. Even though the hash function was designed for 64-bit platforms,
|
|
* the function in reality works on 32-bit systems too, only with reduced
|
|
* performance.
|
|
*
|
|
* @anchor lavu_murmur3_seedinfo
|
|
* By design, MurmurHash3 requires a seed to operate. In response to this,
|
|
* libavutil provides two functions for hash initiation, one that requires a
|
|
* seed (av_murmur3_init_seeded()) and one that uses a fixed arbitrary integer
|
|
* as the seed, and therefore does not (av_murmur3_init()).
|
|
*
|
|
* To make hashes comparable, you should provide the same seed for all calls to
|
|
* this hash function -- if you are supplying one yourself, that is.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* Allocate an AVMurMur3 hash context.
|
|
*
|
|
* @return Uninitialized hash context or `NULL` in case of error
|
|
*/
|
|
struct AVMurMur3 *av_murmur3_alloc(void);
|
|
|
|
/**
|
|
* Initialize or reinitialize an AVMurMur3 hash context with a seed.
|
|
*
|
|
* @param[out] c Hash context
|
|
* @param[in] seed Random seed
|
|
*
|
|
* @see av_murmur3_init()
|
|
* @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of
|
|
* seeds for MurmurHash3.
|
|
*/
|
|
void av_murmur3_init_seeded(struct AVMurMur3 *c, uint64_t seed);
|
|
|
|
/**
|
|
* Initialize or reinitialize an AVMurMur3 hash context.
|
|
*
|
|
* Equivalent to av_murmur3_init_seeded() with a built-in seed.
|
|
*
|
|
* @param[out] c Hash context
|
|
*
|
|
* @see av_murmur3_init_seeded()
|
|
* @see @ref lavu_murmur3_seedinfo "Detailed description" on a discussion of
|
|
* seeds for MurmurHash3.
|
|
*/
|
|
void av_murmur3_init(struct AVMurMur3 *c);
|
|
|
|
/**
|
|
* Update hash context with new data.
|
|
*
|
|
* @param[out] c Hash context
|
|
* @param[in] src Input data to update hash with
|
|
* @param[in] len Number of bytes to read from `src`
|
|
*/
|
|
void av_murmur3_update(struct AVMurMur3 *c, const uint8_t *src, size_t len);
|
|
|
|
/**
|
|
* Finish hashing and output digest value.
|
|
*
|
|
* @param[in,out] c Hash context
|
|
* @param[out] dst Buffer where output digest value is stored
|
|
*/
|
|
void av_murmur3_final(struct AVMurMur3 *c, uint8_t dst[16]);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#endif /* AVUTIL_MURMUR3_H */
|