@@ -98,6 +98,15 @@ public class AV1Packetizer {
9898 // Collection of OBU Elements; each OBU Element may be a full OBU, or just a fragment of one.
9999 private List <byte []> OBUElements ;
100100
101+ // Aggregation item: Z first packet in frame is fragment
102+ private boolean firstPacketInFrame ;
103+
104+ // Aggregation item: Y last packet in frame is fragment
105+ private boolean lastPacketInFrame ;
106+
107+ // Aggregation item: N start sequence
108+ private boolean startSequence ;
109+
101110 private byte [] sequenceHeader ;
102111
103112 /**
@@ -115,9 +124,9 @@ public int depacketize(byte[] payload) throws Exception {
115124 }
116125 // aggregate header byte is used to indicate if the first and/or last OBU element in the payload is a fragment
117126 // of an OBU
118- boolean firstPacketInFrame = OBUParser .startsWithFragment (payload [0 ]); // Z first packet in frame is fragment
119- boolean lastPacketInFrame = OBUParser .endsWithFragment (payload [0 ]); // Y last packet in frame is fragment
120- boolean startSequence = OBUParser .startsNewCodedVideoSequence (payload [0 ]); // N
127+ firstPacketInFrame = OBUParser .startsWithFragment (payload [0 ]); // Z first packet in frame is fragment
128+ lastPacketInFrame = OBUParser .endsWithFragment (payload [0 ]); // Y last packet in frame is fragment
129+ startSequence = OBUParser .startsNewCodedVideoSequence (payload [0 ]); // N
121130 // obu's in the payload
122131 int obuCount = OBUParser .obuCount (payload [0 ]); // W
123132 logger .debug ("Depacketize - first packet in frame: {}, last packet in frame: {}, start sequence: {} count: {}" , firstPacketInFrame , lastPacketInFrame , startSequence , obuCount );
@@ -335,12 +344,38 @@ public void reset() {
335344 OBUElements .clear ();
336345 }
337346 sequenceHeader = null ;
347+ // reset aggregation items; also done at depacketize
348+ firstPacketInFrame = lastPacketInFrame = startSequence = false ;
338349 }
339350
340351 public List <byte []> getOBUElements () {
341352 return OBUElements ;
342353 }
343354
355+ public boolean isFirstPacketInFrame () {
356+ return firstPacketInFrame ;
357+ }
358+
359+ public void setFirstPacketInFrame (boolean firstPacketInFrame ) {
360+ this .firstPacketInFrame = firstPacketInFrame ;
361+ }
362+
363+ public boolean isLastPacketInFrame () {
364+ return lastPacketInFrame ;
365+ }
366+
367+ public void setLastPacketInFrame (boolean lastPacketInFrame ) {
368+ this .lastPacketInFrame = lastPacketInFrame ;
369+ }
370+
371+ public boolean isStartSequence () {
372+ return startSequence ;
373+ }
374+
375+ public void setStartSequence (boolean startSequence ) {
376+ this .startSequence = startSequence ;
377+ }
378+
344379 @ Override
345380 public String toString () {
346381 return "AV1Packetizer [OBUElements=" + OBUElements + "]" ;
0 commit comments