}
}
+static void encode_qlogs(SnowContext *s){
+ int plane_index, level, orientation;
+
+ for(plane_index=0; plane_index<2; plane_index++){
+ for(level=0; level<s->spatial_decomposition_count; level++){
+ for(orientation=level ? 1:0; orientation<4; orientation++){
+ if(orientation==2) continue;
+ put_symbol(&s->c, s->header_state, s->plane[plane_index].band[level][orientation].qlog, 1);
+ }
+ }
+ }
+}
+
static void encode_header(SnowContext *s){
- int plane_index, level, orientation, i;
+ int plane_index, i;
uint8_t kstate[32];
memset(kstate, MID_STATE, sizeof(kstate));
// put_rac(&s->c, s->header_state, s->rate_scalability);
put_symbol(&s->c, s->header_state, s->max_ref_frames-1, 0);
- for(plane_index=0; plane_index<2; plane_index++){
- for(level=0; level<s->spatial_decomposition_count; level++){
- for(orientation=level ? 1:0; orientation<4; orientation++){
- if(orientation==2) continue;
- put_symbol(&s->c, s->header_state, s->plane[plane_index].band[level][orientation].qlog, 1);
- }
- }
- }
+ encode_qlogs(s);
}
if(!s->keyframe){
memcpy(p->last_hcoeff, p->hcoeff, sizeof(p->hcoeff));
}
}
+ put_rac(&s->c, s->header_state, 0);
+ if(0){
+ put_symbol(&s->c, s->header_state, s->spatial_decomposition_count, 0);
+ encode_qlogs(s);
+ }
}
put_symbol(&s->c, s->header_state, s->spatial_decomposition_type - s->last_spatial_decomposition_type, 1);
s->last_block_max_depth = s->block_max_depth;
}
-static int decode_header(SnowContext *s){
+static void decode_qlogs(SnowContext *s){
int plane_index, level, orientation;
+
+ for(plane_index=0; plane_index<3; plane_index++){
+ for(level=0; level<s->spatial_decomposition_count; level++){
+ for(orientation=level ? 1:0; orientation<4; orientation++){
+ int q;
+ if (plane_index==2) q= s->plane[1].band[level][orientation].qlog;
+ else if(orientation==2) q= s->plane[plane_index].band[level][1].qlog;
+ else q= get_symbol(&s->c, s->header_state, 1);
+ s->plane[plane_index].band[level][orientation].qlog= q;
+ }
+ }
+ }
+}
+
+static int decode_header(SnowContext *s){
+ int plane_index;
uint8_t kstate[32];
memset(kstate, MID_STATE, sizeof(kstate));
// s->rate_scalability= get_rac(&s->c, s->header_state);
s->max_ref_frames= get_symbol(&s->c, s->header_state, 0)+1;
- for(plane_index=0; plane_index<3; plane_index++){
- for(level=0; level<s->spatial_decomposition_count; level++){
- for(orientation=level ? 1:0; orientation<4; orientation++){
- int q;
- if (plane_index==2) q= s->plane[1].band[level][orientation].qlog;
- else if(orientation==2) q= s->plane[plane_index].band[level][1].qlog;
- else q= get_symbol(&s->c, s->header_state, 1);
- s->plane[plane_index].band[level][orientation].qlog= q;
- }
- }
- }
+ decode_qlogs(s);
}
if(!s->keyframe){
s->plane[2].htaps = s->plane[1].htaps;
memcpy(s->plane[2].hcoeff, s->plane[1].hcoeff, sizeof(s->plane[1].hcoeff));
}
+ if(get_rac(&s->c, s->header_state)){
+ s->spatial_decomposition_count= get_symbol(&s->c, s->header_state, 0);
+ decode_qlogs(s);
+ }
}
s->spatial_decomposition_type+= get_symbol(&s->c, s->header_state, 1);
ret: 0 st:-1 ts:-1.000000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
ret: 0 st:-1 ts:1.894167 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47008 size:3663 flags:1
ret: 0 st: 0 ts:0.800000 flags:0
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31774 size:3478 flags:1
ret:-1 st: 0 ts:-0.320000 flags:1
ret:-1 st:-1 ts:2.576668 flags:0
ret: 0 st:-1 ts:1.470835 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47008 size:3663 flags:1
ret: 0 st: 0 ts:0.360000 flags:0
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18018 size:3229 flags:1
ret:-1 st: 0 ts:-0.760000 flags:1
ret:-1 st:-1 ts:2.153336 flags:0
ret: 0 st:-1 ts:1.047503 flags:1
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31774 size:3478 flags:1
ret: 0 st: 0 ts:-0.040000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
ret: 0 st: 0 ts:2.840000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63544 size:3635 flags:1
ret: 0 st:-1 ts:1.730004 flags:0
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63544 size:3635 flags:1
ret: 0 st:-1 ts:0.624171 flags:1
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18018 size:3229 flags:1
ret: 0 st: 0 ts:-0.480000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
ret: 0 st: 0 ts:2.400000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63544 size:3635 flags:1
ret: 0 st:-1 ts:1.306672 flags:0
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47008 size:3663 flags:1
ret: 0 st:-1 ts:0.200839 flags:1
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
ret: 0 st: 0 ts:-0.920000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:2987 flags:1
ret: 0 st: 0 ts:2.000000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63536 size:3635 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:63544 size:3635 flags:1
ret: 0 st:-1 ts:0.883340 flags:0
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31766 size:3478 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:31774 size:3478 flags:1
ret:-1 st:-1 ts:-0.222493 flags:1
ret:-1 st: 0 ts:2.680000 flags:0
ret: 0 st: 0 ts:1.560000 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47000 size:3663 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:47008 size:3663 flags:1
ret: 0 st:-1 ts:0.460008 flags:0
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18016 size:3229 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:18018 size:3229 flags:1
ret:-1 st:-1 ts:-0.645825 flags:1
----------------
tests/data/a-snow53.avi
ret: 0 st:-1 ts:-1.000000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
ret: 0 st:-1 ts:1.894167 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902800 size:78837 flags:1
ret: 0 st: 0 ts:0.800000 flags:0
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239102 size:74994 flags:1
ret:-1 st: 0 ts:-0.320000 flags:1
ret:-1 st:-1 ts:2.576668 flags:0
ret: 0 st:-1 ts:1.470835 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902800 size:78837 flags:1
ret: 0 st: 0 ts:0.360000 flags:0
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605640 size:71059 flags:1
ret:-1 st: 0 ts:-0.760000 flags:1
ret:-1 st:-1 ts:2.153336 flags:0
ret: 0 st:-1 ts:1.047503 flags:1
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239102 size:74994 flags:1
ret: 0 st: 0 ts:-0.040000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
ret: 0 st: 0 ts:2.840000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585626 size:79731 flags:1
ret: 0 st:-1 ts:1.730004 flags:0
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585626 size:79731 flags:1
ret: 0 st:-1 ts:0.624171 flags:1
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605640 size:71059 flags:1
ret: 0 st: 0 ts:-0.480000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
ret: 0 st: 0 ts:2.400000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585626 size:79731 flags:1
ret: 0 st:-1 ts:1.306672 flags:0
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902800 size:78837 flags:1
ret: 0 st:-1 ts:0.200839 flags:1
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
ret: 0 st: 0 ts:-0.920000 flags:0
ret: 0 st: 0 dts:0.000000 pts:0.000000 pos:5660 size:72476 flags:1
ret: 0 st: 0 ts:2.000000 flags:1
-ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585620 size:79731 flags:1
+ret: 0 st: 0 dts:1.920000 pts:1.920000 pos:2585626 size:79731 flags:1
ret: 0 st:-1 ts:0.883340 flags:0
-ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239098 size:74994 flags:1
+ret: 0 st: 0 dts:0.960000 pts:0.960000 pos:1239102 size:74994 flags:1
ret:-1 st:-1 ts:-0.222493 flags:1
ret:-1 st: 0 ts:2.680000 flags:0
ret: 0 st: 0 ts:1.560000 flags:1
-ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902794 size:78837 flags:1
+ret: 0 st: 0 dts:1.440000 pts:1.440000 pos:1902800 size:78837 flags:1
ret: 0 st:-1 ts:0.460008 flags:0
-ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605638 size:71059 flags:1
+ret: 0 st: 0 dts:0.480000 pts:0.480000 pos:605640 size:71059 flags:1
ret:-1 st:-1 ts:-0.645825 flags:1
----------------
tests/data/a-svq1.mov