read ds-filter from frame header
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index ce0deec..2e57352 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -6842,7 +6842,7 @@
 static int read_uncompressed_header(AV1Decoder *pbi,
                                     struct aom_read_bit_buffer *rb) {
   AV1_COMMON *const cm = &pbi->common;
-  const SequenceHeader *const seq_params = &cm->seq_params;
+   SequenceHeader *const seq_params = &cm->seq_params;
   CurrentFrame *const current_frame = &cm->current_frame;
   FeatureFlags *const features = &cm->features;
   MACROBLOCKD *const xd = &pbi->dcb.xd;
@@ -7034,7 +7034,9 @@
     }
   }
   features->disable_cdf_update = aom_rb_read_bit(rb);
-
+  if (current_frame->frame_type == KEY_FRAME) {
+    seq_params->cfl_ds_filter_index = aom_rb_read_literal(rb, 2);
+  }
   if (seq_params->force_screen_content_tools == 2) {
     features->allow_screen_content_tools = aom_rb_read_bit(rb);
   } else {
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index c54675e..82f75d7 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -5677,7 +5677,7 @@
     }
   }
   aom_wb_write_bit(wb, features->disable_cdf_update);
-
+  aom_wb_write_literal(wb, seq_params->cfl_ds_filter_index, 2);
   if (seq_params->force_screen_content_tools == 2) {
     aom_wb_write_bit(wb, features->allow_screen_content_tools);
   } else {