rk3288硬解jpeg问题
版主好,能否提供硬解码接口的使用说明啊,我写了个demo,调用失败返回负值,也不知道这个值是表示的什么意思,求解。
谢谢 你把你写的demo贴一下,我看一下先把
#define LOG_TAG "OmxJpegDecoder"
#include <sys/time.h>
#include <utils/Log.h>
#include <binder/ProcessState.h>
#include "SkBitmap.h"
#include "SkImageDecoder.h"
#include "SkStream.h"
#include "omx_jpeg_decoder.h"
class SkJPEGImageDecoder : public SkImageDecoder {
public:
virtual Format getFormat() const {
return kJPEG_Format;
}
protected:
virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode);
};
int nullObjectReturn(const char msg[]) {
if (msg) {
SkDebugf("--- %s\n", msg);
}
return -1;
}
static int64_t getNowUs() {
struct timeval tv;
gettimeofday(&tv, NULL);
return tv.tv_usec + (int64_t) tv.tv_sec * 1000000;
}
int testDecodePixels(SkImageDecoder* decoder, SkStream* stream,
SkBitmap* bitmap) {
int64_t startTime = getNowUs();
SkBitmap::Config prefConfig = SkBitmap::kARGB_8888_Config;
SkImageDecoder::Mode decodeMode = SkImageDecoder::kDecodePixels_Mode;
// Decode the input stream and then use the bitmap.
if (!decoder->decode(stream, bitmap, prefConfig, decodeMode)) {
return nullObjectReturn("decoder->decode returned false");
} else {
int64_t delay = getNowUs() - startTime;
printf("Decoding Time in PixelsMode %.1f msec.\n", delay / 1000.0f);
const char* filename = "/sdcard/omxJpegDecodedBitmap.rgba";
return storeBitmapToFile(bitmap, filename);
}
}
int testDecoder(SkImageDecoder* decoder, char* filename) {
// test DecodeMode == Pixels
SkStream* stream = new SkFILEStream(filename);
SkBitmap* bitmap = new SkBitmap;
testDecodePixels(decoder, stream, bitmap);
delete bitmap;
delete decoder;
return 0;
}
int main(int argc, char** argv) {
android::ProcessState::self()->startThreadPool();
printf("Decoding jpeg with libjpeg...\n");
SkJPEGImageDecoder* libjpeg = new SkJPEGImageDecoder;
testDecoder(libjpeg, argv);
return 0;
}
duoduo 发表于 2015-4-29 16:23
我查了一下系统内的API,你可以去源码里面看一下external/skia/src/images/SkImageDecoder_libjpeg.cpp的代码,这里面有实际的接口使用 我用的那个demo,是修改的frameworks/base/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp的这个文件,就是调用的libskia.so库里的SkImageDecoder_libjpeg.cpp文件里的接口啊。你那有rk3288的板子,能否帮我测试下,我这边测试过了,是调用硬解码接口失败的。
谢谢 duoduo 发表于 2015-4-29 17:06
我用的那个demo,是修改的frameworks/base/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp的这个文件, ...
那我看一下把,可能需要一点时间,有结果回复你 好的,多谢版主,期盼你的回复。
谢谢。 本帖最后由 风之空响 于 2015-4-29 17:33 编辑
duoduo 发表于 2015-4-29 17:06
我用的那个demo,是修改的frameworks/base/media/tests/omxjpegdecoder/jpeg_decoder_bench.cpp的这个文件, ...
话说你的qq为啥没反应呢,有些具体的问题,我想问下你.因为在我这边的话139|root@rk3288:/system/bin # jpeg_bench /sdcard/1.jpg
Decoding jpeg with libjpeg...
Decoding Time in PixelsMode 19.8 msec.
WidthxHeight: 800x480
Decoding Time in BoundsMode 1.0 msec
是可以解码的啊
风之空响 发表于 2015-4-29 17:31
话说你的qq为啥没反应呢,有些具体的问题,我想问下你.因为在我这边的话139|root@rk3288:/system/bin # j ...
版主 这个虽然显示解码成功,但是是软解的. 我在skia/src/images/SkImageDecoder_libjpeg.cpp 加了打印信息,如下
SkDebugf("goingto decode 1 %d %d",bm->width(), bm->height());
if(hw_jpeg_decode(&hwInfo,&outInfo, &reuseBitmap, bm->width(), bm->height()) >= 0){
SkDebugf("decode 1");
decode 1没有打印出来, 因为硬解出错,倒是打印出了出错分支的这行话
HW_DEBUG("execte hw_jpeg_release #2");
请帮忙看一下什么原因
页:
[1]