40 Commits

Author SHA1 Message Date
Nathan Kidd
f21fffda3b Use stdbool.h with Visual Studio 2013 or higher
2013 is the first version to include the header.

Avoids "codec_api.h(40): error C2632: 'char' followed by 'bool' is illegal"
when building C code.
2015-09-02 09:32:41 -04:00
Martin Storsjö
5c7fe31277 Convert tabs to spaces in the public header code examples 2015-05-14 13:58:44 +03:00
dongzha
993caea18c Merge pull request #1721 from huili2/DecodeFrameNodelay
add new API as DecodeFrameNoDelay for immediate decoding
2015-01-15 09:54:10 +08:00
Martin Storsjö
aa1ec23ecd Clarify the comment about ABI issues with WelsGetCodecVersion
The incompatibility between mingw and msvc is smaller than it seemed
at first; this turned out to only be a bug in older versions.
2015-01-07 09:15:34 +02:00
ruil2
2ef9a8aee9 Merge pull request #1692 from mstorsjo/improved-version-function
Add a new public function WelsGetCodecVersionEx
2015-01-04 09:14:29 +08:00
Martin Storsjö
50dc4757e4 Add a new public function WelsGetCodecVersionEx
This function doesn't return a struct, but fills in a struct via
a provided pointer.

The ABI of returning a struct is different between MSVC and mingw.

This allows using the same function from mingw, even though the DLL
has been built with MSVC.
2015-01-03 01:09:04 +02:00
Martin Storsjö
ba314d16e7 Add void to the parameter list of WelsGetCodecVersion
When the header is used from C instead of C++, an empty parameter
list means that it can take any number of parameters, and can cause
warnings like "function declaration isn’t a prototype" with some
C compilers. Clarify this by explicitly adding void to this function.
2014-12-31 17:07:36 +02:00
huili2
e3e5208509 add new API as DecodeFrameNoDelay for immediate decoding, which will be recommended decoding method for h.264 bitstream 2014-12-30 23:43:47 -08:00
Martin Storsjö
8bfeae27a4 Add a public function for getting the codec version
If the codec library is loaded dynamically, it may be necessary that
the loaded library actually matches the version that was used when
it was built, to avoid issues due to ABI differences. Therefore add
a public function to allow getting the version of the currently
loaded library.
2014-12-18 13:20:33 +02:00
Zaheer Abbas Merali
91736e85e8 Fix comments to be up to date with current API. 2014-12-15 11:37:32 -08:00
huili2
347e4893a9 add parse only comment in API 2014-11-25 18:22:23 -08:00
huashi
7175d3c90e 1.doxgen documentation format for comments in api/*.h 2. comments to wiki tools in openh264/docs/* 2014-11-21 10:38:30 +08:00
huili2
efdefdba28 add API only for decode parser for HW decoding support 2014-09-29 19:14:58 -07:00
huili2
0b23d0facb add decoder capability info 2014-08-27 17:48:58 -07:00
ruil2
3632a0331c remove pause frame interface which will be done in application level 2014-07-15 11:05:05 +08:00
ruil2
44b048edd6 move trace related info to interface header 2014-06-11 17:05:40 +08:00
huili2
5482207823 modify dec API from void to explicit type, and some comments 2014-05-21 23:47:57 -07:00
huili2
5ed24f216b astyle all files 2014-05-05 19:30:21 -07:00
Licai Guo
8b9f621b88 add virtual destructor to codec interface 2014-04-21 17:51:47 -07:00
huili2
f5d1683861 modify decoder API to up-to-date 2014-04-10 19:44:28 -07:00
Andoni Morales Alastruey
328740f294 Prefix API with the Wels namespace 2014-03-25 17:40:01 +01:00
ruil2
36d56b6638 modify EncoderFrame return type.
commit b99a307ab94183c32a293ad5fda8b0e3323546a0
Author: ruil2 <ruil2@cisco.com>
Date:   Wed Mar 12 13:34:27 2014 +0800

    fix typo
2014-03-17 10:46:38 +08:00
Martin Storsjö
c7ff8876bb Add a new public method for initializing SEncParamExt to default values
This simplifies forward source compatibility when new fields are
added to SEncParamExt - when new fields are added to SEncParamExt,
this method makes sure those fields are initialized to the
default value - otherwise all API users would have to manually check
SEncParamExt every time it is updated to make sure there's no new fields
that should be set to a nonzero value by default (e.g. like
bEnableFrameSkip).
2014-02-26 22:12:11 +02:00
ruil2
3ba6a5f4da Simplify encoder interface--remove EncoderFrame2 from interface
function
2014-02-20 10:33:07 +08:00
Martin Storsjö
49f4dad1b7 Split the encoder Initialize method into two
This avoids the struct type casting and having to pass a parameter
that says which kind of struct it actually is.
2014-02-18 22:51:54 +02:00
Martin Storsjö
a899f05f2d Don't have SEncParamExt inherit SEncParamBase
Instead just duplicate the common fields. These fields had to
be duplicated for the C interface compatibility anyway - but
this way there is no risk to accidentally introduce an ABI
break since there is no need for the layout of SEncParamBase to
actually match the start of SEncParamExt.
2014-02-18 22:51:54 +02:00
Martin Storsjö
6d6a63a703 Mark the Initialize pointer parameter as const
This makes it clear to the callers that the struct will
not be modified by this call.
2014-02-18 22:51:53 +02:00
Martin Storsjö
5cb8518306 Remove the Initialize2 function from the external API
This function no longer needs to be public since one can pass
SEncParamExt to the normal Initialize function.
2014-02-18 22:51:53 +02:00
Martin Storsjö
1075338b9b Use the actual struct type instead of a void pointer to the decoder Initialize method 2014-02-18 13:00:59 +02:00
Martin Storsjö
658d1e3651 Remove the unused iInitType parameter to the decoder Initialize method 2014-02-18 13:00:45 +02:00
ruil2
35fa429fb0 encoder interface update step1 2014-02-18 09:51:47 +08:00
Martin Storsjö
c418a76d8e Don't try to include stdbool.h on MSVC
MSVC only got stdbool.h in MSVC 2013; provide a manual typedef
for this compiler instead.

The C interface test makes sure that this doesn't break the ABI.
2014-02-13 10:09:35 +02:00
Martin Storsjö
bcd08d8713 Include stdbool.h in the public interface headers in C mode
This avoids requiring the callers to explicitly include it before
including codec_api.h
2014-02-08 14:37:26 +02:00
Martin Storsjö
043575ffb0 Add a public C API to the library
Add a struct that matches the C++ interface vtable.

This requires that the C++ interface methods are declared to use
the same calling convention as normal C functions, and that the
C struct exactly matches the layout and ordering of the C++
virtual table - MSVC seemed to reorder methods if there were
overloaded methods.
2014-01-21 20:54:32 +02:00
Martin Storsjö
dd0db820fc Rename public interface methods to avoid two overloaded methods with the same name
This is required to make the order in the C++ virtual table
consistent in MSVC - previously the overloaded methods were
ordered differently in the vtable compared to the interface
declaration.
2014-01-21 20:54:32 +02:00
Martin Storsjö
2766215545 Add an encoder method for encoding the SPS/PPS without encoding a frame
This is useful if using a muxer that requires the SPS/PPS to be
available before the first frame is encoded.
2014-01-11 13:58:56 +02:00
huili2
32fd2c4e4d interface clean and inside modification
clean and comment some API.
move the SKIP mv pred location
remove the unused buffer in intra construction.
2014-01-06 13:28:55 +08:00
Ethan Hugg
ff6b669176 Pretty printed the C++ code with astyle 2013-12-12 14:21:12 -08:00
Martin Storsjö
3331ff6566 Fix a typo in the public codec API 2013-12-12 16:13:45 +02:00
Ethan Hugg
70e5e62f3d Initial Commit 2013-12-09 04:51:09 -08:00