[jpegd]: handle special stream and eos in parser_prepare and format source code with mpp_astyle.sh in Linux Server.

git-svn-id: https://10.10.10.66:8443/svn/MediaProcessPlatform/trunk/mpp@1102 6e48237b-75ef-9749-8fc9-41990f28c85a
This commit is contained in:
HuangTingjin
2016-07-27 02:57:06 +00:00
parent 16b22667c6
commit 448771db51
7 changed files with 4466 additions and 4418 deletions

View File

@@ -246,9 +246,9 @@ JpegDecRet jpegd_set_yuv_mode(JpegSyntaxParam *pSyntax)
}
}
/* JPEG_YCBCR422 */
else if(pSyntax->frame.component[0].H == 2 && pSyntax->frame.component[0].V == 1 &&
else if (pSyntax->frame.component[0].H == 2 && pSyntax->frame.component[0].V == 1 &&
pSyntax->frame.component[1].H == 1 && pSyntax->frame.component[1].V == 1 &&
pSyntax->frame.component[2].H == 1 && pSyntax->frame.component[2].V == 1){
pSyntax->frame.component[2].H == 1 && pSyntax->frame.component[2].V == 1) {
JPEGD_INFO_LOG("YCbCr Format: YUV422(%d*%d:%d*%d:%d*%d)",
pSyntax->frame.component[0].H, pSyntax->frame.component[0].V,
pSyntax->frame.component[1].H, pSyntax->frame.component[1].V,
@@ -348,7 +348,7 @@ JpegDecRet jpegd_set_yuv_mode(JpegSyntaxParam *pSyntax)
pSyntax->image.sizeChroma = pSyntax->image.sizeLuma / 2;
}
} else {
JPEGD_ERROR_LOG("Unsupported YCbCr Format: (%d*%d:%d*%d:%d*%d)",pSyntax->frame.component[0].H, pSyntax->frame.component[0].V,
JPEGD_ERROR_LOG("Unsupported YCbCr Format: (%d*%d:%d*%d:%d*%d)", pSyntax->frame.component[0].H, pSyntax->frame.component[0].V,
pSyntax->frame.component[1].H, pSyntax->frame.component[1].V,
pSyntax->frame.component[2].H, pSyntax->frame.component[2].V);
return (JPEGDEC_UNSUPPORTED);
@@ -396,7 +396,7 @@ JpegDecRet jpegd_decode_frame_header(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -577,7 +577,7 @@ JpegDecRet jpegd_decode_scan_header(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -591,7 +591,7 @@ JpegDecRet jpegd_decode_scan_header(JpegParserContext *ctx)
pSyntax->scan.Ls = jpegd_get_two_bytes(pStream);
/* check if there is enough data */
if (((pStream->readBits / 8) + pSyntax->scan.Ls) > pStream->streamLength){
if (((pStream->readBits / 8) + pSyntax->scan.Ls) > pStream->streamLength) {
JPEGD_ERROR_LOG("no enough data");
return (JPEGDEC_STRM_ERROR);
}
@@ -764,7 +764,7 @@ JpegDecRet jpegd_decode_scan(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -788,7 +788,7 @@ JpegDecRet jpegd_decode_huffman_tables(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -801,7 +801,7 @@ JpegDecRet jpegd_decode_huffman_tables(JpegParserContext *ctx)
pSyntax->vlc.Lh = jpegd_get_two_bytes(pStream);
/* check if there is enough data for tables */
if (((pStream->readBits / 8) + pSyntax->vlc.Lh) > pStream->streamLength){
if (((pStream->readBits / 8) + pSyntax->vlc.Lh) > pStream->streamLength) {
JPEGD_ERROR_LOG("no enough data for tables");
return (JPEGDEC_STRM_ERROR);
}
@@ -922,7 +922,7 @@ JpegDecRet jpegd_decode_quant_tables(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -934,7 +934,7 @@ JpegDecRet jpegd_decode_quant_tables(JpegParserContext *ctx)
pSyntax->quant.Lq = jpegd_get_two_bytes(pStream);
/* check if there is enough data for tables */
if (((pStream->readBits / 8) + pSyntax->quant.Lq) > pStream->streamLength){
if (((pStream->readBits / 8) + pSyntax->quant.Lq) > pStream->streamLength) {
JPEGD_ERROR_LOG("no enough data for tables");
return (JPEGDEC_STRM_ERROR);
}
@@ -991,6 +991,72 @@ JpegDecRet jpegd_default_huffman_tables(JpegParserContext *ctx)
return MPP_OK;
}
MPP_RET jpegd_parser_split_frame(RK_U8 *src, RK_U32 src_size, RK_U8 *dst, RK_U32 *dst_size)
{
FUN_TEST("Enter");
MPP_RET ret = MPP_OK;
if (NULL == src || NULL == dst || src_size <= 0) {
JPEGD_ERROR_LOG("NULL pointer or wrong src_size(%d)", src_size);
return MPP_ERR_NULL_PTR;
}
RK_U8 *end;
RK_U8 *tmp;
RK_U32 str_size = (src_size + 255) & (~255);
end = dst + src_size;
if (src[6] == 0x41 && src[7] == 0x56 && src[8] == 0x49 && src[9] == 0x31) {
//distinguish 310 from 210 camera
RK_U32 i;
RK_U32 copy_len = 0;
tmp = src;
JPEGD_INFO_LOG("distinguish 310 from 210 camera");
for (i = 0; i < src_size - 4; i++) {
if (tmp[i] == 0xff) {
if (tmp[i + 1] == 0x00 && tmp[i + 2] == 0xff && ((tmp[i + 3] & 0xf0) == 0xd0))
i += 2;
}
*dst++ = tmp[i];
copy_len++;
}
for (; i < src_size; i++) {
*dst++ = tmp[i];
copy_len++;
}
if (copy_len < src_size)
memset(dst, 0, src_size - copy_len);
*dst_size = copy_len;
} else {
memcpy(dst, src, src_size);
memset(dst + src_size, 0, str_size - src_size);
*dst_size = src_size;
}
/* NOTE: hardware bug, need to remove tailing FF 00 before FF D9 end flag */
if (end[-1] == 0xD9 && end[-2] == 0xFF) {
end -= 2;
do {
if (end[-1] == 0xFF) {
end--;
continue;
}
if (end[-1] == 0x00 && end [-2] == 0xFF) {
end -= 2;
continue;
}
break;
} while (1);
JPEGD_INFO_LOG("remove tailing FF 00 before FF D9 end flag.");
end[0] = 0xff;
end[1] = 0xD9;
}
FUN_TEST("Exit");
return ret;
}
MPP_RET jpegd_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
{
FUN_TEST("Enter");
@@ -998,21 +1064,34 @@ MPP_RET jpegd_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
JpegParserContext *JpegParserCtx = (JpegParserContext *)ctx;
MppPacket input_packet = JpegParserCtx->input_packet;
RK_U32 pkt_length = 0;
RK_U32 copy_length = 0;
void *pPacket = NULL;
void *pPos = NULL;
task->valid = 0;
JpegParserCtx->pts = mpp_packet_get_pts(pkt);
JpegParserCtx->eos = mpp_packet_get_eos(pkt);
pkt_length = mpp_packet_get_length(pkt);
pPacket = pPos = mpp_packet_get_pos(pkt);
memcpy(JpegParserCtx->recv_buffer, pPacket, pkt_length);
if (JpegParserCtx->eos) {
JPEGD_INFO_LOG("it is end of stream.");
task->flags.eos = 1;
return ret;
}
jpegd_parser_split_frame(pPacket, pkt_length, JpegParserCtx->recv_buffer, &copy_length);
pPos += pkt_length;
mpp_packet_set_pos(pkt, pPos);
if (copy_length != pkt_length) {
JPEGD_INFO_LOG("there seems to be something wrong with split_frame. pkt_length:%d, copy_length:%d", pkt_length, copy_length);
}
/* debug information */
if(JpegParserCtx->parser_debug_enable && JpegParserCtx->input_jpeg_count < 3)
{
if (JpegParserCtx->parser_debug_enable && JpegParserCtx->input_jpeg_count < 3) {
static FILE *jpg_file;
static char name[32];
@@ -1044,13 +1123,13 @@ MPP_RET jpegd_prepare(void *ctx, MppPacket pkt, HalDecTask *task)
MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStream)
{
FUN_TEST("Enter");
if(NULL == ctx || NULL == pStream){
if (NULL == ctx || NULL == pStream) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
JpegParserContext *pCtx = ctx;
JpegDecImageInfo *pImageInfo = (JpegDecImageInfo *) &(pCtx->imageInfo);
JpegDecImageInfo *pImageInfo = (JpegDecImageInfo *) & (pCtx->imageInfo);
JpegSyntaxParam *pSyntax = pCtx->pSyntax;
RK_U32 Nf = 0, Ns = 0, NsThumb = 0;
RK_U32 i, j = 0, init = 0, initThumb = 0;
@@ -1072,20 +1151,18 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
/* Read decoding parameters */
for (pStream->readBits = 0; (pStream->readBits / 8) < pStream->streamLength; pStream->readBits++)
{
for (pStream->readBits = 0; (pStream->readBits / 8) < pStream->streamLength; pStream->readBits++) {
/* Look for marker prefix byte from stream */
if ((currentByte == 0xFF) || jpegd_get_byte(pStream) == 0xFF) {
currentByte = jpegd_get_byte(pStream);
switch (currentByte) { /* switch to certain header decoding */
case SOF0: /* baseline marker */
case SOF2: /* progresive marker */
{
JPEGD_VERBOSE_LOG("SOF, currentByte:0x%x",currentByte);
if (currentByte == SOF0){
case SOF2: { /* progresive marker */
JPEGD_VERBOSE_LOG("SOF, currentByte:0x%x", currentByte);
if (currentByte == SOF0) {
pImageInfo->codingMode = pSyntax->info.operationType = JPEGDEC_BASELINE;
}else{
} else {
pImageInfo->codingMode = pSyntax->info.operationType = JPEGDEC_PROGRESSIVE;
}
@@ -1139,7 +1216,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
pImageInfo->outputWidth > pCtx->maxSupportedWidth ||
pImageInfo->outputHeight > pCtx->maxSupportedHeight ||
(pImageInfo->outputWidth * pImageInfo->outputHeight) > pCtx->maxSupportedPixelAmount) {
JPEGD_ERROR_LOG("Unsupported size(%d*%d)",pImageInfo->outputWidth,pImageInfo->outputHeight);
JPEGD_ERROR_LOG("Unsupported size(%d*%d)", pImageInfo->outputWidth, pImageInfo->outputHeight);
return (JPEGDEC_UNSUPPORTED);
}
@@ -1180,7 +1257,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
pImageInfo->outputFormat = JPEGDEC_YCbCr420_SEMIPLANAR;
pSyntax->frame.numMcuInRow = (pSyntax->frame.hwX / 16);
pSyntax->frame.numMcuInFrame = ((pSyntax->frame.hwX * pSyntax->frame.hwY) / 256);
} else if(H[0] == 2 && V[0] == 1 && H[1] == 1 && V[1] == 1 && H[2] == 1 && V[2] == 1){
} else if (H[0] == 2 && V[0] == 1 && H[1] == 1 && V[1] == 1 && H[2] == 1 && V[2] == 1) {
pImageInfo->outputFormat = JPEGDEC_YCbCr422_SEMIPLANAR;
pSyntax->frame.numMcuInRow = (pSyntax->frame.hwX / 16);
pSyntax->frame.numMcuInFrame = ((pSyntax->frame.hwX * pSyntax->frame.hwY) / 128);
@@ -1228,12 +1305,11 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
pSyntax->info.yCbCrMode = pSyntax->info.getInfoYCbCrMode = pImageInfo->outputFormat;
break;
}
case SOS:
{
JPEGD_VERBOSE_LOG("SOS, currentByte:0x%x",currentByte);
case SOS: {
JPEGD_VERBOSE_LOG("SOS, currentByte:0x%x", currentByte);
/* SOS length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("SOS, headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("SOS, headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1263,12 +1339,11 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case DQT:
{
JPEGD_VERBOSE_LOG("DQT, currentByte:0x%x",currentByte);
case DQT: {
JPEGD_VERBOSE_LOG("DQT, currentByte:0x%x", currentByte);
/* DQT length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1283,12 +1358,11 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case DHT:
{
JPEGD_VERBOSE_LOG("DHT, currentByte:0x%x",currentByte);
case DHT: {
JPEGD_VERBOSE_LOG("DHT, currentByte:0x%x", currentByte);
/* DHT length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1302,12 +1376,11 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case DRI:
{
JPEGD_VERBOSE_LOG("DRI, currentByte:0x%x",currentByte);
case DRI: {
JPEGD_VERBOSE_LOG("DRI, currentByte:0x%x", currentByte);
/* DRI length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1322,7 +1395,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
#endif
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1332,9 +1405,8 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
pSyntax->frame.Ri = headerLength;
break;
}
case APP0: /* application segments */
{
JPEGD_VERBOSE_LOG("APP0, currentByte:0x%x",currentByte);
case APP0: { /* application segments */
JPEGD_VERBOSE_LOG("APP0, currentByte:0x%x", currentByte);
/* reset */
appBits = 0;
appLength = 0;
@@ -1342,7 +1414,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
/* APP0 length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("headerLength:%d",headerLength);
JPEGD_VERBOSE_LOG("headerLength:%d", headerLength);
if (headerLength == STRM_ERROR ||
((pStream->readBits + ((headerLength * 8) - 16)) > (8 * pStream->streamLength))) {
JPEGD_ERROR_LOG("readBits:%d, headerLength:%d, streamLength:%d", pStream->readBits, headerLength, pStream->streamLength);
@@ -1364,7 +1436,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
/* check identifier: 0x4A 0x46 0x49 0x46 0x00 */
currentBytes = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("currentBytes:%x",currentBytes);
JPEGD_VERBOSE_LOG("currentBytes:%x", currentBytes);
appBits += 16;
if (currentBytes != 0x4A46) {
pStream->appnFlag = 1;
@@ -1377,7 +1449,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
currentBytes = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("currentBytes:%x",currentBytes);
JPEGD_VERBOSE_LOG("currentBytes:%x", currentBytes);
appBits += 16;
if (currentBytes != 0x4946 && currentBytes != 0x5858) {
pStream->appnFlag = 1;
@@ -1395,7 +1467,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
thumbnail = 1;
}
currentByte = jpegd_get_byte(pStream);
JPEGD_VERBOSE_LOG("currentBytes:%x",currentBytes);
JPEGD_VERBOSE_LOG("currentBytes:%x", currentBytes);
appBits += 8;
if (currentByte != 0x00) {
pStream->appnFlag = 1;
@@ -1412,7 +1484,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
if (thumbnail) {
/* extension code */
currentByte = jpegd_get_byte(pStream);
JPEGD_VERBOSE_LOG("APP0 Extended thumb type, currentBytes:%x",currentBytes);
JPEGD_VERBOSE_LOG("APP0 Extended thumb type, currentBytes:%x", currentBytes);
if (currentByte == JPEGDEC_THUMBNAIL_JPEG) {
pImageInfo->thumbnailType = JPEGDEC_THUMBNAIL_JPEG;
appBits += 8;
@@ -1431,8 +1503,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
currentByte = jpegd_get_byte(pStream);
switch (currentByte) { /* switch to certain header decoding */
case SOF0: /* baseline marker */
case SOF2: /* progresive marker */
{
case SOF2: { /* progresive marker */
if (currentByte == SOF0)
pImageInfo->codingModeThumb = pSyntax->info.operationTypeThumb = JPEGDEC_BASELINE;
else
@@ -1551,8 +1622,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
initThumb = 1;
break;
}
case SOS:
{
case SOS: {
/* SOS length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR ||
@@ -1584,8 +1654,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case DQT:
{
case DQT: {
/* DQT length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1600,8 +1669,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
appBits += (headerLength * 8);
break;
}
case DHT:
{
case DHT: {
/* DHT length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1616,8 +1684,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
appBits += (headerLength * 8);
break;
}
case DRI:
{
case DRI: {
/* DRI length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1647,8 +1714,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
case APP12:
case APP13:
case APP14:
case APP15:
{
case APP15: {
/* APPn length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1663,8 +1729,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
appBits += (headerLength * 8);
break;
}
case DNL:
{
case DNL: {
/* DNL length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1679,8 +1744,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
appBits += (headerLength * 8);
break;
}
case COM:
{
case COM: {
/* COM length */
headerLength = jpegd_get_two_bytes(pStream);
if (headerLength == STRM_ERROR) {
@@ -1707,8 +1771,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
case SOF14:
case SOF15:
case DAC:
case DHP:
{
case DHP: {
JPEGD_ERROR_LOG("Unsupported coding styles");
return (JPEGDEC_UNSUPPORTED);
}
@@ -1718,7 +1781,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
if (pSyntax->info.initThumb && initThumb) {
/* flush the rest of thumbnail data */
if (jpegd_flush_bits(pStream,((appLength * 8) - appBits)) == STRM_ERROR) {
if (jpegd_flush_bits(pStream, ((appLength * 8) - appBits)) == STRM_ERROR) {
errorCode = 1;
break;
}
@@ -1737,7 +1800,7 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
appBits += 8;
pImageInfo->thumbnailType = JPEGDEC_THUMBNAIL_NOT_SUPPORTED_FORMAT;
pStream->appnFlag = 1;
if (jpegd_flush_bits(pStream,((appLength * 8) - appBits)) == STRM_ERROR) {
if (jpegd_flush_bits(pStream, ((appLength * 8) - appBits)) == STRM_ERROR) {
errorCode = 1;
break;
}
@@ -1793,9 +1856,8 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
case APP12:
case APP13:
case APP14:
case APP15:
{
JPEGD_VERBOSE_LOG("APPn, currentByte:0x%x",currentByte);
case APP15: {
JPEGD_VERBOSE_LOG("APPn, currentByte:0x%x", currentByte);
/* APPn length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("APPn length, headerLength:%x", headerLength);
@@ -1812,9 +1874,8 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case DNL:
{
JPEGD_VERBOSE_LOG("DNL, currentByte:0x%x",currentByte);
case DNL: {
JPEGD_VERBOSE_LOG("DNL, currentByte:0x%x", currentByte);
/* DNL length */
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("DNL, headerLength:%x", headerLength);
@@ -1831,9 +1892,8 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
}
break;
}
case COM:
{
JPEGD_VERBOSE_LOG("COM, currentByte:0x%x",currentByte);
case COM: {
JPEGD_VERBOSE_LOG("COM, currentByte:0x%x", currentByte);
headerLength = jpegd_get_two_bytes(pStream);
JPEGD_VERBOSE_LOG("COM, headerLength:%x", headerLength);
if (headerLength == STRM_ERROR ||
@@ -1861,9 +1921,8 @@ MPP_RET jpegd_read_decode_parameters(JpegParserContext *ctx, StreamStorage *pStr
case SOF14:
case SOF15:
case DAC:
case DHP:
{
JPEGD_ERROR_LOG("SOF, currentByte:0x%x",currentByte);
case DHP: {
JPEGD_ERROR_LOG("SOF, currentByte:0x%x", currentByte);
JPEGD_ERROR_LOG("Unsupported coding styles");
return (JPEGDEC_UNSUPPORTED);
}
@@ -1906,20 +1965,20 @@ MPP_RET jpegd_get_image_info(JpegParserContext *ctx)
RK_U32 pic_size = 0;
StreamStorage stream;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
JpegSyntaxParam *pSyntax = pCtx->pSyntax;
if(pCtx->streamLength < 1){
if (pCtx->streamLength < 1) {
JPEGD_ERROR_LOG("streamLength:%d", pCtx->streamLength);
return MPP_ERR_VALUE;
}
if ((pCtx->streamLength > DEC_RK70_MAX_STREAM) &&
(pCtx->bufferSize < JPEGDEC_RK70_MIN_BUFFER || pCtx->bufferSize > JPEGDEC_RK70_MAX_BUFFER)) {
JPEGD_ERROR_LOG("bufferSize = %d,streamLength = %d\n",pCtx->bufferSize, pCtx->streamLength);
JPEGD_ERROR_LOG("bufferSize = %d,streamLength = %d\n", pCtx->bufferSize, pCtx->streamLength);
return MPP_ERR_VALUE;
}
@@ -1941,12 +2000,12 @@ MPP_RET jpegd_get_image_info(JpegParserContext *ctx)
stream.appnFlag = 0;
ret = jpegd_read_decode_parameters(pCtx, &stream);
if(ret != MPP_OK){
if (ret != MPP_OK) {
JPEGD_ERROR_LOG("read decode parameters failed, ret:%d", ret);
return ret;
}
if(pCtx->color_conv){
if (pCtx->color_conv) {
/* Using pp to convert all format to yuv420sp */
switch (pCtx->imageInfo.outputFormat) {
case JPEGDEC_YCbCr400:
@@ -1987,7 +2046,7 @@ MPP_RET jpegd_get_image_info(JpegParserContext *ctx)
pic_size = ppScaleW * ppScaleH * 2;
pSyntax->ppInstance = (void *)1;
}else{
} else {
/* keep original output format */
memset(&ppInfo, 0, sizeof(ppInfo));
ppInfo.outFomart = 5; //PP_OUT_FORMAT_YUV420INTERLAVE
@@ -2042,7 +2101,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2056,7 +2115,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
RK_U32 findhufftable = 0;
JpegSyntaxParam *pSyntax = pCtx->pSyntax;
StreamStorage *pStream = (StreamStorage *) &(pSyntax->stream);
StreamStorage *pStream = (StreamStorage *) & (pSyntax->stream);
do {
/* if slice mode/slice done return to hw handling */
@@ -2069,14 +2128,12 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
/* switch to certain header decoding */
switch (currentByte) {
case 0x00:
{
case 0x00: {
JPEGD_VERBOSE_LOG("currentByte:0x00");
break;
}
case SOF0:
case SOF2:
{
case SOF2: {
JPEGD_VERBOSE_LOG("SOF, currentByte:0x%x", currentByte);
/* Baseline/Progressive */
pSyntax->frame.codingType = currentByte;
@@ -2098,8 +2155,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
}
break;
}
case SOS: /* Start of Scan */
{
case SOS: { /* Start of Scan */
JPEGD_VERBOSE_LOG("SOS, currentByte:0x%x", currentByte);
/* reset image ready */
pSyntax->image.imageReady = 0;
@@ -2141,8 +2197,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
}
break;
}
case DHT: /* Start of Huffman tables */
{
case DHT: { /* Start of Huffman tables */
JPEGD_VERBOSE_LOG("DHT, currentByte:0x%x", currentByte);
retCode = jpegd_decode_huffman_tables(pCtx);
if (retCode != JPEGDEC_OK) {
@@ -2157,8 +2212,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
findhufftable = 1;
break;
}
case DQT: /* start of Quantisation Tables */
{
case DQT: { /* start of Quantisation Tables */
JPEGD_VERBOSE_LOG("DQT, currentByte:0x%x", currentByte);
retCode = jpegd_decode_quant_tables(pCtx);
if (retCode != JPEGDEC_OK) {
@@ -2172,13 +2226,11 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
}
break;
}
case SOI: /* Start of Image */
{
case SOI: { /* Start of Image */
/* no actions needed, continue */
break;
}
case EOI: /* End of Image */
{
case EOI: { /* End of Image */
JPEGD_VERBOSE_LOG("EOI, currentByte:0x%x", currentByte);
if (pSyntax->image.imageReady) {
JPEGD_ERROR_LOG("EOI: OK\n");
@@ -2188,8 +2240,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
return (JPEGDEC_ERROR);
}
}
case DRI: /* Define Restart Interval */
{
case DRI: { /* Define Restart Interval */
JPEGD_VERBOSE_LOG("DRI, currentByte:0x%x", currentByte);
currentBytes = jpegd_get_two_bytes(pStream);
if (currentBytes == STRM_ERROR) {
@@ -2207,8 +2258,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
case RST4:
case RST5:
case RST6:
case RST7:
{
case RST7: {
JPEGD_VERBOSE_LOG("RST, currentByte:0x%x", currentByte);
/* initialisation of DC predictors to zero value !!! */
for (i = 0; i < MAX_NUMBER_OF_COMPONENTS; i++) {
@@ -2230,13 +2280,11 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
case SOF15:
case DAC:
case DHP:
case TEM:
{
case TEM: {
JPEGD_ERROR_LOG("Unsupported Features, currentByte:0x%x", currentByte);
return (JPEGDEC_UNSUPPORTED);
}
case APP0: /* application data & comments */
{
case APP0: { /* application data & comments */
JPEGD_VERBOSE_LOG("APP0, currentByte:0x%x", currentByte);
/* APP0 Extended Thumbnail */
if (pCtx->decImageType == JPEGDEC_THUMBNAIL) {
@@ -2265,7 +2313,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
appBits += 16;
if (currentBytes != 0x5858) {
pSyntax->stream.appnFlag = 1;
if (jpegd_flush_bits(pStream,((appLength * 8) - appBits)) == STRM_ERROR) {
if (jpegd_flush_bits(pStream, ((appLength * 8) - appBits)) == STRM_ERROR) {
JPEGD_ERROR_LOG("Stream Error");
return (JPEGDEC_STRM_ERROR);
}
@@ -2277,7 +2325,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
appBits += 8;
if (currentByte != 0x00) {
pSyntax->stream.appnFlag = 1;
if (jpegd_flush_bits(pStream,((appLength * 8) - appBits)) == STRM_ERROR) {
if (jpegd_flush_bits(pStream, ((appLength * 8) - appBits)) == STRM_ERROR) {
JPEGD_ERROR_LOG("Stream Error");
return (JPEGDEC_STRM_ERROR);
}
@@ -2324,8 +2372,7 @@ MPP_RET jpegd_decode_frame_impl(JpegParserContext *ctx)
case APP13:
case APP14:
case APP15:
case COM:
{
case COM: {
JPEGD_VERBOSE_LOG("APPn, currentByte:0x%x", currentByte);
currentBytes = jpegd_get_two_bytes(pStream);
if (currentBytes == STRM_ERROR) {
@@ -2365,7 +2412,7 @@ MPP_RET jpegd_allocate_frame(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2393,7 +2440,7 @@ MPP_RET jpegd_update_frame(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2412,7 +2459,7 @@ MPP_RET jpegd_decode_frame(JpegParserContext *ctx)
FUN_TEST("Enter");
MPP_RET ret = MPP_OK;
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2443,9 +2490,9 @@ MPP_RET jpegd_decode_frame(JpegParserContext *ctx)
pSyntax->info.sliceMbSetValue = pCtx->sliceMbSet;
/* check HW supported features */
if (!pCtx->is8190){
if (!pCtx->is8190) {
// TODO:
}else{
} else {
/* check if fuse was burned */
if (pCtx->fuseBurned) {
/* return if not valid HW and unsupported operation type */
@@ -2479,7 +2526,7 @@ MPP_RET jpegd_decode_frame(JpegParserContext *ctx)
mcuSizeDivider = 1;
/* check slice config */
if ((pCtx->sliceMbSet * (pSyntax->frame.numMcuInRow / mcuSizeDivider)) > pCtx->maxSupportedSliceSize){
if ((pCtx->sliceMbSet * (pSyntax->frame.numMcuInRow / mcuSizeDivider)) > pCtx->maxSupportedSliceSize) {
JPEGD_ERROR_LOG("sliceMbSet > JPEGDEC_MAX_SLICE_SIZE");
return (JPEGDEC_PARAM_ERROR);
}
@@ -2537,7 +2584,7 @@ MPP_RET jpegd_parse(void *ctx, HalDecTask *task)
jpegd_get_image_info(JpegParserCtx);
ret = jpegd_decode_frame(JpegParserCtx);
if(MPP_OK == ret){
if (MPP_OK == ret) {
jpegd_allocate_frame(JpegParserCtx);
task->syntax.data = (void *)JpegParserCtx->pSyntax;
task->syntax.number = sizeof(JpegSyntaxParam);
@@ -2555,65 +2602,66 @@ MPP_RET jpegd_deinit(void *ctx)
FUN_TEST("Enter");
JpegParserContext *JpegParserCtx = (JpegParserContext *)ctx;
if(JpegParserCtx->recv_buffer){
if (JpegParserCtx->recv_buffer) {
mpp_free(JpegParserCtx->recv_buffer);
JpegParserCtx->recv_buffer = NULL;
}
if(JpegParserCtx->pSyntax->vlc.acTable0.vals){
if (JpegParserCtx->pSyntax->vlc.acTable0.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.acTable0.vals);
JpegParserCtx->pSyntax->vlc.acTable0.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.acTable1.vals){
if (JpegParserCtx->pSyntax->vlc.acTable1.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.acTable1.vals);
JpegParserCtx->pSyntax->vlc.acTable1.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.acTable2.vals){
if (JpegParserCtx->pSyntax->vlc.acTable2.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.acTable2.vals);
JpegParserCtx->pSyntax->vlc.acTable2.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.acTable3.vals){
if (JpegParserCtx->pSyntax->vlc.acTable3.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.acTable3.vals);
JpegParserCtx->pSyntax->vlc.acTable3.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.dcTable0.vals){
if (JpegParserCtx->pSyntax->vlc.dcTable0.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.dcTable0.vals);
JpegParserCtx->pSyntax->vlc.dcTable0.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.dcTable1.vals){
if (JpegParserCtx->pSyntax->vlc.dcTable1.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.dcTable1.vals);
JpegParserCtx->pSyntax->vlc.dcTable1.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.dcTable2.vals){
if (JpegParserCtx->pSyntax->vlc.dcTable2.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.dcTable2.vals);
JpegParserCtx->pSyntax->vlc.dcTable2.vals = NULL;
}
if(JpegParserCtx->pSyntax->vlc.dcTable3.vals){
if (JpegParserCtx->pSyntax->vlc.dcTable3.vals) {
mpp_free(JpegParserCtx->pSyntax->vlc.dcTable3.vals);
JpegParserCtx->pSyntax->vlc.dcTable3.vals = NULL;
}
if(JpegParserCtx->pSyntax){
if (JpegParserCtx->pSyntax) {
mpp_free(JpegParserCtx->pSyntax);
JpegParserCtx->pSyntax = NULL;
}
if(JpegParserCtx->output_frame){
if (JpegParserCtx->output_frame) {
mpp_free(JpegParserCtx->output_frame);
}
if(JpegParserCtx->input_packet){
if (JpegParserCtx->input_packet) {
mpp_packet_deinit(&JpegParserCtx->input_packet);
}
JpegParserCtx->pts = 0;
JpegParserCtx->eos = 0;
JpegParserCtx->parser_debug_enable = 0;
JpegParserCtx->input_jpeg_count = 0;
@@ -2625,7 +2673,7 @@ MPP_RET reset_jpeg_parser_context(JpegParserContext *ctx)
{
FUN_TEST("Enter");
JpegParserContext *pCtx = ctx;
if(NULL == pCtx){
if (NULL == pCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2650,9 +2698,9 @@ MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
{
FUN_TEST("Enter");
JpegParserContext *JpegParserCtx = (JpegParserContext *)ctx;
if(NULL == JpegParserCtx){
if (NULL == JpegParserCtx) {
JpegParserCtx = (JpegParserContext *)mpp_calloc(JpegParserContext, 1);
if(NULL == JpegParserCtx){
if (NULL == JpegParserCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2666,7 +2714,7 @@ MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
mpp_buf_slot_setup(JpegParserCtx->frame_slots, 16);
JpegParserCtx->recv_buffer = mpp_calloc(RK_U8, JPEGD_STREAM_BUFF_SIZE);
if(NULL == JpegParserCtx->recv_buffer){
if (NULL == JpegParserCtx->recv_buffer) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2680,7 +2728,7 @@ MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
JpegParserCtx->fuseBurned = 1; /* changed by application*/
JpegParserCtx->pSyntax = mpp_calloc(JpegSyntaxParam, 1);
if(NULL == JpegParserCtx->pSyntax){
if (NULL == JpegParserCtx->pSyntax) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -2708,7 +2756,8 @@ MPP_RET jpegd_init(void *ctx, ParserCfg *parser_cfg)
JpegParserCtx->extensionsSupported = 1;
JpegParserCtx->pts = 0;
JpegParserCtx->parser_debug_enable = 1;
JpegParserCtx->eos = 0;
JpegParserCtx->parser_debug_enable = 0;
JpegParserCtx->input_jpeg_count = 0;
FUN_TEST("Exit");

View File

@@ -100,7 +100,7 @@ enum {
JPEGDEC_THUMBNAIL = 1
};
enum{
enum {
SOF0 = 0xC0,
SOF1 = 0xC1,
SOF2 = 0xC2,
@@ -195,9 +195,9 @@ typedef struct JpegParserContext {
RK_U32 extensionsSupported;
RK_S64 pts;
RK_U32 eos;
RK_U32 parser_debug_enable;
RK_U32 input_jpeg_count;
}JpegParserContext;
} JpegParserContext;
#endif /* __JPEGD_PARSER_H__ */

View File

@@ -340,7 +340,7 @@ typedef struct {
*/
} JpegDecImageInfo;
typedef struct JpegSyntaxParam{
typedef struct JpegSyntaxParam {
StreamStorage stream;
FrameInfo frame;
ImageData image;
@@ -370,7 +370,7 @@ typedef struct JpegSyntaxParam{
const void *ppInstance;
VPUMemLinear_t *pictureMem;
}JpegSyntaxParam;
} JpegSyntaxParam;
#endif /*__JPEGD_SYNTAX__*/

View File

@@ -1175,12 +1175,12 @@ static void jpegd_write_tables(JpegSyntaxParam *pSyntax, JpegHalContext *pCtx)
MPP_RET jpegd_allocate_chroma_out_buffer(JpegSyntaxParam *pSyntax)
{
FUN_TEST("Enter");
if(NULL == pSyntax){
if (NULL == pSyntax) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
if (pSyntax->ppInstance == NULL || (pSyntax->ppInstance != NULL && !pSyntax->ppControl.usePipeline)){
if (pSyntax->ppInstance == NULL || (pSyntax->ppInstance != NULL && !pSyntax->ppControl.usePipeline)) {
if (pSyntax->info.givenOutLuma.vir_addr == NULL) {
JPEGD_INFO_LOG("givenOutLuma is NULL");
@@ -1238,7 +1238,7 @@ MPP_RET jpegd_allocate_chroma_out_buffer(JpegSyntaxParam *pSyntax)
MPP_RET jpegd_set_post_processor(JpegHalContext *pCtx, JpegSyntaxParam *pSyntax)
{
FUN_TEST("Enter");
if(NULL == pCtx || NULL == pSyntax){
if (NULL == pCtx || NULL == pSyntax) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -1540,7 +1540,7 @@ MPP_RET jpegd_set_post_processor(JpegHalContext *pCtx, JpegSyntaxParam *pSyntax)
break;
case PP_OUT_FORMAT_YUV420INTERLAVE: {
RK_U32 phy_addr = pSyntax->asicBuff.outLumaBuffer.phy_addr;
if(VPUClientGetIOMMUStatus() <= 0) {
if (VPUClientGetIOMMUStatus() <= 0) {
reg->reg22_pp_out_ch_base = (phy_addr + outWidth * outHeight);
} else {
if (outWidth * outHeight > 0x400000) {
@@ -1663,7 +1663,7 @@ JpegDecRet jpegd_configure_regs(JpegSyntaxParam *pSyntax, JpegHalContext *pCtx)
if (pSyntax->frame.Ri) {
reg->reg122.sw_sync_marker_e = 1;
reg->reg123.sw_pjpeg_rest_freq = pSyntax->frame.Ri;
} else{
} else {
reg->reg122.sw_sync_marker_e = 0;
}
@@ -1752,7 +1752,7 @@ static MPP_RET jpegd_regs_init(JpegRegSet *reg)
MPP_RET jpegd_gen_regs(JpegHalContext *ctx, JpegSyntaxParam *syntax)
{
FUN_TEST("Enter");
if(NULL == ctx || NULL == syntax){
if (NULL == ctx || NULL == syntax) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -1773,7 +1773,7 @@ MPP_RET jpegd_gen_regs(JpegHalContext *ctx, JpegSyntaxParam *syntax)
/* if slice mode ==> set slice height */
if (pSyntax->info.sliceMbSetValue && pSyntax->ppControl.usePipeline == 0) {
jpegd_calculate_slice_size(pSyntax);
JPEGD_INFO_LOG("sliceHeight is %d, sliceMbSetValue is %d",pSyntax->info.sliceHeight,pSyntax->info.sliceMbSetValue);
JPEGD_INFO_LOG("sliceHeight is %d, sliceMbSetValue is %d", pSyntax->info.sliceHeight, pSyntax->info.sliceMbSetValue);
}
/* Start HW or continue after pause */
@@ -1818,7 +1818,7 @@ MPP_RET hal_jpegd_init(void *hal, MppHalCfg *cfg)
JpegHalContext *JpegHalCtx = (JpegHalContext *)hal;
if (NULL == JpegHalCtx) {
JpegHalCtx = (JpegHalContext *)mpp_calloc(JpegHalContext, 1);
if(NULL == JpegHalCtx){
if (NULL == JpegHalCtx) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -1830,7 +1830,7 @@ MPP_RET hal_jpegd_init(void *hal, MppHalCfg *cfg)
//get vpu socket
#ifdef RKPLATFORM
if(JpegHalCtx->vpu_socket <= 0) {
if (JpegHalCtx->vpu_socket <= 0) {
JpegHalCtx->vpu_socket = VPUClientInit(VPU_DEC_PP/*VPU_DEC*/);
if (JpegHalCtx->vpu_socket <= 0) {
JPEGD_ERROR_LOG("get vpu_socket(%d) <= 0, failed. \n", JpegHalCtx->vpu_socket);
@@ -1873,7 +1873,7 @@ MPP_RET hal_jpegd_init(void *hal, MppHalCfg *cfg)
}
//init dbg stuff
JpegHalCtx->hal_debug_enable = 1;
JpegHalCtx->hal_debug_enable = 0;
JpegHalCtx->frame_count = 0;
JpegHalCtx->output_yuv_count = 0;
@@ -1928,7 +1928,7 @@ MPP_RET hal_jpegd_deinit(void *hal)
MPP_RET hal_jpegd_gen_regs(void *hal, HalTaskInfo *syn)
{
FUN_TEST("Enter");
if(NULL == hal || NULL == syn){
if (NULL == hal || NULL == syn) {
JPEGD_ERROR_LOG("NULL pointer");
return MPP_ERR_NULL_PTR;
}
@@ -1941,7 +1941,7 @@ MPP_RET hal_jpegd_gen_regs(void *hal, HalTaskInfo *syn)
MppBuffer outputBuf = NULL;
#endif
if(syn->dec.valid){
if (syn->dec.valid) {
syn->dec.valid = 0;
#ifdef RKPLATFORM
@@ -1958,13 +1958,13 @@ MPP_RET hal_jpegd_gen_regs(void *hal, HalTaskInfo *syn)
ret = jpegd_gen_regs(JpegHalCtx, pSyntax);
if(JpegHalCtx->hal_debug_enable && JpegHalCtx->frame_count < 3){
if (JpegHalCtx->hal_debug_enable && JpegHalCtx->frame_count < 3) {
RK_U32 idx = 0;
RK_U32 *pRegs = (RK_U32 *) &(JpegHalCtx->regs);
RK_U32 *pRegs = (RK_U32 *) & (JpegHalCtx->regs);
JPEGD_INFO_LOG("sizeof(JpegRegSet)=%d, sizeof(pRegs[0])=%d", sizeof(JpegRegSet), sizeof(pRegs[0]));
JpegHalCtx->frame_count++;
for(idx = 0; idx < sizeof(JpegRegSet)/sizeof(pRegs[0]); idx++){
for (idx = 0; idx < sizeof(JpegRegSet) / sizeof(pRegs[0]); idx++) {
JPEGD_INFO_LOG("frame_%d_reg[%d]=0x%08x", JpegHalCtx->frame_count, idx, pRegs[idx]);
}
}
@@ -2011,21 +2011,20 @@ MPP_RET hal_jpegd_wait(void *hal, HalTaskInfo *task)
memset(&reg_out, 0, sizeof(JpegRegSet));
ret = VPUClientWaitResult(JpegHalCtx->vpu_socket, (RK_U32 *)&reg_out, JPEGD_REG_NUM, &cmd, &length);
if(reg_out.reg55_Interrupt.sw_dec_bus_int){
if (reg_out.reg55_Interrupt.sw_dec_bus_int) {
JPEGD_ERROR_LOG("IRQ BUS ERROR!");
}else if(reg_out.reg55_Interrupt.sw_dec_error_int){
} else if (reg_out.reg55_Interrupt.sw_dec_error_int) {
JPEGD_ERROR_LOG("IRQ STREAM ERROR!");
}else if(reg_out.reg55_Interrupt.sw_dec_timeout){
} else if (reg_out.reg55_Interrupt.sw_dec_timeout) {
JPEGD_ERROR_LOG("IRQ TIMEOUT!");
}else if(reg_out.reg55_Interrupt.sw_dec_buffer_int){
} else if (reg_out.reg55_Interrupt.sw_dec_buffer_int) {
JPEGD_ERROR_LOG("IRQ BUFFER EMPTY!");
}else if(reg_out.reg55_Interrupt.sw_dec_irq){
} else if (reg_out.reg55_Interrupt.sw_dec_irq) {
JPEGD_INFO_LOG("DECODE SUCCESS!");
}
/* debug information */
if(JpegHalCtx->hal_debug_enable && JpegHalCtx->output_yuv_count < 3)
{
if (JpegHalCtx->hal_debug_enable && JpegHalCtx->output_yuv_count < 3) {
static FILE *jpg_file;
static char name[32];
MppBuffer outputBuf = NULL;
@@ -2042,7 +2041,7 @@ MPP_RET hal_jpegd_wait(void *hal, HalTaskInfo *task)
JPEGD_INFO_LOG("output YUV(%d*%d) saving to %s\n", width, height, name);
JPEGD_INFO_LOG("pOutYUV:%p", pOutYUV);
fwrite(pOutYUV, width*height*3/2, 1, jpg_file);
fwrite(pOutYUV, width * height * 3 / 2, 1, jpg_file);
fclose(jpg_file);
JpegHalCtx->output_yuv_count++;
}

View File

@@ -70,7 +70,7 @@
#define PP_OUT_FORMAT_YUV420INTERLAVE 5
typedef struct JpegRegSet{
typedef struct JpegRegSet {
struct {
RK_U32 sw_pp_max_burst : 5;
RK_U32 sw_pp_scmd_dis : 1;
@@ -529,21 +529,21 @@ typedef struct JpegRegSet{
RK_U32 sw_ac1_code5_cnt : 6;
RK_U32 sw_reserved_3 : 2;
RK_U32 sw_ac1_code6_cnt : 7;
}reg134;
} reg134;
struct {
RK_U32 sw_ac1_code7_cnt : 8;
RK_U32 sw_ac1_code8_cnt : 8;
RK_U32 sw_ac1_code9_cnt : 8;
RK_U32 sw_ac1_code10_cnt : 8;
}reg135;
} reg135;
struct {
RK_U32 sw_ac1_code11_cnt : 8;
RK_U32 sw_ac1_code12_cnt : 8;
RK_U32 sw_ac1_code13_cnt : 8;
RK_U32 sw_ac1_code14_cnt : 8;
}reg136;
} reg136;
struct {
RK_U32 sw_ac1_code15_cnt : 8;
@@ -570,14 +570,14 @@ typedef struct JpegRegSet{
RK_U32 sw_ac2_code10_cnt : 8;
RK_U32 sw_ac2_code11_cnt : 8;
RK_U32 sw_ac2_code12_cnt : 8;
}reg139;
} reg139;
struct {
RK_U32 sw_ac2_code13_cnt : 8;
RK_U32 sw_ac2_code14_cnt : 8;
RK_U32 sw_ac2_code15_cnt : 8;
RK_U32 sw_ac2_code16_cnt : 8;
}reg140;
} reg140;
struct {
RK_U32 sw_dc1_code1_cnt : 2;
@@ -590,7 +590,7 @@ typedef struct JpegRegSet{
RK_U32 sw_dc1_code6_cnt : 4;
RK_U32 sw_dc1_code7_cnt : 4;
RK_U32 sw_dc1_code8_cnt : 4;
}reg141;
} reg141;
struct {
RK_U32 sw_dc1_code9_cnt : 4;
@@ -601,7 +601,7 @@ typedef struct JpegRegSet{
RK_U32 sw_dc1_code14_cnt : 4;
RK_U32 sw_dc1_code15_cnt : 4;
RK_U32 sw_dc1_code16_cnt : 4;
}reg142;
} reg142;
struct {
RK_U32 sw_dc2_code1_cnt : 2;
@@ -614,7 +614,7 @@ typedef struct JpegRegSet{
RK_U32 sw_dc2_code6_cnt : 4;
RK_U32 sw_dc2_code7_cnt : 4;
RK_U32 sw_dc2_code8_cnt : 4;
}reg143;
} reg143;
struct {
RK_U32 sw_dc2_code9_cnt : 4;
@@ -625,7 +625,7 @@ typedef struct JpegRegSet{
RK_U32 sw_dc2_code14_cnt : 4;
RK_U32 sw_dc2_code15_cnt : 4;
RK_U32 sw_dc2_code16_cnt : 4;
}reg144;
} reg144;
RK_U32 reg145_bitpl_ctrl_base;
RK_U32 reg_dct_strm1_base[2];
@@ -718,6 +718,6 @@ typedef struct JpegHalContext {
FILE *fp_reg_in;
FILE *fp_reg_out;
}JpegHalContext;
} JpegHalContext;
#endif /* __HAL_JPEGD_REG_H__ */

View File

@@ -77,7 +77,7 @@ typedef struct jpegdDemoCtx {
RK_U8 *strmbuf;
RK_U32 strmbytes;
RK_U32 dec_frm_num;
}jpegdDemoCtx;
} jpegdDemoCtx;
static OptionInfo jpeg_parserCmd[] = {
{"i", "input_file", "input bitstream file"},
@@ -97,7 +97,7 @@ MPP_RET jpegd_readbytes_from_file(RK_U8* buf, RK_S32 aBytes, FILE* fp)
}
RK_S32 rd_bytes = fread(buf, 1, aBytes, fp);
if(rd_bytes != aBytes){
if (rd_bytes != aBytes) {
mpp_log("read %u bytes from file fail, actually only %#x bytes is read.", (RK_U32)aBytes, rd_bytes);
return -1;
}
@@ -126,7 +126,7 @@ static void jpeg_show_options(int count, OptionInfo *options)
static RK_S32 jpeg_show_help()
{
mpp_log("usage: parserDemo [options] input_file, \n\n");
jpeg_show_options(sizeof(jpeg_parserCmd)/sizeof(OptionInfo), jpeg_parserCmd);
jpeg_show_options(sizeof(jpeg_parserCmd) / sizeof(OptionInfo), jpeg_parserCmd);
return 0;
}
@@ -271,11 +271,11 @@ MPP_RET jpegd_test_deinit(jpegdDemoCtx *ctx)
mpp_err("strmbuf_grp deinit");
mpp_buffer_group_put(ctx->strmbuf_grp);
}
if(ctx->strmbuf) {
if (ctx->strmbuf) {
mpp_err("strmbuf free");
mpp_free(ctx->strmbuf);
}
if(ctx->pOutFile){
if (ctx->pOutFile) {
mpp_err("close output file");
fclose(ctx->pOutFile);
ctx->pOutFile = NULL;
@@ -298,7 +298,7 @@ MPP_RET jpegd_test_init(parserDemoCmdCtx *cmd, jpegdDemoCtx *ctx)
//demo configure
ctx->pOutFile = fopen("/data/spurs.yuv", "wb+");
if(NULL == ctx->pOutFile){
if (NULL == ctx->pOutFile) {
JPEGD_ERROR_LOG("create spurs.yuv failed");
}
@@ -413,7 +413,7 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
// 2.jpegd_readbytes_from_file
ret = jpegd_readbytes_from_file(DemoCtx.strmbuf, fileSize, pInFile);
if(ret != MPP_OK){
if (ret != MPP_OK) {
mpp_log("read bytes from file failed\n");
goto __FAILED;
}
@@ -435,7 +435,7 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
}
mpp_buffer_get(DemoCtx.strmbuf_grp, &buffer, size);
if (buffer != NULL){
if (buffer != NULL) {
mpp_err("mpp_buf_slot_get_prop, buffer:%p, size:%d", buffer, size);
mpp_buf_slot_set_prop(pMppDec->packet_slots, slot_idx, SLOT_BUFFER, buffer);
}
@@ -445,7 +445,7 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
mpp_packet_get_data(curtask->input_packet),
mpp_packet_get_size(curtask->input_packet));
mpp_err("%s Line %d, (*input_packet):%p, length:%d", __func__,__LINE__,
mpp_err("%s Line %d, (*input_packet):%p, length:%d", __func__, __LINE__,
mpp_packet_get_data(curtask->input_packet),
mpp_packet_get_size(curtask->input_packet));
DemoCtx.pkt_buf = buffer;
@@ -475,7 +475,7 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
}
mpp_buffer_get(DemoCtx.frmbuf_grp, &buffer, size);
if (buffer){
if (buffer) {
mpp_buf_slot_set_prop(pMppDec->frame_slots, index, SLOT_BUFFER, buffer);
mpp_err("frame_slots, buffer:%p, size:%d", buffer, size);
}
@@ -506,10 +506,10 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
}
/*** parser packet deinit ***/
if(DemoCtx.pkt_buf) {
if (DemoCtx.pkt_buf) {
mpp_buffer_put(DemoCtx.pkt_buf);
}
if(DemoCtx.pic_buf) {
if (DemoCtx.pic_buf) {
mpp_buffer_put(DemoCtx.pic_buf);
}
@@ -521,12 +521,12 @@ MPP_RET jpegd_parser_test(parserDemoCmdCtx *cmd)
curtask->input = -1;
DemoCtx.dec_frm_num ++;
}while(0);
} while (0);
CHECK_FUN(mpp_dec_flush(pMppDec));
__FAILED:
if(pInFile){
if (pInFile) {
fclose(pInFile);
pInFile = NULL;
}