c
// Add reference counting to jpc_stream_t structure
typedef struct {
    jpc_stream_t *stream;
    int ref_count;
} jpc_stream_ref_t;

// Modify jpc_streamlist_remove to return a reference-counted stream
jpc_stream_ref_t *jpc_streamlist_remove_ref(jpc_streamlist_t *list, int idx) {
    jpc_stream_t *stream = jpc_streamlist_remove(list, idx);
    if (!stream) return NULL;
    jpc_stream_ref_t *ref = malloc(sizeof(jpc_stream_ref_t));
    ref->stream = stream;
    ref->ref_count = 1;
    return ref;
}

// In the main function:
jpc_stream_ref_t *stream_ref = jpc_streamlist_remove_ref(dec->pkthdrstreams, 0);
if (!stream_ref) {
    return -1;
}
tile->pkthdrstream = stream_ref->stream;
