The following patch, to just request outputbuffers from media_codec every time the function is called, fixes the issue.
Not pushing it further as I want Jim to make sure this is not reflected somewhere in the hybris/gstreamer code.
diff --git a/compat/media/media_codec_layer.cpp b/compat/media/media_codec_layer.cpp index b5f3bc8..eed34af 100644 --- a/compat/media/media_codec_layer.cpp +++ b/compat/media/media_codec_layer.cpp @@ -478,8 +478,8 @@ size_t media_codec_get_output_buffers_size(MediaCodecDelegate delegate) if (d == NULL) return BAD_VALUE;
- if (d->output_buffers.size() == 0) - { +// if (d->output_buffers.size() == 0) +// { status_t ret = d->media_codec->getOutputBuffers(&d->output_buffers); if (ret != OK) { @@ -487,7 +487,7 @@ size_t media_codec_get_output_buffers_size(MediaCodecDelegate delegate) return 0; } ALOGD("Got %d output buffers", d->output_buffers.size()); - } +// }
return d->output_buffers.size(); }
The following patch, to just request outputbuffers from media_codec every time the function is called, fixes the issue.
Not pushing it further as I want Jim to make sure this is not reflected somewhere in the hybris/gstreamer code.
diff --git a/compat/ media/media_ codec_layer. cpp b/compat/ media/media_ codec_layer. cpp media/media_ codec_layer. cpp media/media_ codec_layer. cpp get_output_ buffers_ size(MediaCodec Delegate delegate)
index b5f3bc8..eed34af 100644
--- a/compat/
+++ b/compat/
@@ -478,8 +478,8 @@ size_t media_codec_
if (d == NULL)
return BAD_VALUE;
- if (d->output_ buffers. size() == 0) buffers. size() == 0) codec-> getOutputBuffer s(&d->output_ buffers) ; get_output_ buffers_ size(MediaCodec Delegate delegate) buffers. size()) ;
- {
+// if (d->output_
+// {
status_t ret = d->media_
if (ret != OK)
{
@@ -487,7 +487,7 @@ size_t media_codec_
return 0;
}
ALOGD("Got %d output buffers", d->output_
- }
+// }
return d->output_ buffers. size();
}