siamese
siamese copied to clipboard
Why is siamese_decoder_is_ready always Siamese_NeedMoreData
Can you help me,This is my sample code
siamese_init();
SiameseEncoder encoder = siamese_encoder_create();
SiameseDecoder decoder = siamese_decoder_create();
unsigned char frame_data[9600] = "YSWHMUTZCYOKXDZPXAAJOLIHPGVRDNFNWYC...more";
const int frame_size = 9600;
const int pkg_size = 1200;
const int input_count = (frame_size + pkg_size - 1) / pkg_size;
for (int i = 0; i < input_count; i++) {
SiameseOriginalPacket original;
unsigned char * i_data = (unsigned char *) malloc(pkg_size);
memcpy(i_data, frame_data + i * pkg_size, pkg_size);
original.Data = i_data;
original.DataBytes = pkg_size;
siamese_encoder_add(encoder, &original);
int result = siamese_decoder_add_original(decoder, &original);
LOGD("original packet added %d num %d decoder_result = %d data = %s", original.DataBytes, original.PacketNum, result, original.Data);
}
for (int i = 0; i < input_count; i++) {
SiameseRecoveryPacket recovery;
siamese_encode(encoder, &recovery);
int result = siamese_decoder_add_recovery(decoder, &recovery);
LOGD("recovery packet added %d result %d ", recovery.DataBytes, result);
}
for (;;) {
int readyResult = siamese_decoder_is_ready(decoder);
if (readyResult)
{
LOGD("readyResult %d", readyResult);
if (readyResult == Siamese_NeedMoreData) continue;
}
if (0 == siamese_decoder_is_ready(decoder))
{
SiameseOriginalPacket* recovered = nullptr;
unsigned recoveredCount = 0;
int decodeResult = siamese_decode(decoder, &recovered, &recoveredCount);
LOGD("recovered %d packets decodeResult = %d", recoveredCount, decodeResult);
for (int i = 0; i < recoveredCount; i++) {
LOGD("recovered packet %d num %d data = %s", recovered[i].DataBytes, recovered[i].PacketNum, recovered[i].Data);
}
}
}
By the way, my running environment is android arm64-v8a