com.google.android.exoplayer2.util.Util.scaleLargeTimestamp()方法的使用及代码示例

x33g5p2x  于2022-02-01 转载在 其他  
字(7.7k)|赞(0)|评价(0)|浏览(191)

本文整理了Java中com.google.android.exoplayer2.util.Util.scaleLargeTimestamp()方法的一些代码示例,展示了Util.scaleLargeTimestamp()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Util.scaleLargeTimestamp()方法的具体详情如下:
包路径:com.google.android.exoplayer2.util.Util
类名称:Util
方法名:scaleLargeTimestamp

Util.scaleLargeTimestamp介绍

[英]Scales a large timestamp.

Logically, scaling consists of a multiplication followed by a division. The actual operations performed are designed to minimize the probability of overflow.
[中]缩放一个大的时间戳。
从逻辑上讲,缩放由乘法和除法组成。执行的实际操作旨在将溢出概率降至最低。

代码示例

代码示例来源:origin: google/ExoPlayer

  1. /**
  2. * Returns the presentation time offset, in microseconds.
  3. */
  4. public long getPresentationTimeOffsetUs() {
  5. return Util.scaleLargeTimestamp(presentationTimeOffset, C.MICROS_PER_SECOND, timescale);
  6. }

代码示例来源:origin: google/ExoPlayer

  1. public StreamElement(String baseUri, String chunkTemplate, int type, String subType,
  2. long timescale, String name, int maxWidth, int maxHeight, int displayWidth,
  3. int displayHeight, String language, Format[] formats, List<Long> chunkStartTimes,
  4. long lastChunkDuration) {
  5. this(
  6. baseUri,
  7. chunkTemplate,
  8. type,
  9. subType,
  10. timescale,
  11. name,
  12. maxWidth,
  13. maxHeight,
  14. displayWidth,
  15. displayHeight,
  16. language,
  17. formats,
  18. chunkStartTimes,
  19. Util.scaleLargeTimestamps(chunkStartTimes, C.MICROS_PER_SECOND, timescale),
  20. Util.scaleLargeTimestamp(lastChunkDuration, C.MICROS_PER_SECOND, timescale));
  21. }

代码示例来源:origin: google/ExoPlayer

  1. long durationUs = Util.scaleLargeTimestamp(duration, C.MICROS_PER_SECOND, track.timescale);
  2. && timestamps.length >= 2) {
  3. long editStartTime = track.editListMediaTimes[0];
  4. long editEndTime = editStartTime + Util.scaleLargeTimestamp(track.editListDurations[0],
  5. track.timescale, track.movieTimescale);
  6. if (canApplyEditWithGaplessInfo(timestamps, duration, editStartTime, editEndTime)) {
  7. long paddingTimeUnits = duration - editEndTime;
  8. long encoderDelay = Util.scaleLargeTimestamp(editStartTime - timestamps[0],
  9. track.format.sampleRate, track.timescale);
  10. long encoderPadding = Util.scaleLargeTimestamp(paddingTimeUnits,
  11. track.format.sampleRate, track.timescale);
  12. if ((encoderDelay != 0 || encoderPadding != 0) && encoderDelay <= Integer.MAX_VALUE
  13. Util.scaleLargeTimestampsInPlace(timestamps, C.MICROS_PER_SECOND, track.timescale);
  14. long editedDurationUs =
  15. Util.scaleLargeTimestamp(
  16. track.editListDurations[0], C.MICROS_PER_SECOND, track.movieTimescale);
  17. return new TrackSampleTable(
  18. for (int i = 0; i < timestamps.length; i++) {
  19. timestamps[i] =
  20. Util.scaleLargeTimestamp(
  21. timestamps[i] - editStartTime, C.MICROS_PER_SECOND, track.timescale);
  22. Util.scaleLargeTimestamp(duration - editStartTime, C.MICROS_PER_SECOND, track.timescale);
  23. return new TrackSampleTable(
  24. track, offsets, sizes, maximumSize, timestamps, flags, durationUs);

代码示例来源:origin: google/ExoPlayer

  1. /**
  2. * Returns the specified duration scaled to take into account the speedup factor of this instance,
  3. * in the same units as {@code duration}.
  4. *
  5. * @param duration The duration to scale taking into account speedup.
  6. * @return The specified duration scaled to take into account speedup, in the same units as
  7. * {@code duration}.
  8. */
  9. public long scaleDurationForSpeedup(long duration) {
  10. if (outputBytes >= MIN_BYTES_FOR_SPEEDUP_CALCULATION) {
  11. return outputSampleRateHz == sampleRateHz
  12. ? Util.scaleLargeTimestamp(duration, inputBytes, outputBytes)
  13. : Util.scaleLargeTimestamp(duration, inputBytes * outputSampleRateHz,
  14. outputBytes * sampleRateHz);
  15. } else {
  16. return (long) ((double) speed * duration);
  17. }
  18. }

代码示例来源:origin: google/ExoPlayer

  1. /** @see DashSegmentIndex#getTimeUs(long) */
  2. public final long getSegmentTimeUs(long sequenceNumber) {
  3. long unscaledSegmentTime;
  4. if (segmentTimeline != null) {
  5. unscaledSegmentTime =
  6. segmentTimeline.get((int) (sequenceNumber - startNumber)).startTime
  7. - presentationTimeOffset;
  8. } else {
  9. unscaledSegmentTime = (sequenceNumber - startNumber) * duration;
  10. }
  11. return Util.scaleLargeTimestamp(unscaledSegmentTime, C.MICROS_PER_SECOND, timescale);
  12. }

代码示例来源:origin: google/ExoPlayer

  1. private long scaleTimecodeToUs(long unscaledTimecode) throws ParserException {
  2. if (timecodeScale == C.TIME_UNSET) {
  3. throw new ParserException("Can't scale timecode prior to timecodeScale being set.");
  4. }
  5. return Util.scaleLargeTimestamp(unscaledTimecode, timecodeScale, 1000);
  6. }

代码示例来源:origin: google/ExoPlayer

  1. /**
  2. * Represents a StreamIndex element.
  3. */
  4. public static class StreamElement {
  5. private static final String URL_PLACEHOLDER_START_TIME_1 = "{start time}";
  6. private static final String URL_PLACEHOLDER_START_TIME_2 = "{start_time}";
  7. private static final String URL_PLACEHOLDER_BITRATE_1 = "{bitrate}";
  8. private static final String URL_PLACEHOLDER_BITRATE_2 = "{Bitrate}";
  9. public final int type;
  10. public final String subType;
  11. public final long timescale;
  12. public final String name;
  13. public final int maxWidth;
  14. public final int maxHeight;
  15. public final int displayWidth;
  16. public final int displayHeight;
  17. public final String language;
  18. public final Format[] formats;
  19. public final int chunkCount;
  20. private final String baseUri;
  21. private final String chunkTemplate;
  22. private final List<Long> chunkStartTimes;
  23. private final long[] chunkStartTimesUs;
  24. private final long lastChunkDurationUs;
  25. public StreamElement(String baseUri, String chunkTemplate, int type, String subType,

代码示例来源:origin: google/ExoPlayer

  1. writeNullTerminatedString(dataOutputStream, nonNullValue);
  2. writeUnsignedInt(dataOutputStream, timescale);
  3. long presentationTime = Util.scaleLargeTimestamp(eventMessage.presentationTimeUs,
  4. timescale, C.MICROS_PER_SECOND);
  5. writeUnsignedInt(dataOutputStream, presentationTime);
  6. long duration = Util.scaleLargeTimestamp(eventMessage.durationMs, timescale, 1000);
  7. writeUnsignedInt(dataOutputStream, duration);
  8. writeUnsignedInt(dataOutputStream, eventMessage.id);

代码示例来源:origin: google/ExoPlayer

  1. @SuppressWarnings("ByteBufferBackingArray")
  2. @Override
  3. public Metadata decode(MetadataInputBuffer inputBuffer) {
  4. ByteBuffer buffer = inputBuffer.data;
  5. byte[] data = buffer.array();
  6. int size = buffer.limit();
  7. ParsableByteArray emsgData = new ParsableByteArray(data, size);
  8. String schemeIdUri = Assertions.checkNotNull(emsgData.readNullTerminatedString());
  9. String value = Assertions.checkNotNull(emsgData.readNullTerminatedString());
  10. long timescale = emsgData.readUnsignedInt();
  11. long presentationTimeUs = Util.scaleLargeTimestamp(emsgData.readUnsignedInt(),
  12. C.MICROS_PER_SECOND, timescale);
  13. long durationMs = Util.scaleLargeTimestamp(emsgData.readUnsignedInt(), 1000, timescale);
  14. long id = emsgData.readUnsignedInt();
  15. byte[] messageData = Arrays.copyOfRange(data, emsgData.getPosition(), size);
  16. return new Metadata(new EventMessage(schemeIdUri, value, durationMs, id, messageData,
  17. presentationTimeUs));
  18. }

代码示例来源:origin: google/ExoPlayer

  1. long duration = parseLong(xpp, "duration", C.TIME_UNSET);
  2. long presentationTime = parseLong(xpp, "presentationTime", 0);
  3. long durationMs = Util.scaleLargeTimestamp(duration, 1000, timescale);
  4. long presentationTimesUs = Util.scaleLargeTimestamp(presentationTime, C.MICROS_PER_SECOND,
  5. timescale);
  6. String messageData = parseString(xpp, "messageData", null);

代码示例来源:origin: google/ExoPlayer

  1. long durationUs = Util.scaleLargeTimestamp(frameCount, samplesPerFrame * C.MICROS_PER_SECOND,
  2. sampleRate);
  3. if ((flags & 0x06) != 0x06) {

代码示例来源:origin: google/ExoPlayer

  1. edtsOffset = Util.scaleLargeTimestamp(track.editListMediaTimes[0], 1000, track.timescale);
  2. Util.scaleLargeTimestamp(cumulativeTime, 1000, timescale) - edtsOffset;
  3. sampleSizeTable[i] = sampleSize;
  4. sampleIsSyncFrameTable[i] = ((sampleFlags >> 16) & 0x1) == 0

代码示例来源:origin: google/ExoPlayer

  1. Util.scaleLargeTimestamp(atom.readUnsignedInt(), C.MICROS_PER_SECOND, timescale);

代码示例来源:origin: google/ExoPlayer

  1. long durationUs = Util.scaleLargeTimestamp(numFrames,
  2. C.MICROS_PER_SECOND * (sampleRate >= 32000 ? 1152 : 576), sampleRate);
  3. int entryCount = frame.readUnsignedShort();

代码示例来源:origin: google/ExoPlayer

  1. offset += atom.readUnsignedLongToLong();
  2. long earliestPresentationTimeUs = Util.scaleLargeTimestamp(earliestPresentationTime,
  3. C.MICROS_PER_SECOND, timescale);
  4. timeUs = Util.scaleLargeTimestamp(time, C.MICROS_PER_SECOND, timescale);
  5. durationsUs[i] = timeUs - timesUs[i];

代码示例来源:origin: google/ExoPlayer

  1. durationUs = C.TIME_UNSET;
  2. } else {
  3. durationUs = Util.scaleLargeTimestamp(duration, C.MICROS_PER_SECOND, movieTimescale);

相关文章