Migrate debug trace logs to track generic events for Muxer.

Track information is added to the details string where relevant.

PiperOrigin-RevId: 635815866
This commit is contained in:
samrobinson 2024-05-21 08:30:01 -07:00 committed by Copybara-Service
parent 44f2f5056f
commit b6ce35d741
2 changed files with 38 additions and 46 deletions

View File

@ -78,12 +78,7 @@ public final class DebugTraceUtil {
EVENT_RECEIVE_EOS,
EVENT_SIGNAL_EOS,
EVENT_SIGNAL_ENDED,
EVENT_CAN_WRITE_SAMPLE_AUDIO,
EVENT_CAN_WRITE_SAMPLE_VIDEO,
EVENT_WRITE_SAMPLE_AUDIO,
EVENT_WRITE_SAMPLE_VIDEO,
EVENT_TRACK_ENDED_AUDIO,
EVENT_TRACK_ENDED_VIDEO
EVENT_CAN_WRITE_SAMPLE
})
@Target(TYPE_USE)
public @interface Event {}
@ -106,12 +101,7 @@ public final class DebugTraceUtil {
public static final String EVENT_RECEIVE_EOS = "ReceiveEOS";
public static final String EVENT_SIGNAL_EOS = "SignalEOS";
public static final String EVENT_SIGNAL_ENDED = "SignalEnded";
public static final String EVENT_CAN_WRITE_SAMPLE_AUDIO = "CanWriteSample_Audio";
public static final String EVENT_CAN_WRITE_SAMPLE_VIDEO = "CanWriteSample_Video";
public static final String EVENT_WRITE_SAMPLE_AUDIO = "WriteSample_Audio";
public static final String EVENT_WRITE_SAMPLE_VIDEO = "WriteSample_Video";
public static final String EVENT_TRACK_ENDED_AUDIO = "TrackEnded_Audio";
public static final String EVENT_TRACK_ENDED_VIDEO = "TrackEnded_Video";
public static final String EVENT_CAN_WRITE_SAMPLE = "CanWriteSample";
/** Components logged by {@link #logEvent}. */
@Documented
@ -216,12 +206,10 @@ public final class DebugTraceUtil {
.put(
COMPONENT_MUXER,
ImmutableList.of(
EVENT_CAN_WRITE_SAMPLE_VIDEO,
EVENT_WRITE_SAMPLE_VIDEO,
EVENT_CAN_WRITE_SAMPLE_AUDIO,
EVENT_WRITE_SAMPLE_AUDIO,
EVENT_TRACK_ENDED_AUDIO,
EVENT_TRACK_ENDED_VIDEO,
EVENT_INPUT_FORMAT,
EVENT_CAN_WRITE_SAMPLE,
EVENT_ACCEPTED_INPUT,
EVENT_INPUT_ENDED,
EVENT_OUTPUT_ENDED))
.buildOrThrow();

View File

@ -25,13 +25,10 @@ import static androidx.media3.common.util.Util.areEqual;
import static androidx.media3.common.util.Util.contains;
import static androidx.media3.common.util.Util.usToMs;
import static androidx.media3.effect.DebugTraceUtil.COMPONENT_MUXER;
import static androidx.media3.effect.DebugTraceUtil.EVENT_CAN_WRITE_SAMPLE_AUDIO;
import static androidx.media3.effect.DebugTraceUtil.EVENT_CAN_WRITE_SAMPLE_VIDEO;
import static androidx.media3.effect.DebugTraceUtil.EVENT_ACCEPTED_INPUT;
import static androidx.media3.effect.DebugTraceUtil.EVENT_CAN_WRITE_SAMPLE;
import static androidx.media3.effect.DebugTraceUtil.EVENT_INPUT_ENDED;
import static androidx.media3.effect.DebugTraceUtil.EVENT_OUTPUT_ENDED;
import static androidx.media3.effect.DebugTraceUtil.EVENT_TRACK_ENDED_AUDIO;
import static androidx.media3.effect.DebugTraceUtil.EVENT_TRACK_ENDED_VIDEO;
import static androidx.media3.effect.DebugTraceUtil.EVENT_WRITE_SAMPLE_AUDIO;
import static androidx.media3.effect.DebugTraceUtil.EVENT_WRITE_SAMPLE_VIDEO;
import static java.lang.Math.max;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@ -484,6 +481,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
ensureMuxerInitialized();
TrackInfo trackInfo = new TrackInfo(format, muxer.addTrack(format));
trackTypeToInfo.put(trackType, trackInfo);
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
DebugTraceUtil.EVENT_INPUT_FORMAT,
C.TIME_UNSET,
/* extraFormat= */ "%s:%s",
/* extraArgs...= */ Util.getTrackTypeString(trackType),
format);
if (format.metadata != null) {
for (int i = 0; i < format.metadata.length(); i++) {
@ -531,23 +535,20 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
checkArgument(contains(trackTypeToInfo, trackType));
TrackInfo trackInfo = trackTypeToInfo.get(trackType);
boolean canWriteSample = canWriteSample(trackType, presentationTimeUs);
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
EVENT_CAN_WRITE_SAMPLE,
presentationTimeUs,
/* extraFormat= */ "%s:%s",
/* extraArgs...= */ Util.getTrackTypeString(trackType),
canWriteSample);
if (trackType == C.TRACK_TYPE_VIDEO) {
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
EVENT_CAN_WRITE_SAMPLE_VIDEO,
presentationTimeUs,
/* extraFormat= */ "%s",
/* extraArgs...= */ canWriteSample);
if (firstVideoPresentationTimeUs == C.TIME_UNSET) {
firstVideoPresentationTimeUs = presentationTimeUs;
}
} else if (trackType == C.TRACK_TYPE_AUDIO) {
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
EVENT_CAN_WRITE_SAMPLE_AUDIO,
presentationTimeUs,
/* extraFormat= */ "%s",
/* extraArgs...= */ canWriteSample);
if (dropSamplesBeforeFirstVideoSample
&& contains(trackTypeToInfo, C.TRACK_TYPE_VIDEO)
&& firstVideoPresentationTimeUs != C.TIME_UNSET
@ -573,11 +574,13 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
presentationTimeUs,
TransformerUtil.getMediaCodecFlags(isKeyFrame ? C.BUFFER_FLAG_KEY_FRAME : 0));
muxer.writeSampleData(trackInfo.trackToken, data, bufferInfo);
if (trackType == C.TRACK_TYPE_VIDEO) {
DebugTraceUtil.logEvent(COMPONENT_MUXER, EVENT_WRITE_SAMPLE_VIDEO, presentationTimeUs);
} else if (trackType == C.TRACK_TYPE_AUDIO) {
DebugTraceUtil.logEvent(COMPONENT_MUXER, EVENT_WRITE_SAMPLE_AUDIO, presentationTimeUs);
}
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
EVENT_ACCEPTED_INPUT,
presentationTimeUs,
/* extraFormat= */ "%s",
/* extraArgs...= */ Util.getTrackTypeString(trackType));
previousTrackType = trackType;
return true;
}
@ -597,11 +600,12 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
maxEndedTrackTimeUs = max(maxEndedTrackTimeUs, trackInfo.timeUs);
listener.onTrackEnded(
trackType, trackInfo.format, trackInfo.getAverageBitrate(), trackInfo.sampleCount);
if (trackType == C.TRACK_TYPE_VIDEO) {
DebugTraceUtil.logEvent(COMPONENT_MUXER, EVENT_TRACK_ENDED_VIDEO, trackInfo.timeUs);
} else if (trackType == C.TRACK_TYPE_AUDIO) {
DebugTraceUtil.logEvent(COMPONENT_MUXER, EVENT_TRACK_ENDED_AUDIO, trackInfo.timeUs);
}
DebugTraceUtil.logEvent(
COMPONENT_MUXER,
EVENT_INPUT_ENDED,
trackInfo.timeUs,
/* extraFormat= */ "%s",
/* extraArgs...= */ Util.getTrackTypeString(trackType));
if (muxerMode == MUXER_MODE_MUX_PARTIAL) {
if (trackType == C.TRACK_TYPE_VIDEO) {