siamese icon indicating copy to clipboard operation
siamese copied to clipboard

Why is siamese_decoder_is_ready always Siamese_NeedMoreData

Open chenqinggang001 opened this issue 1 year ago • 1 comments

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);
            }
        }
    }

chenqinggang001 avatar Nov 15 '24 03:11 chenqinggang001

By the way, my running environment is android arm64-v8a

chenqinggang001 avatar Nov 15 '24 03:11 chenqinggang001