/*!
|
* COPYRIGHT (C) 2010-2020 Emeric Grange - All Rights Reserved
|
*
|
* This file is part of MiniVideo.
|
*
|
* MiniVideo is free software: you can redistribute it and/or modify
|
* it under the terms of the GNU Lesser General Public License as published by
|
* the Free Software Foundation, either version 3 of the License, or
|
* (at your option) any later version.
|
*
|
* MiniVideo 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 MiniVideo. If not, see <http://www.gnu.org/licenses/>.
|
*
|
* \author Emeric Grange <emeric.grange@gmail.com>
|
* \date 2016
|
*/
|
|
#ifndef MINIVIDEO_H
|
#define MINIVIDEO_H
|
/* ************************************************************************** */
|
|
struct MediaFile_t;
|
|
/*!
|
* \brief Error codes returned to clients.
|
*/
|
typedef enum MiniVideoErrorCodes_e
|
{
|
ERROR_UNKNOWN = 1,
|
|
ERROR_CONTAINER_UNKNOWN = 10,
|
ERROR_CONTAINER_FAILURE = 11,
|
|
ERROR_CODEC_UNKNOWN = 20,
|
ERROR_CODEC_FAILURE = 21
|
|
} MiniVideoErrorCodes_e;
|
|
/* ************************************************************************** */
|
|
/*!
|
* \brief Print informations about the library (version, date of the build, ...) into standard output.
|
*/
|
void minivideo_print_infos(void);
|
|
/*!
|
* \brief Print informations about the library (enabled features, traces levels, ...) into standard output.
|
*/
|
void minivideo_print_features(void);
|
|
/*!
|
* \brief Get informations about the library (version and build date/time).
|
*
|
* The date and time strings are static data and do not need to be freed.
|
*/
|
void minivideo_get_infos(int *minivideo_major,
|
int *minivideo_minor,
|
int *minivideo_patch,
|
const char **minivideo_builddate,
|
const char **minivideo_buildtime,
|
bool *minivideo_builddebug);
|
|
/*!
|
* \brief Print endianness of the current system.
|
* \return 4321 for big endian, 1234 for little endian, -1 if unable to determine endianness.
|
*
|
* To determine endianness, we use a character pointer to the bytes of an int,
|
* and then check its first byte to see if it is 0 (meaning big endianness)
|
* or 1 (meaning little endianness).
|
*/
|
int minivideo_endianness(void);
|
|
/* ************************************************************************** */
|
|
/*!
|
* \brief Open a file and return a MediaFile_t context.
|
* \param[in] *input_filepath: The file path of the video we want to open.
|
* \param[in,out] **input_media: The MediaFile_t context to create.
|
* \return TODO ERROR CODE (1 if file opening is a success, 0 otherwise).
|
*
|
* The first step in the decoding process is to open the file with the given fileptath.
|
* If the file is successfully opened, the program start gathering informations about
|
* the file, print them if in debug mode.
|
*/
|
int minivideo_open(const char *input_filepath,
|
MediaFile_t **input_media);
|
|
/*!
|
* \brief Close a video file.
|
* \param input_media[in,out]: The MediaFile_t context to destroy.
|
* \return 1 if success, 0 otherwise.
|
*/
|
int minivideo_close(MediaFile_t **input_media);
|
|
|
#endif // MINIVIDEO_H
|