Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3cbaf008 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 8845

* changes:
  While other OMX nodes appear to now have switched to using microseconds to timestamp buffers, at least the TI AAC and MP3 decoders still use milliseconds.
parents 7a45a2ec 970764d1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -83,7 +83,8 @@ private:
        kDoesntProperlyFlushAllPortsAtOnce   = 8,
        kRequiresAllocateBufferOnInputPorts  = 16,
        kRequiresAllocateBufferOnOutputPorts = 32,
        kRequiresLoadedToIdleAfterAllocation = 64
        kRequiresLoadedToIdleAfterAllocation = 64,
        kMeasuresTimeInMilliseconds          = 128,
    };

    OMXClient *mClient;
+19 −4
Original line number Diff line number Diff line
@@ -154,6 +154,10 @@ OMXDecoder *OMXDecoder::Create(
    if (!strncmp(codec, "OMX.qcom.video.", 15)) {
        quirks |= kRequiresLoadedToIdleAfterAllocation;
    }
    if (!strcmp(codec, "OMX.TI.AAC.decode")
        || !strcmp(codec, "OMX.TI.MP3.decode")) {
        quirks |= kMeasuresTimeInMilliseconds;
    }

    OMXDecoder *decoder = new OMXDecoder(client, node, mime, codec, quirks);

@@ -1497,8 +1501,12 @@ void OMXDecoder::onRealEmptyBufferDone(IOMX::buffer_id buffer) {
    OMX_TICKS timestamp = 0;

    if (success) {
        if (mQuirks & kMeasuresTimeInMilliseconds) {
            timestamp = ((OMX_S64)units * 1000) / scale;
        } else {
            timestamp = ((OMX_S64)units * 1000000) / scale;
        }
    }

    input_buffer->release();
    input_buffer = NULL;
@@ -1523,9 +1531,16 @@ void OMXDecoder::onRealFillBufferDone(const omx_message &msg) {

    media_buffer->meta_data()->clear();

    if (mQuirks & kMeasuresTimeInMilliseconds) {
        media_buffer->meta_data()->setInt32(
                kKeyTimeUnits,
                msg.u.extended_buffer_data.timestamp);
    } else {
        media_buffer->meta_data()->setInt32(
                kKeyTimeUnits,
                (msg.u.extended_buffer_data.timestamp + 500) / 1000);
    }

    media_buffer->meta_data()->setInt32(kKeyTimeScale, 1000);

    if (msg.u.extended_buffer_data.flags & OMX_BUFFERFLAG_SYNCFRAME) {