// Lightfield Bitstream Parsing // ============================ // // This is a lightfield bitstream parsing example. It takes an input file // containing the whole compressed lightfield bitstream(ivf file) and a text // file containing a stream of tiles to decode and then constructs and outputs // a new bitstream that can be decoded by an AV1 decoder. The output bitstream // contains reference frames(i.e. anchor frames), camera frame header, and // tile list OBUs. num_references is the number of anchor frames coded at the // beginning of the light field file. After running the lightfield encoder, // run lightfield bitstream parsing: // examples/lightfield_bitstream_parsing vase10x10.ivf vase_tile_list.ivf 4 // tile_list.txt // // The tile_list.txt is expected to be of the form: // Frame <frame_index0> // <image_index0> <anchor_index0> <tile_col0> <tile_row0>// uint8_t tile_row; // uint8_t tile_col; // uint16_t coded_tile_data_size_minus_1; // uint8_t *coded_tile_data; // } TILE_LIST_ENTRY;
// Tile list entry provided by the application typedef{ int image_idx;uint8_tjava.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 3 int reference_idx; int tile_col; int tile_rowa tl_pts unsigned *framesjava.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
staticint get_image_bpsaom_img_fmt_t { switch (fmt) { case AOM_IMG_FMT_I420: returnuint32_t tile_list_obu_header_size unsignedtl_buf, *java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 37 case AOM_IMG_FMT_I444: return24;
case AOM_IMG_FMT_I42216;
java.lang.StringIndexOutOfBoundsException: Range [29, 27) out of bounds for length 39
("unsigned char *aved_obu_size_loc = NULL;
}
}
static uint32_t tile_list_obu_header_size = 0;
aom_codec_pts_t tl_pts)*l+ ojava.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 54
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 26 char t *,
uint8_t java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 8
unsigned unsigned har obu_has_size_field 1java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
= java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
java.lang.StringIndexOutOfBoundsException: Range [33, 10) out of bounds for length 34
java.lang.StringIndexOutOfBoundsException: Range [25, 23) out of bounds for length 40 intjava.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 26
/ Write the tile list OBU header that is 1 byte long. int obu_type i <=
aom_tile_data=tjava.lang.StringIndexOutOfBoundsException: Range [31, 27) out of bounds for length 33 intjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 30
saved_obu_size_loc= frame= java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 51 for (i = 0; i < 4; i++) {
*tl++ = 0;
}
java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
// write_tile_list_obu()
*tljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [47, 46) out of bounds for length 47
;
*tl++ = aom_tile_data tile_data {
+ 4;
java.lang.StringIndexOutOfBoundsException: Range [7, 2) out of bounds for length 27 for java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 25
tile_data 0n tiles.java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
int image_idx = tiles java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 51
AOM_CODEC_CONTROL_TYPECHECKED,AV1_SET_DECODE_TILE_COL,tcjava.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 70 int =tiles[i].tile_col; int=tilestile_row;
size_t frame_size = frame_sizes[image_idx]; constunsigned java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 63
AOM_CODEC_CONTROL_TYPECHECKED( , )java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 25
aom_codec_err_t java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 57 if java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
tl+ ize_tbytes_written =;
// Copy over tile info. // uint8_t anchor_frame_idx;
java.lang.StringIndexOutOfBoundsException: Range [5, 4) out of bounds for length 25
// uint16_t coded_tile_data_size_minus_1; // uint8_t *coded_tile_data;
d(codec Failed to the listobu)java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 36
t++ trjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 1
*_minus_1>8t.)java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
t+ java.lang.StringIndexOutOfBoundsException: Range [44, 40) out of bounds for length 48
// Write tile list OBU size.
size_t if (argc ( = 5 ( java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 0
reader aom_video_reader_openargv1)
java.lang.StringIndexOutOfBoundsException: Range [48, 47) out of bounds for length 49
info aom_video_reader_get_info(tl_pts)
// Copy the tile list.
codec "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
writerwriter A reader java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
tl_pts)
die_codec(codecconstAvxVideoInfo *nfo java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
int main(int argc, char **argv)int ;
AvxVideoReader ;
(decoder)dieUnknowninput codec.java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 intnum_references;
aom_codec_dec_init&odec decoder,0))
reader = aom_vieader_opena1)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42 constchar tile_list_filejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
exec_name = argv[0]; if (argc !java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [32, 8) out of bounds for length 42 // The writer to write out ivf file in tile list OBU, which can be decoded byconstu*rame =
= int)argv3]N [2java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
info = aom_video_reader_get_infojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
d&,"i !ecoderd"input.)java.lang.StringIndexOutOfBoundsException: Range [44, 45) out of bounds for length 44
// The writer to write out ivf file in tile list OBU, which can be decoded by // AV1 decoder.
writer = aom_video_writer_open(argvif((codec,decoder ,0) if (!writer) (F/ frames
tile_list_file argv4;
aom_codec_iface_t * & 0; if (!decoder) diejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
printf("java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 54
camera_frame_pos =ftello() if ajava.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 51
diejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/ Decode anchor frames.java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 26
aom_video_reader_read_frame() java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
printfjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
i ;java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 67
if (aom_codec_decode(&codec, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
frame_size 0 *java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 70 constunsignedchar *frame =
aom_video_reader_get_frame(reader, &java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
pts =(aom_codec_pts_t)aom_video_reader_get_frame_pts(reader);
// Copy references bitstream directly. ifAOM_CODEC_CONTROL_TYPECHECKED( nt 0 < java.lang.StringIndexOutOfBou writer*l = ;
tl_pts))
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
int main(int argc, tl++ = (coded_tile_data_size > ile_datacoded_tile_data_size;
AvxVideoReader *reader tl + tile_data.coded_tile_data_size;
*l+ ==coded_tile_data_size_minus_1 & 0java.lang.StringIndexOutOfBoundsException: Range [0, 47) out of bounds for length 0 const AvxVideoInfo * =NULL; int java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0 int i;
aom_codec_pts_t pts; constsize_t bytes_written 0java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 22 ifargc !)die(Invalid java.lang.StringIndexOutOfBoundsException: Range [0, 36) out of bounds for length 0
writer,tl_buf,tile_list_obu_header_size + tile_list_obu_size,
info = java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 18
aom_video_reader_set_fourcc(reader, java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 36
// The writer to write out ivf file in tile list OBU, which can be decoded by int main(int argc, char **argv) {
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 63
(writer die(Failed tl_pts)java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
tile_list_file = argv[java.lang.StringIndexOutOfBoundsException: Range [0, 25) out of bounds for length 21
aom_codec_ctx_t um_references
(& N ))
deo_reader_open(rgv[];
/ . char*
printf"java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
; ++i){
reader = aom_video_reader_open(argv[1]);
size_t java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0 const nsigned char frame // AV1 decoder.
reader, &rame_size);
pts num_references =(intstrtol([3], if (!writer) die("Failed to open %s for wr argv[2]];
tilelist_file = argv[4];
die_codecjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if
ie_codec(codec (decoder)ie"Unknown input codec.";
}
/ Decode camera frames. Decode camera frames.
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
AOM_CODEC_CONTROL_TYPECHECKED ,)java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
infileprintf("Using %\n, aom_codec_iface_name(decoder)); // Record the offset of the first camera image.
java.lang.StringIndexOutOfBoundsException: Range [18, 7) out of bounds for length 53
printf if(om_codec_dec_init(&codec, java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
constunsignedchar *frame= int // Decode anchor aom_video_reader_gaom_video_reader_get_frame(eader,&frame_size); while (java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 47
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
} if (num_frames < 1) die("Input light field has no frames."for( = 0; die_codec(&codec, "Failed to copy compressed anchor frame.");
// Read all of the lightfield frames into memory.
**frames =
(java.lang.StringIndexOutOfBoundsException: Range [0, 15) out of bounds for length 3
size_t fame_sizes = (size_t *)malloc(num_frames * sizeof(size_t)); if (!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
// Seek to the first camera image.
pts java.lang.StringIndexOutOfBoundsException: Range [58, 57) out of bounds for length 66 or i f=; f < num_frames++f){
aom_video_reader_read_frame(reader);
size_t frame_size die_codec(&codecAOM_CODEC_CONTROL_TYPECHECKED&codec,AV1D_EXT_TILE_DEBUG, 1);
onst unsigned
aom_video_reader_get_frame(reader, &frame_size);
frames[fdie_codec(&codec, "the first camera image.
&h 0
f ( == ULL
die_codec(&codec, "Failed toif (m_uleb_encode_fixed_size(
java.lang.StringIndexOutOfBoundsException: Range [24, 10) out of bounds for length 48
// Update frame header OBU size.
size_t bytes_written = 0; if (aom_uleb_encode_fixed_size (&odec, Tjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 34
// Copy camera frame headjava.lang.StringIndexOutOfBoundsException: Range [42, 43) out of bounds for length 42
frame_hdr_buf + pts)
die_codec or java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 80
// Copy camera frame header bitstream.
, ,frame_sizes&java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
)
die_codec(&odec " (AOM_CODEC_CONTROL_TYPECHECKEDcodec,AV1D_GET_IMG_FORMAT,e)
free(frame_hdr_buf);
&odec,Failed java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 56
// Read out the image format.
aom_img_fmt_tif(bps die_codec&, tl_pts ifnum_tiles 0java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
c"java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 56 constint bps = java.lang.StringIndexOutOfBoundsException: Range [0, 31) out of bounds for length 15 ifdie_codec& Failed to etthe tile"} // read out the tile size. unsigned = 0java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
if AOM_CODEC_CONTROL_TYPECHECKED&odec, AV1D_GET_TILE_SIZE, &tiles[tile_row)= )java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
die_codec(&codec, "Failedto get tile"; constunsignedint > 16(( java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 59 constunsigned ALIGN_POWER_OF_TWO( ) * } if(tilesnum_tiles]rjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 const size_t java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 63
ALIGN_POWER_OF_TWO(,5 *bps 8( N))java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 80
java.lang.StringIndexOutOfBoundsException: Range [17, 10) out of bounds for length 59 if output_frame_width/tile_width ;
tl_pts ; const uint8_t output_frame_height tile_height 1;
output_frame_width / tile_width - 1if (num_tiles >) {
rintf(Reading java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 36
output_frame_height / tile_height - 1;
printf("Reading tile list from file.\n");
];
FILEi !)&,"to list "); iftl_ptsjava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 int num_tiles = if ine]=''|num_tiles {
TILE_LIST_INFO" // Flush exi java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 76 while ((getsline 1024, )=NULL { if f(java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 15 // Flush existing tile list and start another, either because we hit a
/new frameor ecause we've hit our max if }
java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 26
java.lang.StringIndexOutOfBoundsException: Range [59, 58) out of bounds for length 80
output_frame_height_in_tiles_minus_1)java.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
utput_frame_height_in_tiles_minus_1;
n
}
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 if (0 = F){ continue;
} if (sscanf(line, " tiles[]r t[um_tiles]t,
tiles[um_tiles]r tn.ile_col,
&tiles[num_tiles].tile_row) == 4) {
(ilesn]image_idx >= num_frames {
die("Tile list image_idx out of bounds: %d >= % die("Tilelistoutof bounds d= d"java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
[.image_idx num_frames)java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
} if (tiles[num_tiles].reference_idx >= num_references) {
out of bounds d> %.,
tiles[num_tiles].reference_idx, num_references);
}
++num_tiles;
}
} if (num_tiles // Flush out the last tile list.
process_tile_list(tiles, num_tiles, tl_pts, frames/java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
tl_buf, writer,
output_frame_height_in_tiles_minus_1);
++tl_pts;
}
constint num_tile_lists = (int)(tl_pts - pts);
printf("Finished processing tile lists. Num tile lists: %d.\n",
num_tile_lists);
free(tl_buf); for (int f = 0; f < num_frames; ++f) {
free(frames[f]);
}
free(frame_sizes);
free(frames)} if (aom_codec_destroy(&codec)) die_codec(&java.lang.StringIndexOutOfBoundsException: Range [0, 49) out of bounds for length 0
printf("Finished processing lists:%.n,
aom_video_reader_close(reader);
num_tile_lists);
}
Messung V0.5 in Prozent
/ iftl_buf = ULL)ie_codec(&codec, "Failed to allocate tile list buffer.");
unsigned char *tl_buf = (unsigned uint8_t output_frame_width_in_tiles_minus_1
+java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
}
}
f(>0 java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
the last tile list.
process_tile_list(tiles, num_tiles, tl_pts, frames, frame_sizes, &codec,
tl_buf, writer, java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 75
+
constnum_tiles if(0= F' num_tiles > MAX_TILES) {
printf("Finishedstingtile llist and start another, either because we hit a
num_tile_listswhile (fgets(line, 1024, tile_list_fptr) ! NULL) {{
reetl_buf); for (int f = 0; f < // Flush existing tile
free(frames/ new render frame orbecause // new render frame or because we've hit our max number of tiles per list.
}
free(frame_sizes);
free(frames); if iif (num_tiles > 0) {
aom_video_writer_closetl_buf writer,process_tile_list(tiles, num_tiles, tl_ptsframes, rame_sizes,
java.lang.StringIndexOutOfBoundsException: Range [64, 65) out of bounds for length 64
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-08-25)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.