我已经实现了在DM365端的JPG旋转(0, 90, 180,360),能工作正常
DM365 / MV5.0 / linux-davinci-2.6.18 / dvsdk_2_10_01_18
主要代码参考了DVSDK的Test IJPEGENC_DynamicParams jpeg_extDynParams;
+++ b/stream_capture/framework/alg/src/alg_jpgEnc.c
@@ -12,6 +12,8 @@
* =========================================================================== */
#include <alg_priv.h>
#include <alg_jpgEnc.h>
+#include <ti/sdo/codecs/jpegenc/ijpegenc.h>
+
typedef struct {
IMGENC1_Handle hEncode;
@@ -167,6 +169,39 @@ int ALG_jpgEncSetQvalue(void *hndl, int qValue)
return OSA_SOK;
}
+int ALG_jpgEncSetRotation(void *hndl, Uint16 rotation)
+{
+ ALG_JpgEncObj *pObj = (ALG_JpgEncObj*)hndl;
+ XDAS_Int32 status;
+ IJPEGENC_DynamicParams jpeg_extDynParams;
+
+ if(pObj == NULL)
+ {
+ return OSA_EFAIL;
+ }
+
+ memcpy(&(jpeg_extDynParams.imgencDynamicParams), &(pObj->dynamicParams),
+ sizeof(IMGENC1_DynamicParams));
+ /* Set other external DynParams*/
+ jpeg_extDynParams.imgencDynamicParams.size = sizeof(IJPEGENC_DynamicParams);/* it is very important */
+ jpeg_extDynParams.rotation = rotation;
+ jpeg_extDynParams.rstInterval = 84;
+ jpeg_extDynParams.disableEOI = XDM_DEFAULT;
+ jpeg_extDynParams.customQ = NULL;
+ pObj->encStatus.size = sizeof(pObj->encStatus);
+ pObj->encStatus.data.buf = NULL;
+
+ status = IMGENC1_control(pObj->hEncode, XDM_SETPARAMS, (IMGENC1_DynamicParams*)(&jpeg_extDynParams),
+ &pObj->encStatus);
+ if (status != IMGENC1_EOK) {
+ g_warning("%s XDM_SETPARAMS failed, status=%ld\n", status);
+ return OSA_EFAIL;
+ }
+
+ return OSA_SOK;
+}
现在想在DM368上实现,主要信息如下
DM368 / CodeSourcery / Linux2.6.32 / ti-dvsdk_dm368-evm_4_02_00_06
1) 按照DM365上的方法,发现编译后的av_server.out无法正常运行, 被Block在 ALG_jpgEncRum()
2) 想测试 ti-dvsdk_dm368-evm_4_02_00_06的Test jpgenc-r,发现无法正常编译
From e2e发现如下的解释
These individual codec test applications are not buildable within a DVSDK 3.xx or 4.xx. They are used for module testing under a different tool chain.
请教下,该如何调试JPG Rotation功能,有替代的 jpgenc-r可供测试吗
谢谢