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).
This commit is contained in:
parent
6021ff3908
commit
c7ff8876bb
@ -59,6 +59,8 @@ class ISVCEncoder {
|
||||
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;
|
||||
|
||||
/*
|
||||
@ -142,6 +144,8 @@ struct ISVCEncoderVtbl {
|
||||
int (*Initialize) (ISVCEncoder*, const SEncParamBase* pParam);
|
||||
int (*InitializeExt) (ISVCEncoder*, const SEncParamExt* pParam);
|
||||
|
||||
int (*GetDefaultParams) (ISVCEncoder*, SEncParamExt* pParam);
|
||||
|
||||
int (*Uninitialize) (ISVCEncoder*);
|
||||
|
||||
int (*EncodeFrame) (ISVCEncoder*, const SSourcePicture* kpSrcPic, SFrameBSInfo* pBsInfo);
|
||||
|
@ -69,6 +69,8 @@ class CWelsH264SVCEncoder : public ISVCEncoder {
|
||||
virtual int EXTAPI Initialize (const SEncParamBase* argv);
|
||||
virtual int EXTAPI InitializeExt (const SEncParamExt* argv);
|
||||
|
||||
virtual int EXTAPI GetDefaultParams (SEncParamExt* argv);
|
||||
|
||||
virtual int EXTAPI Uninitialize();
|
||||
|
||||
/*
|
||||
|
@ -197,6 +197,11 @@ void CWelsH264SVCEncoder::InitEncoder (void) {
|
||||
|
||||
/* Interfaces override from ISVCEncoder */
|
||||
|
||||
int CWelsH264SVCEncoder::GetDefaultParams (SEncParamExt* argv) {
|
||||
SWelsSvcCodingParam::FillDefault(*argv, true);
|
||||
return cmResultSuccess;
|
||||
}
|
||||
|
||||
/*
|
||||
* SVC Encoder Initialization
|
||||
*/
|
||||
|
@ -12,6 +12,7 @@ typedef void(*CheckFunc)(int, int, const char*);
|
||||
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);
|
||||
|
@ -30,6 +30,10 @@ struct SVCEncoderImpl : public ISVCEncoder {
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user