diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index 627f701..da28e4c 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -5088,9 +5088,9 @@
     return 0;
   }
 
-  ssize_t size =
+  int64_t size =
       FrameAckTimestampRanges(ack, timestamp_ranges, /*writer=*/nullptr);
-  return std::max<ssize_t>(0, size);
+  return std::max<int64_t>(0, size);
 }
 
 size_t QuicFramer::GetAckFrameSize(
@@ -5869,11 +5869,11 @@
   return timestamp_ranges;
 }
 
-ssize_t QuicFramer::FrameAckTimestampRanges(
+int64_t QuicFramer::FrameAckTimestampRanges(
     const QuicAckFrame& frame,
     const absl::InlinedVector<AckTimestampRange, 2>& timestamp_ranges,
     QuicDataWriter* writer) const {
-  ssize_t size = 0;
+  int64_t size = 0;
   auto maybe_write_var_int62 = [&](uint64_t value) {
     size += QuicDataWriter::GetVarInt62Len(value);
     if (writer != nullptr && !writer->WriteVarInt62(value)) {
@@ -5900,7 +5900,7 @@
       return -1;
     }
 
-    for (ssize_t i = range.range_begin; i >= range.range_end; --i) {
+    for (int64_t i = range.range_begin; i >= range.range_end; --i) {
       const QuicTime receive_timestamp = frame.received_packet_times[i].second;
       uint64_t time_delta;
       if (effective_prev_time.has_value()) {
@@ -5952,9 +5952,9 @@
   }
 
   // Compute the size first using a null writer.
-  ssize_t size =
+  int64_t size =
       FrameAckTimestampRanges(frame, timestamp_ranges, /*writer=*/nullptr);
-  if (size > static_cast<ssize_t>(writer->capacity() - writer->length())) {
+  if (size > static_cast<int64_t>(writer->capacity() - writer->length())) {
     QUIC_DVLOG(1) << "Insufficient room to write IETF ack receive timestamps. "
                      "size_remain:"
                   << (writer->capacity() - writer->length())
diff --git a/quic/core/quic_framer.h b/quic/core/quic_framer.h
index 33a2bef..306f049 100644
--- a/quic/core/quic_framer.h
+++ b/quic/core/quic_framer.h
@@ -742,12 +742,12 @@
     // |range_begin| and |range_end| are index(es) in
     // QuicAckFrame.received_packet_times, representing a continuous range of
     // packet numbers in descending order. |range_begin| >= |range_end|.
-    ssize_t range_begin;  // Inclusive
-    ssize_t range_end;    // Inclusive
+    int64_t range_begin;  // Inclusive
+    int64_t range_end;    // Inclusive
   };
   absl::InlinedVector<AckTimestampRange, 2> GetAckTimestampRanges(
       const QuicAckFrame& frame, std::string& detailed_error) const;
-  ssize_t FrameAckTimestampRanges(
+  int64_t FrameAckTimestampRanges(
       const QuicAckFrame& frame,
       const absl::InlinedVector<AckTimestampRange, 2>& timestamp_ranges,
       QuicDataWriter* writer) const;
