thumbnail的處理流程和讀取縮圖thumbnail所在sample的index的方法

來源:互聯網
上載者:User

取得video thumbnail的處理流程如所示,取得image的thumbnail的處理流程類似,只是取得image thumbnail的函數變成了ThumbnailUtils.createImageThumbnail。

Thumbnail的傳回型別是Bitmap。

尋找縮圖所在sample的index的方法在SampleTable::findThumbnailSample函數中,在要尋找的前numSamplesToScan個samples 中,尋找size最大的sample作為縮圖的sample index。

status_t SampleTable::findThumbnailSample(uint32_t *sample_index) {    Mutex::Autolock autoLock(mLock);    if (mSyncSampleOffset < 0) {        // All samples are sync-samples.        *sample_index = 0;        return OK;    }    uint32_t bestSampleIndex = 0;    size_t maxSampleSize = 0;    static const size_t kMaxNumSyncSamplesToScan = 20; // 最大尋找20個samples    // Consider the first kMaxNumSyncSamplesToScan sync samples and    // pick the one with the largest (compressed) size as the thumbnail.    size_t numSamplesToScan = mNumSyncSamples;    if (numSamplesToScan > kMaxNumSyncSamplesToScan) {        numSamplesToScan = kMaxNumSyncSamplesToScan;    }    for (size_t i = 0; i < numSamplesToScan; ++i) {        uint32_t x = mSyncSamples[i];        // Now x is a sample index.        size_t sampleSize;        status_t err = getSampleSize_l(x, &sampleSize);        if (err != OK) {            return err;        }        if (i == 0 || sampleSize > maxSampleSize) { // 尋找size最大的一個sample當做thumbnail的sample            bestSampleIndex = x;            maxSampleSize = sampleSize;        }    }    *sample_index = bestSampleIndex;    return OK;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.