cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

phonetic
Journeyman III

AMF_VIDEO_ENCODER_EXTRADATA always NULL

Hi I'm trying to get the AMF_VIDEO_ENCODER_EXTRADATA from AMF (SDK 1.1) encoder.

Excerpt:

...

res = pimpl->encoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY);

res = pimpl->encoder->Init(pimpl->formatIn, inputWidth_, inputHeight_);

amf::AMFBufferPtr extradata;

if (pimpl->encoder->HasProperty(AMF_VIDEO_ENCODER_EXTRADATA) == AMF_OK)

{

res = pimpl->encoder->GetProperty(AMF_VIDEO_ENCODER_EXTRADATA, reinterpret_cast<amf::AMFInterfacePtr*>(&extradata));

if (res == AMF_OK && extradata != nullptr)

{

// process

}

}

Problem is that it is always NULL. I also have AMF_VIDEO_ENCODER_INSERT_SPS, AMF_VIDEO_ENCODER_INSERT_PPS and is verified to be present in the output stream.

Also please whitelist. Thanks in advance.

0 Likes
1 Reply
phonetic
Journeyman III

OK we figured it out.

That comment "// AMFInterface* - > AMFBuffer*; SPS/PPS buffer - read-only" is quite misleading. You actually have to push a buffer on the property before calling Init(oO) it seems (so much for read-only)

Then you have to GetProperty on an AMFVariant and not AMFInterface in order to get your AMFBuffer (by calling AMFVariant::ToInterface() -> cast) and finally GetNative() to get your pointer.

We are still checking if the SPS/PPS is correct, because it seems a little fishy too.