Hi All,
I am trying to run encoding/decoding from sample qcom_video_codec_sample_1_3_1. I followed steps mentioned in openmax_encoder_decoder.pdf using gingerbread version. I am using APQ8x60 chipset.
When i tryied to encode samplefiles, got following Logcat.
E/ ( 478): QCOMOMXINTERFACE: QUERY FOR OMX COMPONENT: OMX.qcom.video.encoder.avc
E/ ( 478): QCOMOMXINTERFACE: LIST NODES
E/ ( 478): QCOMOMXINTERFACE - OBSERVER IS SET!
E/OMX-VENC-720p( 117):
E/OMX-VENC-720p( 117): omx_video(): Inside Constructor()
E/OMX-VENC-720p( 117):
E/OMX-VENC-720p( 117): omx_venc(): Inside component_init()
E/OMX-VENC-720p( 117): ERROR: Omx_venc::Comp Init Returning failure
E/OMX-VENC-720p( 117):
E/OMX-VENC-720p( 117): ERROR: venc_open failed
E/OMX-VENC-720p( 117):
E/OMX-VENC-720p( 117): ~omx_video(): Inside Destructor()
E/OMX-VENC-720p( 117): omx_video: Waiting on Msg Thread exit
E/OMX-VENC-720p( 117): omx_video: Waiting on Async Thread exit
E/OMX-VENC-720p( 117):
E/OMX-VENC-720p( 117): m_etb_count = 0, m_fbd_count = 0
E/OMX-VENC-720p( 117): omx_video: Destructor exit
E/OMX-VENC-720p( 117): Exiting 7x30 OMX Video Encoder ...
E/ ( 478): QCOMOMXINTERFACE - Could not allocate node: OMX.qcom.video.encoder.avc -- error -2147483648
E/ ( 478): QCOMOMXINTERFACE - ERROR creating encoder: 4 (Could not Allocate OpenMax Component)
E/ ( 478): Could not Allocate OpenMax Component
Even i can see my encoder/decoder entried in /dev files as:
crw-rw---- system audio 245, 0 1970-01-01 00:00 msm_vidc_dec
crw-rw---- system audio 244, 0 1970-01-01 00:00 msm_vidc_enc
Any suggestions to overcome this issue?
Ashish
Hi Ashish,
Looks like the component is not present somehow. Which device are you running on? I noticed you said APQ8x60 chipset, is this a DragonBoard?
Hi Ashish, we will attempt to replicate the behavior in-house and will report back
Hi Steve,
Me and Ashish are doing this activity together. This is what we did:
# /data/data/qcom_omx_sample -e /sdcard/sample.176x144.yuv /sdcard/sample.dat 176 144
Hardware version: 8x60
Encoding /sdcard/sample.176x144.yuv to /sdcard/sample.dat
Script Result: Could not Allocate OpenMax Component
logcat Ashish has already mentioned.
And the output of dmesg is: (i guess this may help a bit)
# dmesg
<6>[ 72.951030] msm_vidc_enc: Inside vid_enc_open()
<4>[ 72.951060]
<4>[ 72.951067] res_trk_download_firmware(): Request firmware download
<3>[ 72.955431]
<3>[ 72.955441] err: request_firmware for vidc_1080p.fw error -2
I have a doubt:
I have put the sample application to the device but not any of the shared library it generated. Do we need to put the shared library too somewhere in the device's filesystem?
Hi Steve,
Thanks for extending your cooporation.
Do you have updates on the issue?
Regard's,
Ashish
Steps we followed to build the Android. We get a package from BSquare containing two scripts: "getSources.sh" and "build.sh".
First i executed "getSources.sh" and then "build.sh".
Below is the content of "getSources.sh".
## This script is designed to be run from the same directory containing versioned.xml. Please see readme.txt for more information.
wget https://www.codeaurora.org/patches/quic/la/PATCH_APQ8060_8993_Dragonboar...
tar -xzvf PATCH_APQ8060_8993_Dragonboard_required_modifications_20111103.tar.gz
#Define base directory
export ROOT_DIR=`pwd`
mkdir 8060_v3
cd 8060_v3
repo init --repo-url=git://codeaurora.org/tools/repo.git -u git://codeaurora.org/platform/manifest.git -b gingerbread
rm -rf .repo/manifest.xml
cp ../versioned.xml .repo/manifest.xml
repo sync kernel/msm -j4
source build/envsetup.sh
choosecombo 1 1 msm8660_surf eng
repo start work --all
croot
cd hardware/alsa_sound
git am --ignore-whitespace $ROOT_DIR/patches/hardware/alsa_sound/*.patch
croot
cd hardware/msm7k
git am --ignore-whitespace $ROOT_DIR/patches/hardware/msm7k/*.patch
croot
cd bootable/bootloader/lk/
git am --ignore-whitespace $ROOT_DIR/patches/bootloader/bootable/lk/*.patch
croot
cd device/qcom/msm8660_surf
git am --ignore-whitespace $ROOT_DIR/patches/device/qcom/msm8660_surf/*.patch
croot
cd kernel
git am --ignore-whitespace $ROOT_DIR/patches/kernel/*.patch
# Get patch to resolve camera issue
wget https://www.codeaurora.org/patches/quic/la/PATCH_MSM8660_8230_Dragonboar...
tar -xzvf PATCH_MSM8660_8230_Dragonboard_required_modifications_20110928.tar.gz
git am patches/local/kernel/0022-board-msm8x60-change-Ov9726-settle_cnt-to-support-th.patch
rm -rf patches/ PATCH_MSM8660_8230_Dragonboard_required_modifications
croot
cp ../build.sh .
chmod a+x build.sh
echo Your source tree now exists in 8060_v3 directory.
echo Change into 8060_v3 and issue \"./build.sh\" to build.
Below are the contents of "build.sh"
# This script will set up required environment variables and initiate a build.
source build/envsetup.sh
choosecombo 1 1 msm8660_surf eng
# Build and capture the log. The "-j4" argument may be changed based on your
# computer. Please refer to http://source.android.com/source/building.html for
# further information.
make -j4 2>&1 | tee build.log
After executing these scripts i got the binaries which i flashed into the Dragonboard.
Then, i added the sample codec and pushed .so files in /system/lib and command line executable in /data/data
Hi Steve,
As observed from the dmesg the issue is related with the firmware.
# dmesg
<6>[ 72.951030] msm_vidc_enc: Inside vid_enc_open()
<4>[ 72.951060]
<4>[ 72.951067] res_trk_download_firmware(): Request firmware download
<3>[ 72.955431]
<3>[ 72.955441] err: request_firmware for vidc_1080p.fw error -2
I think the error is occuring due to absence of firmware "vidc_1080p.fw". This firmware is not present in the filesystem, i checked. Can you tell me if we have to make some changes in our build steps so that the we can generate "vidc_1080p.fw".
Can you check to see if the camcorder video record feature is working? This would be tied to the same feature set. In standard releases the Camcorder should work, unless this is a different set of device images that is being loaded.
The FastRPC overhead can be more than 10ms on my snapdragon 800 development tablet, not the '1ms' claims in the Hexagon SDK doc.
Is this normal? Need help, thank you.
And according to the SDK doc, the out and inout parameters in QAIC IDL are not supported now. I have a question is the rout parameter able to carry input data from CPU to DSP? for example:
interface {
long process(rout sequence<octect> buffer);
};
Can I pass a data buffer to it, then modify on the DSP side, at last get the modified results on the CPU side?
I tested this, it do pass the data into DSP, and get modified results, but I am not sure it is guaranteed.
Thank you!
Sorry, the overhead of RPC claims in the SDK doc should be correct, the '10ms' I said includes the overhead of dynamic loading.