主题 : 能否确认三星Exynos 4412的kernel jpeg硬解码驱动可以调用 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
楼主  发表于: 2015-06-02 19:35

 能否确认三星Exynos 4412的kernel jpeg硬解码驱动可以调用

我在写4412的jpeg硬解码测试程序,发现调用ioctl申请V4L2视频驱动分配内存时,参数类型只能使用V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE,使用V4L2_BUF_TYPE_VIDEO_CAPTURE就会报错。即使使用V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE这个类型申请成功,在使用mmap映射时还是报错。
能否帮我验证下这个驱动可不可以使用。
谢谢
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
贡献值: 0 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
1楼  发表于: 2015-06-03 09:55
没有单独测试过,不过在调试摄像头时拍照就是使用了jpeg 硬编码,工作正常,仅供参考。
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
2楼  发表于: 2015-06-03 10:52
哦,有给问题请教下,打开设备后,
  // 请求分配内存
  struct v4l2_requestbuffers reqbuf;
    
    reqbuf.count = BUFFER_COUNT;
    reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
    reqbuf.memory = V4L2_MEMORY_MMAP;
    
    ret = ioctl(fd , VIDIOC_REQBUFS, &reqbuf);
返回失败,我把reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
改为reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
是成功。
请问你用到这个了吗?我这样改是否可行,谢谢。
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
3楼  发表于: 2015-06-03 10:56
请问你用的是android哪个版本,kernel是哪个版本
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
4楼  发表于: 2015-06-03 16:58
方便的话,可否留个联系方式,我真的需要请教这个问题。
谢谢
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
贡献值: 0 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
5楼  发表于: 2015-06-03 17:49
Android 5.0 + Linux-3.0.86
没有直接进行 ioctl 操作,采用的是 libhwjpeg 里面提供的 API,你可以考虑看一下这个库的实现
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
6楼  发表于: 2015-06-03 22:51
好的  谢谢
有没有demo或者参考资料之类的呀
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
7楼  发表于: 2015-06-04 11:38
你好  911gt3
我现在采用的是 libhwjpeg 里面提供的 API,在调用jpeghal_set_outbuf接口时有问题,jpeghal_set_outbuf接口调用jpeg_v4l2_querybuf,在jpeg_v4l2_querybuf接口里buf->num_planes的值为0,for循环进不去,不能进行mmap映射,请问这个地方如何解决?
谢谢
级别: 新手上路
UID: 115411
精华: 0
发帖: 24
金钱: 120 两
威望: 24 点
贡献值: 0 点
综合积分: 48 分
注册时间: 2015-05-15
最后登录: 2015-07-04
8楼  发表于: 2015-06-04 15:12
我现在是想把jpeg图片读到缓冲区,然后通过硬件解码,解码后放到另外一个缓冲区,代码如下,麻烦帮我分析下,不知道问题出在哪里?多谢了

#define LOG_TAG "hwjpeg_test"

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>
#include <errno.h>
#include <signal.h>
#include <math.h>
#include <sys/poll.h>

#include <cutils/log.h>

#include "jpeg_hal.h"

#ifndef LOGD      
#define LOGE ALOGE
#define LOGI ALOGI
#define LOGV ALOGV
#define LOGD ALOGD
#define LOGW ALOGW
#endif        


int main(int argc, char **argv)
{
    int fd;
    FILE *fp;
    int ret;
    struct jpeg_buf buf;
    struct jpeg_buf dec_buf;
    char *InBuf;
    long fileSize;

    
    fd = jpeghal_dec_init();
    if (fd < 0)
    {
        LOGE("[%s]: JPEG dec open failed", __func__);
        return -1;
    }

    buf.memory = V4L2_MEMORY_MMAP;
    ret = jpeghal_set_outbuf(fd, &buf);
    if (ret < 0)
    {
        close(fd);
        LOGE("[%s:%d]: Set Output failed", __func__, ret);
        return -1;
    }

    dec_buf.memory = V4L2_MEMORY_MMAP;
    ret = jpeghal_set_inbuf(fd, &dec_buf);
    if (ret < 0)
    {
        close(fd);
        LOGE("[%s:%d]: Set Input failed", __func__, ret);
        return -1;
    }

    fp = fopen(argv[1], "rb");
    if(fp == NULL){
        jpeghal_deinit(fd, &dec_buf, &buf);
        return -1;
    }
    fseek(fp, 0, SEEK_END);
    fileSize = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    //InBuf = (char *)malloc(fileSize);
    //memset(InBuf, 0, fileSize);
    LOGI("fileSize:%ld\n", fileSize);
    fread(buf.start[0], 1, fileSize, fp);
    ret = jpeghal_dec_exe(fd, &dec_buf, &buf);
    LOGI("[%s:%d]", __func__, ret);
                          
    fclose(fp);
    close(fd);
    return 0;
}
级别: 新手上路
UID: 120726
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2015-11-19
最后登录: 2016-02-24
9楼  发表于: 2015-11-19 11:44
楼主的硬解搞定没?