Skip to content

Commit 6563d01

Browse files
committed
vcomp/jpegxs: preserver metadata
eg. timestamps
1 parent 942a767 commit 6563d01

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

src/video_compress/jpegxs.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@
5050

5151
#include "debug.h"
5252
#include "lib_common.h"
53+
#include "types.h" // for video_desc, tile
5354
#include "utils/misc.h" // for get_cpu_core_count
5455
#include "video.h"
5556
#include "video_compress.h"
5657
#include "utils/video_frame_pool.h"
5758
#include "utils/synchronized_queue.h"
5859
#include "jpegxs/jpegxs_conv.h"
60+
#include "video_frame.h" // for video_desc_from_frame
5961

6062
#define DEFAULT_POOL_SIZE 5
6163
#define MOD_NAME "[JPEG XS enc.] "
@@ -206,6 +208,9 @@ while (true) {
206208
continue;
207209
}
208210

211+
enc_input.user_prv_ctx_ptr = malloc(VF_METADATA_SIZE);
212+
vf_store_metadata(frame.get(), enc_input.user_prv_ctx_ptr);
213+
209214
struct tile *in_tile = vf_get_tile(frame.get(), 0);
210215
s->convert_to_planar((const uint8_t *) in_tile->data, in_tile->width, in_tile->height, &enc_input.image);
211216

@@ -255,7 +260,10 @@ while (true) {
255260
s->frames_received++;
256261

257262
shared_ptr<video_frame> out_frame = s->pool.get_frame();
258-
263+
264+
vf_restore_metadata(out_frame.get(), enc_output.user_prv_ctx_ptr);
265+
free(enc_output.user_prv_ctx_ptr);
266+
259267
struct tile *out_tile = vf_get_tile(out_frame.get(), 0);
260268
size_t enc_size = enc_output.bitstream.used_size;
261269
if (enc_size > out_tile->data_len) {

0 commit comments

Comments
 (0)