shithub: openh264

Download patch

ref: c7ff8876bb228e9aea34db890d22ac87e940cb87
parent: 6021ff3908a39cd2996650a85dbcea09a6c8cb52
author: Martin Storsjö <martin@martin.st>
date: Wed Feb 26 17:08:41 EST 2014

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).

--- a/codec/api/svc/codec_api.h
+++ b/codec/api/svc/codec_api.h
@@ -59,6 +59,8 @@
   virtual int EXTAPI Initialize (const SEncParamBase* pParam) = 0;
   virtual int EXTAPI InitializeExt (const SEncParamExt* pParam) = 0;
 
+  virtual int EXTAPI GetDefaultParams (SEncParamExt* pParam) = 0;
+
   virtual int EXTAPI Uninitialize() = 0;
 
   /*
@@ -141,6 +143,8 @@
 
   int (*Initialize) (ISVCEncoder*, const SEncParamBase* pParam);
   int (*InitializeExt) (ISVCEncoder*, const SEncParamExt* pParam);
+
+  int (*GetDefaultParams) (ISVCEncoder*, SEncParamExt* pParam);
 
   int (*Uninitialize) (ISVCEncoder*);
 
--- a/codec/encoder/plus/inc/welsEncoderExt.h
+++ b/codec/encoder/plus/inc/welsEncoderExt.h
@@ -69,6 +69,8 @@
   virtual int EXTAPI Initialize (const SEncParamBase* argv);
   virtual int EXTAPI InitializeExt (const SEncParamExt* argv);
 
+  virtual int EXTAPI GetDefaultParams (SEncParamExt* argv);
+
   virtual int EXTAPI Uninitialize();
 
   /*
--- a/codec/encoder/plus/src/welsEncoderExt.cpp
+++ b/codec/encoder/plus/src/welsEncoderExt.cpp
@@ -197,6 +197,11 @@
 
 /* Interfaces override from ISVCEncoder */
 
+int CWelsH264SVCEncoder::GetDefaultParams (SEncParamExt* argv) {
+  SWelsSvcCodingParam::FillDefault(*argv, true);
+  return cmResultSuccess;
+}
+
 /*
  *	SVC Encoder Initialization
  */
--- a/test/c_interface_test.c
+++ b/test/c_interface_test.c
@@ -12,6 +12,7 @@
 void CheckEncoderInterface(ISVCEncoder* p, CheckFunc check) {
   CHECK(1, p, Initialize);
   CHECK(2, p, InitializeExt);
+  CHECK(10, p, GetDefaultParams);
   CHECK(3, p, Uninitialize);
   CHECK(4, p, EncodeFrame);
   CHECK(5, p, EncodeParameterSets);
--- a/test/cpp_interface_test.cpp
+++ b/test/cpp_interface_test.cpp
@@ -30,6 +30,10 @@
     EXPECT_TRUE(gThis == this);
     return 2;
   }
+  virtual int EXTAPI GetDefaultParams(SEncParamExt* pParam) {
+    EXPECT_TRUE(gThis == this);
+    return 10;
+  }
   virtual int EXTAPI Uninitialize() {
     EXPECT_TRUE(gThis == this);
     return 3;