static int aac_sync(uint64_t state, AACAC3ParseContext *hdr_info, int *need_next_header, int *new_frame_start) { GetBitContext bits; AACADTSHeaderInfo hdr; int size; union { uint64_t u64; uint8_t u8[8]; } tmp; tmp.u64 = av_be2ne64(state); init_get_bits(&bits, tmp.u8+8-AAC_ADTS_HEADER_SIZE, AAC_ADTS_HEADER_SIZE * 8); if ((size = avpriv_aac_parse_header(&bits, &hdr)) < 0) return 0; *need_next_header = 0; *new_frame_start = 1; hdr_info->sample_rate = hdr.sample_rate; hdr_info->channels = ff_mpeg4audio_channels[hdr.chan_config]; hdr_info->samples = hdr.samples; hdr_info->bit_rate = hdr.bit_rate; return size; }
static int ExtractDSFrameData( uint8_t * buffer, struct DMImageData *frameData ) { int retVal = AVERROR(EIO); int bufIdx = 0; if( buffer != NULL ) { memcpy( frameData->identifier, &buffer[bufIdx], ID_LENGTH ); bufIdx += ID_LENGTH; memcpy( &frameData->jpegLength, &buffer[bufIdx], sizeof(unsigned long) ); bufIdx += sizeof(unsigned long); frameData->jpegLength = av_be2ne32(frameData->jpegLength); memcpy( &frameData->imgSeq, &buffer[bufIdx], sizeof(int64_t) ); bufIdx += sizeof(int64_t); frameData->imgSeq = av_be2ne64(frameData->imgSeq); memcpy( &frameData->imgTime, &buffer[bufIdx], sizeof(int64_t) ); bufIdx += sizeof(int64_t); memcpy( &frameData->camera, &buffer[bufIdx], sizeof(unsigned char) ); bufIdx += sizeof(unsigned char); memcpy( &frameData->status, &buffer[bufIdx], sizeof(unsigned char) ); bufIdx += sizeof(unsigned char); memcpy( &frameData->activity, &buffer[bufIdx], sizeof(unsigned short) * NUM_ACTIVITIES ); bufIdx += sizeof(unsigned short) * NUM_ACTIVITIES; memcpy( &frameData->QFactor, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->QFactor = av_be2ne16(frameData->QFactor); memcpy( &frameData->height, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->height = av_be2ne16(frameData->height); memcpy( &frameData->width, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->width = av_be2ne16(frameData->width); memcpy( &frameData->resolution, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->resolution = av_be2ne16(frameData->resolution); memcpy( &frameData->interlace, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->interlace = av_be2ne16(frameData->interlace); memcpy( &frameData->subHeaderMask, &buffer[bufIdx], sizeof(unsigned short) ); bufIdx += sizeof(unsigned short); frameData->subHeaderMask = av_be2ne16(frameData->subHeaderMask); memcpy( frameData->camTitle, &buffer[bufIdx], sizeof(char) * CAM_TITLE_LENGTH ); bufIdx += sizeof(char) * CAM_TITLE_LENGTH; memcpy( frameData->alarmText, &buffer[bufIdx], sizeof(char) * ALARM_TEXT_LENGTH ); bufIdx += sizeof(char) * ALARM_TEXT_LENGTH; retVal = 0; } return retVal; }