[-]
[+]
|
Changed |
_service:tar_git:gmp-droid.changes
|
|
[-]
[+]
|
Changed |
_service:tar_git:gmp-droid.spec
^
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://github.com/sailfishos/gmp-droid.git</param>
<param name="branch">master</param>
- <param name="revision"></param>
+ <param name="revision">0.1.2</param>
<param name="token"/>
<param name="debian">N</param>
<param name="dumb">N</param>
|
[-]
[+]
|
Changed |
_service:tar_git:gmp-droid-0.1.2.tar.gz/gmp-droid.cpp
^
|
@@ -188,25 +188,20 @@
return;
}
-
- if (len == 1) {
- // Start code already processed
- LOG (DEBUG, "NAL start code found. Skipping");
- break;
- } else if (offset + len + 4 > inputFrame->Size ()) {
- // Make sure that we won't run out of space in the buffer
- LOG (DEBUG,
- "NAL length more than buffer size: " << len << " bytes");
- break;
- } else {
- // Write NAL start code over the length
- static const uint8_t code[] = { 0x00, 0x00, 0x00, 0x01 };
- const uint8_t *start_code = code + (4 - start_code_len);
- memcpy (inputFrame->Buffer () + offset, start_code, start_code_len);
- offset += start_code_len + len;
-
- LOG (DEBUG, "Parsed nal unit of size " << len);
+ // Check that we won't run out of space in the buffer
+ if (offset + len + 4 > inputFrame->Size ()) {
+ LOG (ERROR,
+ "Not enough space left for " << len << " bytes of NAL data");
+ Error (GMPDecodeErr);
+ return;
}
+ // Write NAL start code over the lenth
+ static const uint8_t code[] = { 0x00, 0x00, 0x00, 0x01 };
+ const uint8_t *start_code = code + (4 - start_code_len);
+ memcpy (inputFrame->Buffer () + offset, start_code, start_code_len);
+ offset += start_code_len + len;
+
+ LOG (DEBUG, "Parsed nal unit of size " << len);
}
}
@@ -219,7 +214,7 @@
cdata.ts = inputFrame->TimeStamp ();
// Android doesn't pass duration through the codec - we'll have to keep it
- m_dur[cdata.ts] = inputFrame->Duration ();
+ m_dur.emplace (cdata.ts, inputFrame->Duration ());
cdata.sync = inputFrame->FrameType () == kGMPKeyFrame;
inputFrame->Destroy ();
@@ -266,12 +261,10 @@
droid_media_codec_drain (m_codec);
}
- //TODO: This never happens because the codec never really drains, except for EOS
- if (!m_codec || m_dur.size () == 0) {
+ m_draining = true;
+ //TODO: This never happens because the codec never really drains
+ if (!m_codec || m_dur.size () == 0)
m_callback->DrainComplete ();
- } else {
- m_draining = true;
- }
}
virtual void DecodingComplete ()
@@ -308,6 +301,7 @@
// Reset state
m_draining = false;
+ m_dur.clear ();
if (!droid_media_codec_start (m_codec)) {
droid_media_codec_destroy (m_codec);
@@ -404,11 +398,6 @@
m_dropConverter = false;
}
- if (m_resetting) {
- LOG(INFO, "Discarding decoded frame received while resetting");
- return;
- }
-
if (!m_conv) {
ConfigureOutput (data);
}
@@ -437,12 +426,12 @@
return;
}
// Set timestamp
- int64_t ts = data->ts / 1000;
+ uint64_t ts = data->ts / 1000;
frame->SetTimestamp (ts);
// Look up duration in our cache
uint64_t dur = 0;
- std::map <int64_t, uint64_t>::iterator durIt = m_dur.find (ts);
+ std::map <uint64_t, uint64_t>::iterator durIt = m_dur.find (ts);
if (durIt != m_dur.end ()) {
dur = durIt->second;
m_dur.erase (durIt);
@@ -452,11 +441,11 @@
// Send the new frame back to Gecko
m_callback->Decoded (frame);
LOG (DEBUG, "ProcessFrame: Returning frame ts: " << ts << " dur: " << dur);
- if (m_dur.size () == 0 && m_draining) {
- // TODO: we never get the buffers down to 0 with the current SimpleDecodingSource, but EOS will do it
- m_callback->DrainComplete ();
- } else {
- LOG (DEBUG, "Buffers still out " << m_dur.size ());
+ if (!m_draining)
+ m_callback->InputDataExhausted ();
+ LOG (DEBUG, "Buffers still out " << m_dur.size ());
+ if (m_draining && m_dur.size () == 0) { // TODO: we never get the buffers down to 0
+ m_callback->DrainComplete ();
}
}
@@ -467,7 +456,6 @@
g_platform_api->runonmainthread (WrapTask (m_callback,
&GMPVideoDecoderCallback::DrainComplete));
}
- m_dur.clear ();
}
void Error (GMPErr error)
@@ -493,7 +481,7 @@
bool m_dropConverter = false;
bool m_draining = false;
bool m_resetting = false;
- std::map <int64_t, uint64_t> m_dur;
+ std::map <uint64_t, uint64_t> m_dur;
};
/*
|
[-]
[+]
|
Changed |
_service:tar_git:gmp-droid-0.1.2.tar.gz/meson.build
^
|
@@ -13,7 +13,7 @@
droidmedia_h = include_directories('/usr/include/droidmedia')
hybris_dep = cc.find_library('hybris-common', required: true)
-gmpdroid_install_dir = '/'.join([ get_option('libdir'), meson.project_name(), meson.project_version()])
+gmpdroid_install_dir = '/'.join([ get_option('libdir'), 'xulrunner-qt5-'+get_option('gecko_ver'), meson.project_name(), meson.project_version()])
gmp_source = [
'gmp-droid.cpp',
|
[-]
[+]
|
Added |
_service:tar_git:gmp-droid-0.1.2.tar.gz/meson_options.txt
^
|
@@ -0,0 +1 @@
+option('gecko_ver', type : 'string', description : 'Gecko version')
|