message: tf.signal: If frame_length is statically known, make frame_step statically known.
  This enables tf.signal.mdct support on TPU, since otherwise XLA cannot statically determine the output shape due to frame_step not being known.
diff: @@ -329,8 +329,12 @@ def mdct(signals, frame_length, window_fn=window_ops.vorbis_window,
  frame_length.shape.assert_has_rank(0)
  # Assert that frame_length is divisible by 4.
  frame_length_static = tensor_util.constant_value(frame_length)
  - if frame_length_static is not None and frame_length_static % 4 != 0:
  + if frame_length_static is not None:
  + if frame_length_static % 4 != 0:
  raise ValueError('The frame length must be a multiple of 4.')
  + frame_step = ops.convert_to_tensor(frame_length_static // 2,
  + dtype=frame_length.dtype)
  + else:
  frame_step = frame_length // 2
  framed_signals = shape_ops.frame(
  