mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-23 18:14:06 +00:00
Initial commit with working config functions
This commit is contained in:
commit
adce16c03f
0
bin/placeholder.txt
Normal file
0
bin/placeholder.txt
Normal file
0
build/placeholder.txt
Normal file
0
build/placeholder.txt
Normal file
9
doc/syntax_elements.txt
Normal file
9
doc/syntax_elements.txt
Normal file
|
@ -0,0 +1,9 @@
|
|||
The following descriptors specify the parsing process of each syntax element.
|
||||
– ae(v): context-adaptive arithmetic entropy-coded syntax element. The parsing process for this descriptor is specified in subclause 9.2.
|
||||
– b(8): byte having any pattern of bit string (8 bits). The parsing process for this descriptor is specified by the return value of the function read_bits( 8 ).
|
||||
– f(n): fixed-pattern bit string using n bits written (from left to right) with the left bit first. The parsing process for this descriptor is specified by the return value of the function read_bits( n ).
|
||||
– i(n): signed integer using n bits. When n is "v" in the syntax table, the number of bits varies in a manner dependent on the value of other syntax elements. The parsing process for this descriptor is specified by the return value of the function read_bits( n ) interpreted as a two's complement integer representation with most significant bit written first.
|
||||
– se(v): signed integer Exp-Golomb-coded syntax element with the left bit first. The parsing process for this descriptor is specified in subclause 9.1.
|
||||
– tu(v): truncated unary coded syntax element with left bit first. The parsing process for this descriptor is specified in subclause 9.1.
|
||||
– u(n): unsigned integer using n bits. When n is "v" in the syntax table, the number of bits varies in a manner dependent on the value of other syntax elements. The parsing process for this descriptor is specified by the return value of the function read_bits( n ) interpreted as a binary representation of an unsigned integer with most significant bit written first.
|
||||
– ue(v): unsigned integer Exp-Golomb-coded syntax element with the left bit first. The parsing process for this descriptor is specified in subclause 9.1.
|
247
include/stdint.h
Normal file
247
include/stdint.h
Normal file
|
@ -0,0 +1,247 @@
|
|||
// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
||||
//
|
||||
// Copyright (c) 2006-2008 Alexander Chemeris
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// 2. Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// 3. The name of the author may be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _MSC_VER // [
|
||||
#error "Use this header only with Microsoft Visual C++ compilers!"
|
||||
#endif // _MSC_VER ]
|
||||
|
||||
#ifndef _MSC_STDINT_H_ // [
|
||||
#define _MSC_STDINT_H_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
|
||||
// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
|
||||
// or compiler give many errors like this:
|
||||
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
# include <wchar.h>
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
// Define _W64 macros to mark types changing their size, like intptr_t.
|
||||
#ifndef _W64
|
||||
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
|
||||
# define _W64 __w64
|
||||
# else
|
||||
# define _W64
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
// 7.18.1 Integer types
|
||||
|
||||
// 7.18.1.1 Exact-width integer types
|
||||
|
||||
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
|
||||
// realize that, e.g. char has the same size as __int8
|
||||
// so we give up on __intX for them.
|
||||
#if (_MSC_VER < 1300)
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed int int32_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
#else
|
||||
typedef signed __int8 int8_t;
|
||||
typedef signed __int16 int16_t;
|
||||
typedef signed __int32 int32_t;
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef unsigned __int16 uint16_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
#endif
|
||||
typedef signed __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
|
||||
|
||||
// 7.18.1.2 Minimum-width integer types
|
||||
typedef int8_t int_least8_t;
|
||||
typedef int16_t int_least16_t;
|
||||
typedef int32_t int_least32_t;
|
||||
typedef int64_t int_least64_t;
|
||||
typedef uint8_t uint_least8_t;
|
||||
typedef uint16_t uint_least16_t;
|
||||
typedef uint32_t uint_least32_t;
|
||||
typedef uint64_t uint_least64_t;
|
||||
|
||||
// 7.18.1.3 Fastest minimum-width integer types
|
||||
typedef int8_t int_fast8_t;
|
||||
typedef int16_t int_fast16_t;
|
||||
typedef int32_t int_fast32_t;
|
||||
typedef int64_t int_fast64_t;
|
||||
typedef uint8_t uint_fast8_t;
|
||||
typedef uint16_t uint_fast16_t;
|
||||
typedef uint32_t uint_fast32_t;
|
||||
typedef uint64_t uint_fast64_t;
|
||||
|
||||
// 7.18.1.4 Integer types capable of holding object pointers
|
||||
#ifdef _WIN64 // [
|
||||
typedef signed __int64 intptr_t;
|
||||
typedef unsigned __int64 uintptr_t;
|
||||
#else // _WIN64 ][
|
||||
typedef _W64 signed int intptr_t;
|
||||
typedef _W64 unsigned int uintptr_t;
|
||||
#endif // _WIN64 ]
|
||||
|
||||
// 7.18.1.5 Greatest-width integer types
|
||||
typedef int64_t intmax_t;
|
||||
typedef uint64_t uintmax_t;
|
||||
|
||||
|
||||
// 7.18.2 Limits of specified-width integer types
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
|
||||
|
||||
// 7.18.2.1 Limits of exact-width integer types
|
||||
#define INT8_MIN ((int8_t)_I8_MIN)
|
||||
#define INT8_MAX _I8_MAX
|
||||
#define INT16_MIN ((int16_t)_I16_MIN)
|
||||
#define INT16_MAX _I16_MAX
|
||||
#define INT32_MIN ((int32_t)_I32_MIN)
|
||||
#define INT32_MAX _I32_MAX
|
||||
#define INT64_MIN ((int64_t)_I64_MIN)
|
||||
#define INT64_MAX _I64_MAX
|
||||
#define UINT8_MAX _UI8_MAX
|
||||
#define UINT16_MAX _UI16_MAX
|
||||
#define UINT32_MAX _UI32_MAX
|
||||
#define UINT64_MAX _UI64_MAX
|
||||
|
||||
// 7.18.2.2 Limits of minimum-width integer types
|
||||
#define INT_LEAST8_MIN INT8_MIN
|
||||
#define INT_LEAST8_MAX INT8_MAX
|
||||
#define INT_LEAST16_MIN INT16_MIN
|
||||
#define INT_LEAST16_MAX INT16_MAX
|
||||
#define INT_LEAST32_MIN INT32_MIN
|
||||
#define INT_LEAST32_MAX INT32_MAX
|
||||
#define INT_LEAST64_MIN INT64_MIN
|
||||
#define INT_LEAST64_MAX INT64_MAX
|
||||
#define UINT_LEAST8_MAX UINT8_MAX
|
||||
#define UINT_LEAST16_MAX UINT16_MAX
|
||||
#define UINT_LEAST32_MAX UINT32_MAX
|
||||
#define UINT_LEAST64_MAX UINT64_MAX
|
||||
|
||||
// 7.18.2.3 Limits of fastest minimum-width integer types
|
||||
#define INT_FAST8_MIN INT8_MIN
|
||||
#define INT_FAST8_MAX INT8_MAX
|
||||
#define INT_FAST16_MIN INT16_MIN
|
||||
#define INT_FAST16_MAX INT16_MAX
|
||||
#define INT_FAST32_MIN INT32_MIN
|
||||
#define INT_FAST32_MAX INT32_MAX
|
||||
#define INT_FAST64_MIN INT64_MIN
|
||||
#define INT_FAST64_MAX INT64_MAX
|
||||
#define UINT_FAST8_MAX UINT8_MAX
|
||||
#define UINT_FAST16_MAX UINT16_MAX
|
||||
#define UINT_FAST32_MAX UINT32_MAX
|
||||
#define UINT_FAST64_MAX UINT64_MAX
|
||||
|
||||
// 7.18.2.4 Limits of integer types capable of holding object pointers
|
||||
#ifdef _WIN64 // [
|
||||
# define INTPTR_MIN INT64_MIN
|
||||
# define INTPTR_MAX INT64_MAX
|
||||
# define UINTPTR_MAX UINT64_MAX
|
||||
#else // _WIN64 ][
|
||||
# define INTPTR_MIN INT32_MIN
|
||||
# define INTPTR_MAX INT32_MAX
|
||||
# define UINTPTR_MAX UINT32_MAX
|
||||
#endif // _WIN64 ]
|
||||
|
||||
// 7.18.2.5 Limits of greatest-width integer types
|
||||
#define INTMAX_MIN INT64_MIN
|
||||
#define INTMAX_MAX INT64_MAX
|
||||
#define UINTMAX_MAX UINT64_MAX
|
||||
|
||||
// 7.18.3 Limits of other integer types
|
||||
|
||||
#ifdef _WIN64 // [
|
||||
# define PTRDIFF_MIN _I64_MIN
|
||||
# define PTRDIFF_MAX _I64_MAX
|
||||
#else // _WIN64 ][
|
||||
# define PTRDIFF_MIN _I32_MIN
|
||||
# define PTRDIFF_MAX _I32_MAX
|
||||
#endif // _WIN64 ]
|
||||
|
||||
#define SIG_ATOMIC_MIN INT_MIN
|
||||
#define SIG_ATOMIC_MAX INT_MAX
|
||||
|
||||
#ifndef SIZE_MAX // [
|
||||
# ifdef _WIN64 // [
|
||||
# define SIZE_MAX _UI64_MAX
|
||||
# else // _WIN64 ][
|
||||
# define SIZE_MAX _UI32_MAX
|
||||
# endif // _WIN64 ]
|
||||
#endif // SIZE_MAX ]
|
||||
|
||||
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
|
||||
#ifndef WCHAR_MIN // [
|
||||
# define WCHAR_MIN 0
|
||||
#endif // WCHAR_MIN ]
|
||||
#ifndef WCHAR_MAX // [
|
||||
# define WCHAR_MAX _UI16_MAX
|
||||
#endif // WCHAR_MAX ]
|
||||
|
||||
#define WINT_MIN 0
|
||||
#define WINT_MAX _UI16_MAX
|
||||
|
||||
#endif // __STDC_LIMIT_MACROS ]
|
||||
|
||||
|
||||
// 7.18.4 Limits of other integer types
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
|
||||
|
||||
// 7.18.4.1 Macros for minimum-width integer constants
|
||||
|
||||
#define INT8_C(val) val##i8
|
||||
#define INT16_C(val) val##i16
|
||||
#define INT32_C(val) val##i32
|
||||
#define INT64_C(val) val##i64
|
||||
|
||||
#define UINT8_C(val) val##ui8
|
||||
#define UINT16_C(val) val##ui16
|
||||
#define UINT32_C(val) val##ui32
|
||||
#define UINT64_C(val) val##ui64
|
||||
|
||||
// 7.18.4.2 Macros for greatest-width integer constants
|
||||
#define INTMAX_C INT64_C
|
||||
#define UINTMAX_C UINT64_C
|
||||
|
||||
#endif // __STDC_CONSTANT_MACROS ]
|
||||
|
||||
|
||||
#endif // _MSC_STDINT_H_ ]
|
138
src/config.c
Normal file
138
src/config.c
Normal file
|
@ -0,0 +1,138 @@
|
|||
/**
|
||||
* HEVC Encoder
|
||||
* - Marko Viitanen ( fador at iki.fi ), Tampere University of Technology, Department of Computer Systems.
|
||||
*/
|
||||
|
||||
/*! \file config.c
|
||||
\brief Configuration related functions
|
||||
\author Marko Viitanen
|
||||
\date 2012-05
|
||||
|
||||
This file has all configuration related functions
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "global.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
/*!
|
||||
\brief Allocate memory for config object
|
||||
\return pointer to allocated memory
|
||||
*/
|
||||
config* config_alloc()
|
||||
{
|
||||
config* cfg = (config *)malloc(sizeof(config));
|
||||
memset(cfg, 0, sizeof(config));
|
||||
return cfg;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Initialize config structure
|
||||
\param cfg config object
|
||||
\return 1 on success, 0 on failure
|
||||
*/
|
||||
int config_init(config* cfg)
|
||||
{
|
||||
cfg->input = NULL;
|
||||
cfg->output = NULL;
|
||||
cfg->debug = NULL;
|
||||
cfg->frames = 0;
|
||||
cfg->skip = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Free memory allocated to the config
|
||||
\param cfg config object
|
||||
\return 1 on success, 0 on failure
|
||||
*/
|
||||
int config_destroy(config* cfg)
|
||||
{
|
||||
if(cfg->input != NULL)
|
||||
{
|
||||
free(cfg->input);
|
||||
cfg->input = NULL;
|
||||
}
|
||||
|
||||
if(cfg->output != NULL)
|
||||
{
|
||||
free(cfg->output);
|
||||
cfg->output = NULL;
|
||||
}
|
||||
free(cfg);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*!
|
||||
\brief Read configuration options from argv to the config struct
|
||||
\param cfg config object
|
||||
\param argc argument count
|
||||
\param argv argument list
|
||||
\return 1 on success, 0 on failure
|
||||
*/
|
||||
int config_read(config* cfg,int argc, char* argv[])
|
||||
{
|
||||
uint32_t pos = 0;
|
||||
int arg = 1;
|
||||
char option = 0;
|
||||
|
||||
while(arg < argc && pos < strlen(argv[arg]))
|
||||
{
|
||||
/* Check for an option */
|
||||
if(argv[arg][0] == '-' && strlen(argv[arg]) > 1)
|
||||
{
|
||||
/* Second letter of the argument is the option we want to use */
|
||||
option = argv[arg][1];
|
||||
|
||||
/* Point to the next argument */
|
||||
arg++;
|
||||
switch(option)
|
||||
{
|
||||
case 'i': /* Input */
|
||||
/* Allocate +1 for \0 */
|
||||
cfg->input = malloc(strlen(argv[arg])+1);
|
||||
memcpy(cfg->input, argv[arg], strlen(argv[arg])+1);
|
||||
break;
|
||||
case 'o': /* Output */
|
||||
cfg->output = malloc(strlen(argv[arg])+1);
|
||||
memcpy(cfg->output, argv[arg], strlen(argv[arg])+1);
|
||||
break;
|
||||
case 'd': /* Debug */
|
||||
cfg->debug = malloc(strlen(argv[arg])+1);
|
||||
memcpy(cfg->debug, argv[arg], strlen(argv[arg])+1);
|
||||
break;
|
||||
case 'w': /* width */
|
||||
/* Get skipped frames count */
|
||||
cfg->width = atoi(argv[arg]);
|
||||
break;
|
||||
case 'h': /* height */
|
||||
/* Get skipped frames count */
|
||||
cfg->height = atoi(argv[arg]);
|
||||
break;
|
||||
case 'n': /* Framecount */
|
||||
/* Get frame count */
|
||||
cfg->frames = atoi(argv[arg]);
|
||||
break;
|
||||
default:
|
||||
/* Unknown command */
|
||||
fprintf(stderr, "%c is not a known option\r\n", option);
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* Next argument */
|
||||
arg++;
|
||||
}
|
||||
|
||||
/* Check that the required files were defined */
|
||||
if(cfg->input == NULL || cfg->output == NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
36
src/config.h
Normal file
36
src/config.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/**
|
||||
* HEVC Encoder
|
||||
* - Marko Viitanen ( fador at iki.fi ), Tampere University of Technology, Department of Computer Systems.
|
||||
*/
|
||||
|
||||
/*! \file config.h
|
||||
\brief Configuration header
|
||||
\author Marko Viitanen
|
||||
\date 2012-05
|
||||
|
||||
Contains all configuration system related functions and structs
|
||||
*/
|
||||
|
||||
#ifndef _CONFIG_H_
|
||||
#define _CONFIG_H_
|
||||
|
||||
/*!
|
||||
\brief Struct which contains all configuration data
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
char *input; /*!< \brief Pointer to input filename */
|
||||
char *output;/*!< \brief Pointer to output filename */
|
||||
char *debug; /*!< \brief Pointer to debug output */
|
||||
int frames; /*!< \brief Number of frames to decode */
|
||||
int width; /*!< \brief frame width */
|
||||
int height; /*!< \brief frame height */
|
||||
} config;
|
||||
|
||||
/* Function definitions */
|
||||
config* config_alloc();
|
||||
int config_init(config* cfg);
|
||||
int config_destroy(config* cfg);
|
||||
int config_read(config* cfg,int argc, char* argv[]);
|
||||
|
||||
#endif
|
105
src/encmain.c
Normal file
105
src/encmain.c
Normal file
|
@ -0,0 +1,105 @@
|
|||
/**
|
||||
* HEVC Encoder
|
||||
* - Marko Viitanen ( fador at iki.fi ), Tampere University of Technology, Department of Computer Systems.
|
||||
*/
|
||||
|
||||
/*! \file decmain.c
|
||||
\brief main file for the Decoder
|
||||
\author Marko Viitanen
|
||||
\date 2012-05
|
||||
|
||||
This file contains main() function
|
||||
*/
|
||||
|
||||
/*! \mainpage HEVC Encoder
|
||||
*
|
||||
* \section Coding style
|
||||
*
|
||||
* Coding style is explained in it's own document.
|
||||
*
|
||||
* \section usage_sec Usage
|
||||
*
|
||||
* \subsection encode_subsec Basic Decoding:
|
||||
* Use encmain.exe -i input.yuv -o output.hevc
|
||||
*
|
||||
* \subsection options_subsec All program options:
|
||||
* - -i <filename>: input
|
||||
* - -o <filename>: output
|
||||
* - -w <width>: frame width
|
||||
* - -h <height>: frame height
|
||||
* - -n <n>: encode only n frames
|
||||
*/
|
||||
|
||||
/* Suppress some windows warnings */
|
||||
#ifdef WIN32
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "global.h"
|
||||
|
||||
|
||||
|
||||
/*!
|
||||
\brief Program main function.
|
||||
\param argc Argument count from commandline
|
||||
\param argv Argument list
|
||||
\return Program exit state
|
||||
*/
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
|
||||
config *cfg = NULL; /* Global configuration */
|
||||
FILE *input = NULL;
|
||||
FILE *output = NULL;
|
||||
|
||||
/* Handle configuration */
|
||||
cfg = config_alloc();
|
||||
|
||||
/* If problem with configuration, shutdown */
|
||||
if(!config_init(cfg) || !config_read(cfg,argc,argv))
|
||||
{
|
||||
fprintf(stderr, "/////////////////////////////////////////////////\r\n");
|
||||
fprintf(stderr, "// HEVC Encoder v. " VERSION_STRING "//\r\n");
|
||||
fprintf(stderr, "// Tampere University of Technology 2012 //\r\n");
|
||||
fprintf(stderr, "/////////////////////////////////////////////////\r\n\r\n");
|
||||
|
||||
fprintf(stderr, "Usage:\r\n");
|
||||
fprintf(stderr, "encmain -i <input> -w <width> -h <height> -o <output>\r\n");
|
||||
fprintf(stderr, "Optional parameters:\r\n");
|
||||
fprintf(stderr, " -n <frames> : number of frames to decode\r\n");
|
||||
fprintf(stderr, " -s <frames> : number of frames to skip from the beginning\r\n");
|
||||
|
||||
config_destroy(cfg);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
printf("Input: %s, output: %s\r\n", cfg->input, cfg->output);
|
||||
|
||||
/* Open input file and check that it was opened correctly */
|
||||
input = fopen(cfg->input, "rb");
|
||||
if(input == NULL)
|
||||
{
|
||||
fprintf(stderr, "Couldn't open input file!\r\n");
|
||||
config_destroy(cfg);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Open output file and check that it was opened correctly */
|
||||
output = fopen(cfg->output, "wb");
|
||||
if(output == NULL)
|
||||
{
|
||||
fprintf(stderr, "Couldn't open output file!\r\n");
|
||||
config_destroy(cfg);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
fclose(input);
|
||||
fclose(output);
|
||||
|
||||
config_destroy(cfg);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
43
src/global.h
Normal file
43
src/global.h
Normal file
|
@ -0,0 +1,43 @@
|
|||
/**
|
||||
* HEVC Encoder
|
||||
* - Marko Viitanen ( fador at iki.fi ), Tampere University of Technology, Department of Computer Systems.
|
||||
*/
|
||||
|
||||
/*! \file global.h
|
||||
\brief Contains global includes
|
||||
\author Marko Viitanen
|
||||
\date 2012-05
|
||||
|
||||
This file should be included to every C-file.
|
||||
*/
|
||||
#ifndef __GLOBAL_H
|
||||
#define __GLOBAL_H
|
||||
|
||||
//Including stdint.h,
|
||||
#ifdef _MSC_VER
|
||||
#include "../include/stdint.h"
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
|
||||
#define VERSION_STRING "0.1 "
|
||||
#define VERSION 0.1
|
||||
|
||||
//#define VERBOSE 1
|
||||
|
||||
|
||||
#define SIZE_2Nx2N 0
|
||||
#define SIZE_2NxN 1
|
||||
#define SIZE_Nx2N 2
|
||||
#define SIZE_NxN 3
|
||||
#define SIZE_NONE 15
|
||||
|
||||
#define MODE_SKIP 0
|
||||
#define MODE_INTER 1
|
||||
#define MODE_INTRA 2
|
||||
#define MODE_NONE 15
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue