USB的720P摄像头花屏的问题

本帖最后由 yaolunlun 于 2014-12-19 16:03 编辑

最近买的Firefly板子,测试720P的USB摄像头,输出格式为mjpeg。获取视频时,视频是花屏的。请问,Firefly的工程师们,你们测试过吗?:cry:
Logcat输出信息:

<span style="line-height: 1.5;">12-16 09:42:00.765: D/AndroidRuntime(3767): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<</span>
12-16 09:42:00.765: D/AndroidRuntime(3767): CheckJNI is OFF
12-16 09:42:00.765: I/AndroidRuntime(3767): JNI options: '-Xjniopts:warnonly'
12-16 09:42:00.775: D/dalvikvm(3767): Trying to load lib libjavacore.so 0x0
12-16 09:42:00.775: D/dalvikvm(3767): Added shared lib libjavacore.so 0x0
12-16 09:42:00.775: D/dalvikvm(3767): Trying to load lib libnativehelper.so 0x0
12-16 09:42:00.775: D/dalvikvm(3767): Added shared lib libnativehelper.so 0x0
12-16 09:42:00.775: D/dalvikvm(3767): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init
12-16 09:42:00.775: D/dalvikvm(3767): Trying to load lib librkbm.so 0x0
12-16 09:42:00.775: D/dalvikvm(3767): Added shared lib librkbm.so 0x0
12-16 09:42:00.795: D/dalvikvm(3767): Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods
12-16 09:42:00.875: E/memtrack(3767): Couldn't load memtrack module (No such file or directory)
12-16 09:42:00.875: E/android.os.Debug(3767): failed to load memtrack module: -2
12-16 09:42:00.905: D/AndroidRuntime(3767): Calling main entry com.android.commands.pm.Pm
12-16 09:42:00.915: D/AndroidRuntime(3767): Shutting down VM
12-16 09:42:00.915: D/jdwp(3767): Got wake-up signal, bailing out of select
12-16 09:42:00.915: D/dalvikvm(3767): Debugger has detached; object registry had 1 entries
12-16 09:42:01.355: D/AndroidRuntime(3778): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
12-16 09:42:01.365: D/AndroidRuntime(3778): CheckJNI is OFF
12-16 09:42:01.365: I/AndroidRuntime(3778): JNI options: '-Xjniopts:warnonly'
12-16 09:42:01.365: D/dalvikvm(3778): Trying to load lib libjavacore.so 0x0
12-16 09:42:01.375: D/dalvikvm(3778): Added shared lib libjavacore.so 0x0
12-16 09:42:01.375: D/dalvikvm(3778): Trying to load lib libnativehelper.so 0x0
12-16 09:42:01.375: D/dalvikvm(3778): Added shared lib libnativehelper.so 0x0
12-16 09:42:01.375: D/dalvikvm(3778): No JNI_OnLoad found in libnativehelper.so 0x0, skipping init
12-16 09:42:01.375: D/dalvikvm(3778): Trying to load lib librkbm.so 0x0
12-16 09:42:01.375: D/dalvikvm(3778): Added shared lib librkbm.so 0x0
12-16 09:42:01.395: D/dalvikvm(3778): Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods
12-16 09:42:01.475: E/memtrack(3778): Couldn't load memtrack module (No such file or directory)
12-16 09:42:01.475: E/android.os.Debug(3778): failed to load memtrack module: -2
12-16 09:42:01.505: D/AndroidRuntime(3778): Calling main entry com.android.commands.am.Am
12-16 09:42:01.515: I/ActivityManager(483): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.interfaces.androidencode/.MainActivity} from pid 3778
12-16 09:42:01.545: D/dalvikvm(483): GC_FOR_ALLOC freed 1586K, 30% free 6441K/9168K, paused 30ms, total 30ms
12-16 09:42:01.555: D/AndroidRuntime(3778): Shutting down VM
12-16 09:42:01.555: D/BluetoothAdapter(3729): 1100602552: getState() :  mService = null. Returning STATE_OFF
12-16 09:42:01.555: D/LocalBluetoothManager(3729): setting foreground activity to null
12-16 09:42:01.555: D/jdwp(3778): Got wake-up signal, bailing out of select
12-16 09:42:01.555: D/dalvikvm(3778): Debugger has detached; object registry had 1 entries
12-16 09:42:01.565: D/dalvikvm(3789): Late-enabling CheckJNI
12-16 09:42:01.565: I/ActivityManager(483): Start proc com.interfaces.androidencode for activity com.interfaces.androidencode/.MainActivity: pid=3789 uid=10062 gids={50062, 1028, 1015, 3003}
12-16 09:42:01.585: E/jdwp(3789): Failed sending reply to debugger: Broken pipe
12-16 09:42:01.585: D/dalvikvm(3789): Debugger has detached; object registry had 1 entries
12-16 09:42:01.615: D/dalvikvm(3789): GC_FOR_ALLOC freed 41K, 11% free 2791K/3112K, paused 14ms, total 14ms
12-16 09:42:01.615: I/dalvikvm-heap(3789): Grow heap (frag case) to 4.066MB for 1382416-byte allocation
12-16 09:42:01.625: D/dalvikvm(3789): GC_FOR_ALLOC freed <1K, 8% free 4141K/4464K, paused 12ms, total 12ms
12-16 09:42:01.645: D/dalvikvm(3789): GC_CONCURRENT freed <1K, 8% free 4141K/4464K, paused 2ms+1ms, total 13ms
12-16 09:42:01.645: D/dalvikvm(3789): WAIT_FOR_CONCURRENT_GC blocked 12ms
12-16 09:42:01.645: I/dalvikvm-heap(3789): Grow heap (frag case) to 5.384MB for 1382416-byte allocation
12-16 09:42:01.655: D/dalvikvm(3789): GC_FOR_ALLOC freed <1K, 6% free 5491K/5816K, paused 14ms, total 14ms
12-16 09:42:01.675: D/dalvikvm(3789): GC_CONCURRENT freed 3K, 6% free 5522K/5816K, paused 1ms+2ms, total 16ms
12-16 09:42:01.675: D/StatusBar.NetworkController(565): refreshViews connected={ wifi } level=0 combinedSignalIconId=0x7f0200a9/com.android.systemui:drawable/stat_sys_wifi_signal_3_fully mobileLabel= wifiLabel="YKRH-office"xxxxXXXXxxxxXXXX emergencyOnly=false combinedLabel="YKRH-office"xxxxXXXXxxxxXXXX mAirplaneMode=false mDataActivity=0 mPhoneSignalIconId=0x0 mQSPhoneSignalIconId=0x0 mDataDirectionIconId=0x0 mDataSignalIconId=0x0 mDataTypeIconId=0x0 mQSDataTypeIconId=0x0 mWifiIconId=0x7f0200a9 mQSWifiIconId=0x7f02005d mBluetoothTetherIconId=0x10805d5
12-16 09:42:01.695: I/OMXClient(3789): Using client-side OMX mux.
12-16 09:42:01.695: I/MediaCodecList(3789): register mediacode *****************
12-16 09:42:01.705: I/ACodec(3789): setupVideoEncoder succeeded
12-16 09:42:01.705: E/ROCKCHIP_VIDEO_ENC(145): EncParam.framerate  = 30 outPort->sPortParam.format.video.xFramerate = 1966080 3500000
12-16 09:42:01.705: D/pv_avcenc_api(145): cml->cabacintIdc  0 cml->enablaCabac 0 cml->intraPicRate 30
12-16 09:42:01.705: D/pv_avcenc_api(145): init intraPeriodCnt 30
12-16 09:42:01.785: D/mali_winsys(3789): new_window_surface returns 0x3000
12-16 09:42:01.805: D/OpenGLRenderer(3789): Enabling debug mode 0
12-16 09:42:01.815: D/CameraHal(145): camera_get_camera_info(1288): camera_get_camera_info(1288): camera_0 facing(0), orientation(0)
12-16 09:42:01.815: D/CameraHal(145): camera_get_camera_info(1288): camera_get_camera_info(1288): camera_0 facing(0), orientation(0)
12-16 09:42:01.815: D/CameraHal(145): camera_get_camera_info(1288): camera_get_camera_info(1288): camera_0 facing(0), orientation(0)
12-16 09:42:01.815: D/MediaPlayerFactory(145): createPlayer:playerType=3
12-16 09:42:01.815: D/MediaPlayerFactory(145):  create StagefrightPlayer
12-16 09:42:01.825: I/AwesomePlayer(145): AwesomePlayer::AwesomePlayer()in
12-16 09:42:01.825: I/AwesomePlayer(145): AwesomePlayer::AwesomePlayer()aftermClient.connect()
12-16 09:42:01.825: I/FrameQueueManage(145): use_iommu = 0x1
12-16 09:42:01.825: I/AwesomePlayer(145): setDataSource /system/media/audio/ui/camera_click.ogg
12-16 09:42:01.825: I/AwesomePlayer(145): setDataSource_l(URL suppressed)
12-16 09:42:01.835: I/OMXCodec(145): OMXCodec::Create mime: audio/vorbis
12-16 09:42:01.835: I/OMXCodec(145): --->InstantiateSoftwareCodec create OMX.google.vorbis.decoder codec
12-16 09:42:01.835: I/OMXCodec(145): Attempting to allocate OMX node 'OMX.google.vorbis.decoder'
12-16 09:42:01.845: I/OMXCodec(145): Successfully allocated OMX node 'OMX.google.vorbis.decoder'
12-16 09:42:01.845: D/MediaPlayerFactory(145): createPlayer:playerType=3
12-16 09:42:01.845: D/MediaPlayerFactory(145):  create StagefrightPlayer
12-16 09:42:01.845: I/AwesomePlayer(145): AwesomePlayer::AwesomePlayer()in
12-16 09:42:01.845: I/AwesomePlayer(145): AwesomePlayer::AwesomePlayer()aftermClient.connect()
12-16 09:42:01.845: I/FrameQueueManage(145): use_iommu = 0x1
12-16 09:42:01.845: I/AwesomePlayer(145): setDataSource /system/media/audio/ui/VideoRecord.ogg
12-16 09:42:01.845: I/AwesomePlayer(145): setDataSource_l(URL suppressed)
12-16 09:42:01.855: I/OMXCodec(145): OMXCodec::Create mime: audio/vorbis
12-16 09:42:01.855: I/OMXCodec(145): --->InstantiateSoftwareCodec create OMX.google.vorbis.decoder codec
12-16 09:42:01.855: I/OMXCodec(145): Attempting to allocate OMX node 'OMX.google.vorbis.decoder'
12-16 09:42:01.855: I/OMXCodec(145): Successfully allocated OMX node 'OMX.google.vorbis.decoder'
12-16 09:42:01.865: I/CameraClient(145): Opening camera 0
12-16 09:42:01.865: I/CameraHal(145): camera_device_open(493): camera_device open
12-16 09:42:01.865: D/CameraHal(145): gCameraHalLogLevel: 0
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, open_vpu_memory_pool:447: success
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (80000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 63
12-16 09:42:01.865: D/CameraHal(145): CameraHal(113): it is a uvc camera!
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (160000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 67
12-16 09:42:01.865: D/(145): Calling process is: com.interfaces.androidencode
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (240000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 65
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (320000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 71
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (400000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 72
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (480000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 73
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (560000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 74
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (640000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 75
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (720000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 76
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:690: vpu memory pool size (800000)
12-16 09:42:01.865: I/vpu_mem_pool(145): pid 145, vpu_mem_allocator:693: ion_alloc_fd success, memory fd 77
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(364): Camera driver: uvcvideo   Driver version: 3.10.0  CameraHal version: 1.0.12
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(371): mCamDriverSupportFmt: fmt = 1196444237,index = 0
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(371): mCamDriverSupportFmt: fmt = 1448695129,index = 1
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(409): cameraCreate(409): mCamDriverPreviewFmt(MJPG) is cameraHal and camera driver is also supported!!
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(411): mCamDriverPreviewFmt  = 1196444237
12-16 09:42:01.945: D/CameraHal(145): cameraCreate(417): cameraCreate(417): Current driver is uvcvideo, v4l2 memory is V4L2_MEMORY_MMAP
12-16 09:42:02.015: E/CameraHal(145): initDefaultParameters(486): initDefaultParameters(486): mCamDriverCapability.card is error!
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(533): Support Preview format: yuv420sp,yuv420p .. yuv420sp
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(535): Support Preview sizes: 1280x720,640x480,320x240,800x600,1280x960     640x480
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(536): Support Preview FPS range: (25000,30000)
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(537): Support Preview framerate: 30,25
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(538): Support Picture sizes: 1280x720,640x480,320x240,800x600,1280x960
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(540): Support white balance: auto,incandescent,fluorescent,daylight,cloudy-daylight
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(548): Support focus: fixed  focus zone: 0
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(550): Support zoom: true(ratios: 100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,)
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(554): Support exposure: (-3 -> 3)
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(558): Support anti-banding: off,50hz,60hz,auto  anti-banding: off
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(560): Support hardware faces detecte: 0
12-16 09:42:02.015: D/CameraHal(145): initDefaultParameters(561): Support software faces detecte: 0
12-16 09:42:02.025: D/CameraHal(145): initDefaultParameters(562): Support video stabilization: false
12-16 09:42:02.025: D/CameraHal(145): initDefaultParameters(563): Support recording hint: false
12-16 09:42:02.935: D/CameraHal(145): cameraConfig(677): cameraConfig(677): Set framerate(30 fps) success
12-16 09:42:02.935: D/CameraHal(145): cameraConfig(720): cameraConfig(720): Set white balance(auto) success
12-16 09:42:02.955: D/CameraHal(145): cameraConfig(797): cameraConfig(797): Set anti-banding Disabled
12-16 09:42:02.965: D/CameraHal(145): cameraConfig(879): cameraConfig(879): Set exposure 0  0
12-16 09:42:02.995: D/CameraHal(145): setParameters(582): setParameters(582): Set preview size 1280x720
12-16 09:42:02.995: D/CameraHal(145): commandThread(870): commandThread(870):receive CMD_SET_PREVIEW_WINDOW
12-16 09:42:02.995: D/CameraHal(145): commandThread(886): commandThread(886): CMD_SET_PREVIEW_WINDOW out
12-16 09:42:02.995: D/CameraHal(145): commandThread(767): commandThread(767):receive CMD_PREVIEW_START
12-16 09:42:02.995: D/CameraHal(145): startPreview(171): startPreview171:preview_w = 1280,preview_h = 720,drv_w = 1280,drv_h = 720
12-16 09:42:03.005: D/CameraHal(145): cameraSetSize(466): cameraSetSize(466):IN, w = 1280,h = 720
12-16 09:42:03.005: I/Choreographer(3789): Skipped 76 frames!  The application may be doing too much work on its main thread.
12-16 09:42:03.085: D/CameraHal(145): cameraStream(488): cameraStream(488):on = 1
12-16 09:42:03.155: I/ActivityManager(483): Displayed com.interfaces.androidencode/.MainActivity: +1s600ms
12-16 09:42:03.155: D/CameraHal(145): startPreview(217): startPreview(217):OUT
12-16 09:42:03.155: D/CameraHal(145): displayThread(575): displayThread(575): receive CMD_DISPLAY_START
12-16 09:42:03.165: D/CameraHal(145): commandThread(838): commandThread(838): CMD_PREVIEW_START out
12-16 09:42:03.475: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.505: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.535: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.565: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.705: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.725: I/Pushhandler(2083): get uid = 1735870
12-16 09:42:03.735: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.735: I/Pushhandler(2083): send userID:1735870 LastmsgID:773 msgLen:108VersionCode:6.5.9.0Install Source:kwplayer_ar_6.5.9.0_360.apk
12-16 09:42:03.765: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.765: D/dalvikvm(2083): GC_FOR_ALLOC freed 654K, 20% free 2889K/3568K, paused 28ms, total 28ms
12-16 09:42:03.805: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.905: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.945: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:03.995: I/Pushhandler(2083): recve msgid:773 hasMsg:0 msgLen:20 servTime:Tue Dec 16 09:41:53 GMT+00:00 2014
12-16 09:42:04.005: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.015: I/Pushhandler(2083): Save push_lastMsgId value =773
12-16 09:42:04.105: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.175: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.205: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.315: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.355: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.385: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.515: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.555: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.585: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.625: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.685: D/StatusBar.NetworkController(565): refreshViews connected={ wifi } level=0 combinedSignalIconId=0x7f0200a9/com.android.systemui:drawable/stat_sys_wifi_signal_3_fully mobileLabel= wifiLabel="YKRH-office"xxxxXXXXxxxxXXXX emergencyOnly=false combinedLabel="YKRH-office"xxxxXXXXxxxxXXXX mAirplaneMode=false mDataActivity=0 mPhoneSignalIconId=0x0 mQSPhoneSignalIconId=0x0 mDataDirectionIconId=0x0 mDataSignalIconId=0x0 mDataTypeIconId=0x0 mQSDataTypeIconId=0x0 mWifiIconId=0x7f0200a9 mQSWifiIconId=0x7f02005d mBluetoothTetherIconId=0x10805d5
12-16 09:42:04.755: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.785: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.825: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.925: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.965: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:04.995: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.165: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.195: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.395: D/dalvikvm(3789): GC_FOR_ALLOC freed 198K, 4% free 6967K/7216K, paused 9ms, total 9ms
12-16 09:42:05.475: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.505: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.685: D/StatusBar.NetworkController(565): refreshViews connected={ wifi } level=0 combinedSignalIconId=0x7f0200a9/com.android.systemui:drawable/stat_sys_wifi_signal_3_fully mobileLabel= wifiLabel="YKRH-office"xxxxXXXXxxxxXXXX emergencyOnly=false combinedLabel="YKRH-office"xxxxXXXXxxxxXXXX mAirplaneMode=false mDataActivity=0 mPhoneSignalIconId=0x0 mQSPhoneSignalIconId=0x0 mDataDirectionIconId=0x0 mDataSignalIconId=0x0 mDataTypeIconId=0x0 mQSDataTypeIconId=0x0 mWifiIconId=0x7f0200a9 mQSWifiIconId=0x7f02005d mBluetoothTetherIconId=0x10805d5
12-16 09:42:05.705: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.835: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.915: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:05.945: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.045: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.325: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.355: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.385: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.565: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.765: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:06.805: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.075: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.135: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.275: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.305: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.475: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.515: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.545: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.685: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.715: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:07.755: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.025: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.125: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.395: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.435: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.465: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.805: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.845: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.875: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:08.905: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.045: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.075: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.115: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.145: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.285: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.325: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.355: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.525: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.795: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.825: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:09.965: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.035: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.225: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.275: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.305: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.435: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.475: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.545: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.645: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.675: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.745: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.885: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:10.985: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.225: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.245: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.295: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.525: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.665: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.705: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.735: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.865: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.905: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.935: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:11.975: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.115: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.145: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.175: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.345: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.575: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.795: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.925: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:12.955: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:13.015: D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR
12-16 09:42:13.025: I/AudioTrack(483): set() streamType 1 frameCount 0 flags 0004 channelMask 3 sampleRate 48000 format 1
12-16 09:42:13.025: I/AudioHardwareALSA(145): Audio exiting sandby will open audio device
12-16 09:42:13.045: I/ActivityManager(483): START u0 {act=com.android.systemui.recent.action.TOGGLE_RECENTS flg=0x10800000 cmp=com.android.systemui/.recent.RecentsActivity (has extras)} from pid 565
12-16 09:42:13.085: D/mali_winsys(565): new_window_surface returns 0x3000
12-16 09:42:13.105: I/ActivityManager(483): Displayed com.android.systemui/.recent.RecentsActivity: +60ms
12-16 09:42:13.105: D/CameraHal(145): commandThread(916): commandThread(916): receive CMD_PREVIEW_CAPTURE_CANCEL
12-16 09:42:13.105: D/CameraHal(145): commandThread(924): commandThread(924): CMD_PREVIEW_CAPTURE_CANCEL out
12-16 09:42:13.105: D/CameraHal(145): cancelPicture(523): cancel picture OK.
12-16 09:42:13.105: D/CameraHal(145): commandThread(844): commandThread(844):receive CMD_PREVIEW_STOP
12-16 09:42:13.105: D/CameraHal(145): displayThread(587): displayThread(587): receive CMD_DISPLAY_PAUSE
12-16 09:42:13.115: D/CameraHal(145): stopPreview(229): stopPreview(229):IN
12-16 09:42:13.115: D/CameraHal(145): cameraStream(488): cameraStream(488):on = 0
12-16 09:42:13.125: V/ALSAModule(145): SAMPLERATE:44100
12-16 09:42:13.125: D/ALSAModule(145): open called for devices 00000400 in mode 0...
12-16 09:42:13.125: D/ALSAModule(145): DevName: AndroidPlayback_Aux_normal
12-16 09:42:13.125: E/ALSAModule(145): buffersize: 6144, periodsize:2048
12-16 09:42:13.125: V/ALSAModule(145): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
12-16 09:42:13.125: V/ALSAModule(145): Using 2 channels for PLAYBACK.
12-16 09:42:13.125: V/ALSAModule(145): Set PLAYBACK sample rate to 44100 HZ
12-16 09:42:13.125: E/ALSAModule(145): audio type flag: 0
12-16 09:42:13.125: V/ALSAModule(145): Buffer size: 6144(frames)  period Size: 2048(frames)  periods: 3 (buffersize=periodSize*periods)
12-16 09:42:13.125: V/ALSAModule(145): Latency: 139319   periodTime: 46439
12-16 09:42:13.185: D/ALSAModule(145): DumpHandleInfo:
12-16 09:42:13.185: D/ALSAModule(145): devices: 0xbfff
12-16 09:42:13.185: D/ALSAModule(145): format: 0x2
12-16 09:42:13.185: D/ALSAModule(145): channels: 2
12-16 09:42:13.185: D/ALSAModule(145): sampleRate: 44100
12-16 09:42:13.185: D/ALSAModule(145): latency: 139319
12-16 09:42:13.185: D/ALSAModule(145): periodSize:2048
12-16 09:42:13.185: D/ALSAModule(145): bufferSize:6144
12-16 09:42:13.185: V/ALSAModule(145): SAMPLERATE:44100
12-16 09:42:13.185: D/ALSAModule(145): open called for devices 00000800 in mode 0...
12-16 09:42:13.185: D/ALSAModule(145): DevName: AndroidPlayback_Spdif_normal
12-16 09:42:13.185: E/ALSAModule(145): buffersize: 6144, periodsize:2048
12-16 09:42:13.185: V/ALSAModule(145): Set PLAYBACK PCM format to S16_LE (Signed 16 bit Little Endian)
12-16 09:42:13.185: V/ALSAModule(145): Using 2 channels for PLAYBACK.
12-16 09:42:13.185: V/ALSAModule(145): Set PLAYBACK sample rate to 44100 HZ
12-16 09:42:13.185: E/ALSAModule(145): audio type flag: 0
12-16 09:42:13.185: V/ALSAModule(145): Buffer size: 6144(frames)  period Size: 2048(frames)  periods: 3 (buffersize=periodSize*periods)
12-16 09:42:13.185: V/ALSAModule(145): Latency: 139319   periodTime: 46439
12-16 09:42:13.185: D/ALSAModule(145): DumpHandleInfo:
12-16 09:42:13.185: D/ALSAModule(145): devices: 0xbfff
12-16 09:42:13.185: D/ALSAModule(145): format: 0x2
12-16 09:42:13.185: D/ALSAModule(145): channels: 2
12-16 09:42:13.185: D/ALSAModule(145): sampleRate: 44100
12-16 09:42:13.185: D/ALSAModule(145): latency: 139319
12-16 09:42:13.185: D/ALSAModule(145): periodSize:2048
12-16 09:42:13.185: D/ALSAModule(145): bufferSize:6144
12-16 09:42:13.275: D/CameraHal(145): stopPreview(249): stopPreview(249):OUT
12-16 09:42:13.275: D/CameraHal(145): commandThread(865): commandThread(865): CMD_PREVIEW_STOP out
12-16 09:42:13.275: D/CameraHal(145): stopPreview(324): stop preview OK.
12-16 09:42:13.275: D/CameraHal(145): commandThread(916): commandThread(916): receive CMD_PREVIEW_CAPTURE_CANCEL
12-16 09:42:13.275: D/CameraHal(145): commandThread(924): commandThread(924): CMD_PREVIEW_CAPTURE_CANCEL out
12-16 09:42:13.275: D/CameraHal(145): cancelPicture(523): cancel picture OK.
12-16 09:42:13.275: D/CameraHal(145): commandThread(844): commandThread(844):receive CMD_PREVIEW_STOP
12-16 09:42:13.275: D/CameraHal(145): stopPreview(229): stopPreview(229):IN
12-16 09:42:13.285: D/CameraHal(145): stopPreview(249): stopPreview(249):OUT
12-16 09:42:13.285: D/CameraHal(145): stopPreview(324): stop preview OK.
12-16 09:42:13.285: D/CameraHal(145): commandThread(865): commandThread(865): CMD_PREVIEW_STOP out
12-16 09:42:13.285: D/CameraHal(145): commandThread(870): commandThread(870):receive CMD_SET_PREVIEW_WINDOW
12-16 09:42:13.285: D/CameraHal(145): pauseDisplay(148): pauseDisplay(148): display thread is already stop
12-16 09:42:13.285: D/CameraHal(145): commandThread(886): commandThread(886): CMD_SET_PREVIEW_WINDOW out
12-16 09:42:13.285: I/CameraClient(145): Destroying camera 0
12-16 09:42:13.285: D/CameraHal(145): camera_device_close(444): camera_device_close
12-16 09:42:13.285: D/CameraHal(145): displayThread(599): displayThread(599): receive CMD_DISPLAY_STOP
12-16 09:42:13.285: D/CameraHal(145): cameraDisplayBufferDestory(376): cameraDisplayBufferDestory(376): mANativeWindow is NULL, destory is ignore
12-16 09:42:13.285: D/CameraHal(145): encProcessThread(1204): encProcessThread(1204): receive CMD_ENCPROCESS_EXIT
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (720000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (640000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (560000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (480000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (400000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (320000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (240000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (160000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (80000)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:475: vpu memory pool size (0)
12-16 09:42:13.295: I/vpu_mem_pool(145): pid 145, close_vpu_memory_pool:526:
12-16 09:42:13.295: D/CameraHal(145): autofocusThread(812): wait out
12-16 09:42:13.295: D/CameraHal(145): commandThread(1017): commandThread(1017): receive CMD_EXIT
12-16 09:42:13.295: D/CameraHal(145): ~CameraHal(255): CameraHal destory success

楼主用的是什么摄像头啊?

linjc 发表于 2014-12-16 16:45
楼主用的是什么摄像头啊?

我们买的摄像头模组,里面的camera sensor是镁光AR0130的。用我们之前的RK3066的板子获取视频没问题。

yaolunlun 发表于 2014-12-16 17:46
我们买的摄像头模组,里面的camera sensor是镁光AR0130的。用我们之前的RK3066的板子获取视频没问题。

试过罗技的C170和C930,没有楼主说的问题哦{:3_58:}
USB摄像头的型号用的是什么?

zhansb 发表于 2014-12-17 16:49
试过罗技的C170和C930,没有楼主说的问题哦
USB摄像头的型号用的是什么?

没权限发URL链接呢,用的锐尔威视的130万像素USB模组,产品型号USB130WO1MT
!(http://www.rervision.cn/images/P{SB}T`Z\)2%60LA@EAY_%7D(B0D.png)

楼主的花屏是什么现象,是录像变成全绿色吗?

楼主在录像时切换一下录像的分辨率,看看其他分辨率录像会不会花屏。

bunchen 发表于 2014-12-18 16:03
楼主在录像时切换一下录像的分辨率,看看其他分辨率录像会不会花屏。

支持的其他分辨率(640x480等)都试过了,都是花屏(图像横向交错,能大概看到视频轮廓)。
另外发现,我在用自带的程序Camera,拍照时,拍出来的是全绿色,再次点击拍照,系统就会崩溃重启!

本帖最后由 yaolunlun 于 2014-12-19 17:54 编辑

bunchen 发表于 2014-12-18 16:03
楼主在录像时切换一下录像的分辨率,看看其他分辨率录像会不会花屏。

好像是在jpeg硬解码时出的问题:

D/jpeghw(145): TB: jpeg API returned : JPEGDEC_STRM_ERROR

下面是摄像头输出的原始jpeg图像(从CameraHal获取frame后得到),麻烦工程师分析一下,是不是格式不对?还是jpeghw库兼容问题?

yaolunlun 发表于 2014-12-19 14:58
支持的其他分辨率(640x480等)都试过了,都是花屏(图像横向交错,能大概看到视频轮廓)。
另外发现, …

看来跟分辨率没关系,我觉得应该跟数据的frame format 像素格式有关。楼主可以试一下这里:
hardware/rk29/camera/CameraHal/CameraUSBAdapter.cpp

//define  the frame info ,such as w, h ,fmt
int CameraUSBAdapter::reprocessFrame(FramInfo_s* frame)
{
    int ret = 0;
    //  usb camera may do something
   	#if (IOMMU_ENABLED == 1)
    int phy_addr = mPreviewBufProvider->getBufShareFd(frame->frame_index);
    #else
    int phy_addr = mPreviewBufProvider->getBufPhyAddr(frame->frame_index);
    #endif
    if( frame->frame_fmt == V4L2_PIX_FMT_MJPEG){
    	   char *srcbuf = frame->vir_addr;
    	   if((srcbuf[0] == 0xff) && (srcbuf[1] == 0xd8) && (srcbuf[2] == 0xff)){
        //decoder to NV12
        VPU_FRAME outbuf;
        unsigned int output_len;
        unsigned int input_len;
        output_len = 0;
        input_len = frame->frame_size;

        ret = mMjpegDecoder.decode(mMjpegDecoder.decoder,
                                    (unsigned char*)&outbuf, &output_len,
    		                          (unsigned char*)frame->vir_addr, &input_len,
    		                          phy_addr);
        if (ret < 0){
            LOGE("%s(%d): mjpeg stream is error!",__FUNCTION__,__LINE__);
	        }
	    }else{
	    		LOGE("mjpeg data error!!");
	    		return -1;
        }
    }else if(frame->frame_fmt == V4L2_PIX_FMT_YUYV){

        ret = cameraFormatConvert(V4L2_PIX_FMT_YUYV, V4L2_PIX_FMT_NV12, NULL,
							 (char*)frame->vir_addr, (char*)mPreviewBufProvider->getBufVirAddr(frame->frame_index),
							 0,0,frame->frame_size,
							 frame->frame_width, frame->frame_height, frame->frame_width,
							 frame->frame_width, frame->frame_height, frame->frame_width,
							 false);
        if (ret < 0){
            LOGE("%s(%d): yuyv convert to nv12 error!",__FUNCTION__,__LINE__);
        }

    }else{
        LOGE("camerahal not support this format %d",frame->frame_fmt);
        ret =  -1;
    }

    frame->frame_fmt = V4L2_PIX_FMT_NV12;
    frame->phy_addr = phy_addr;
    frame->vir_addr = mPreviewBufProvider->getBufVirAddr(frame->frame_index);
    frame->zoom_value = mZoomVal;

	int w,h;
	w = frame->frame_width;
	h = frame->frame_height;
	if((w&0x0f) || (h&0x0f)){
		char *buf = malloc(w*h*3/2);
		if(buf != NULL){
			memcpy(buf,frame->vir_addr,w*h);
			memcpy(buf+w*h,frame->vir_addr+((w+15)&0xfff0)*((h+15)&0xfff0), w*h/2);
			memcpy(frame->vir_addr,buf,w*h*3/2);
			free(buf);
		}
	}

    //do zoom here?
    return ret;

}

这个函数里面好像要处理不同的像素格式的。

yaolunlun 发表于 2014-12-19 14:58
支持的其他分辨率(640x480等)都试过了,都是花屏(图像横向交错,能大概看到视频轮廓)。
另外发现, …

看来跟分辨率没关系,我觉得应该跟数据的frame format 像素格式有关。楼主可以试一下这里:
hardware/rk29/camera/CameraHal/CameraUSBAdapter.cpp

//define  the frame info ,such as w, h ,fmt
int CameraUSBAdapter::reprocessFrame(FramInfo_s* frame)
{
    int ret = 0;
    //  usb camera may do something
   	#if (IOMMU_ENABLED == 1)
    int phy_addr = mPreviewBufProvider->getBufShareFd(frame->frame_index);
    #else
    int phy_addr = mPreviewBufProvider->getBufPhyAddr(frame->frame_index);
    #endif
    if( frame->frame_fmt == V4L2_PIX_FMT_MJPEG){
    	   char *srcbuf = frame->vir_addr;
    	   if((srcbuf[0] == 0xff) && (srcbuf[1] == 0xd8) && (srcbuf[2] == 0xff)){
        //decoder to NV12
        VPU_FRAME outbuf;
        unsigned int output_len;
        unsigned int input_len;
        output_len = 0;
        input_len = frame->frame_size;

        ret = mMjpegDecoder.decode(mMjpegDecoder.decoder,
                                    (unsigned char*)&outbuf, &output_len,
    		                          (unsigned char*)frame->vir_addr, &input_len,
    		                          phy_addr);
        if (ret < 0){
            LOGE("%s(%d): mjpeg stream is error!",__FUNCTION__,__LINE__);
	        }
	    }else{
	    		LOGE("mjpeg data error!!");
	    		return -1;
        }
    }else if(frame->frame_fmt == V4L2_PIX_FMT_YUYV){

        ret = cameraFormatConvert(V4L2_PIX_FMT_YUYV, V4L2_PIX_FMT_NV12, NULL,
							 (char*)frame->vir_addr, (char*)mPreviewBufProvider->getBufVirAddr(frame->frame_index),
							 0,0,frame->frame_size,
							 frame->frame_width, frame->frame_height, frame->frame_width,
							 frame->frame_width, frame->frame_height, frame->frame_width,
							 false);
        if (ret < 0){
            LOGE("%s(%d): yuyv convert to nv12 error!",__FUNCTION__,__LINE__);
        }

    }else{
        LOGE("camerahal not support this format %d",frame->frame_fmt);
        ret =  -1;
    }

    frame->frame_fmt = V4L2_PIX_FMT_NV12;
    frame->phy_addr = phy_addr;
    frame->vir_addr = mPreviewBufProvider->getBufVirAddr(frame->frame_index);
    frame->zoom_value = mZoomVal;

	int w,h;
	w = frame->frame_width;
	h = frame->frame_height;
	if((w&0x0f) || (h&0x0f)){
		char *buf = malloc(w*h*3/2);
		if(buf != NULL){
			memcpy(buf,frame->vir_addr,w*h);
			memcpy(buf+w*h,frame->vir_addr+((w+15)&0xfff0)*((h+15)&0xfff0), w*h/2);
			memcpy(frame->vir_addr,buf,w*h*3/2);
			free(buf);
		}
	}

    //do zoom here?
    return ret;

}

这个函数里面好像要处理不同的像素格式的。

本帖最后由 yaolunlun 于 2014-12-22 14:46 编辑

bunchen 发表于 2014-12-20 11:35
看来跟分辨率没关系,我觉得应该跟数据的frame format 像素格式有关。楼主可以试一下这里:
hardware/rk …

谢谢你的帮忙。这些都仔细看过了,也做了一些测试。
现在深度怀疑是VPU库硬解jpeg的兼容问题,麻烦版主能确认一下!

zhansb 发表于 2014-12-17 16:49
试过罗技的C170和C930,没有楼主说的问题哦
USB摄像头的型号用的是什么?

请问,你们能提供VPU库的源码吗?或者你们是否能支持我这种摄像头jpeg编码格式?

yaolunlun 发表于 2014-12-23 09:25
请问,你们能提供VPU库的源码吗?或者你们是否能支持我这种摄像头jpeg编码格式?

VPU库是系统中很重要的库,rk平台并不希望我们擅自修改而产生其他问题,所以rk平台并未对VPU库开源。建议楼主在传数据给VPU硬解前先适当处理一下数据。

我最后通过libjpeg把摄像头输出的格式转换成JFIF格式后,能正常显示视频了。但是效率不好。这不是解决问题的根本办法。
还是希望能改进VPU库!:Q