This file is indexed.

/usr/include/thunderbird/FlacDemuxer.h is in thunderbird-dev 1:52.8.0-1~deb8u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef FLAC_DEMUXER_H_
#define FLAC_DEMUXER_H_

#include "mozilla/Attributes.h"
#include "MediaDataDemuxer.h"
#include "MediaResource.h"
namespace mozilla {

namespace flac {
class Frame;
class FrameParser;
}
class FlacTrackDemuxer;


class FlacDemuxer : public MediaDataDemuxer {
public:
  // MediaDataDemuxer interface.
  explicit FlacDemuxer(MediaResource* aSource);
  RefPtr<InitPromise> Init() override;
  bool HasTrackType(TrackInfo::TrackType aType) const override;
  uint32_t GetNumberTracks(TrackInfo::TrackType aType) const override;
  already_AddRefed<MediaTrackDemuxer> GetTrackDemuxer(
    TrackInfo::TrackType aType, uint32_t aTrackNumber) override;
  bool IsSeekable() const override;

  // Return true if a valid flac frame header could be found.
  static bool FlacSniffer(const uint8_t* aData, const uint32_t aLength);

private:
  bool InitInternal();

  RefPtr<MediaResource> mSource;
  RefPtr<FlacTrackDemuxer> mTrackDemuxer;
};

class FlacTrackDemuxer : public MediaTrackDemuxer {
public:
  explicit FlacTrackDemuxer(MediaResource* aSource);

  // Initializes the track demuxer by reading the first frame for meta data.
  // Returns initialization success state.
  bool Init();

  // MediaTrackDemuxer interface.
  UniquePtr<TrackInfo> GetInfo() const override;
  RefPtr<SeekPromise> Seek(media::TimeUnit aTime) override;
  RefPtr<SamplesPromise> GetSamples(int32_t aNumSamples = 1) override;
  void Reset() override;
  int64_t GetResourceOffset() const override;
  media::TimeIntervals GetBuffered() override;
  RefPtr<SkipAccessPointPromise> SkipToNextRandomAccessPoint(
    media::TimeUnit aTimeThreshold) override;

  bool IsSeekable() const;

private:
  // Destructor.
  ~FlacTrackDemuxer();

  // Returns the estimated stream duration, or a 0-duration if unknown.
  media::TimeUnit Duration() const;
  media::TimeUnit TimeAtEnd();

  // Fast approximate seeking to given time.
  media::TimeUnit FastSeek(const media::TimeUnit& aTime);

  // Seeks by scanning the stream up to the given time for more accurate results.
  media::TimeUnit ScanUntil(const media::TimeUnit& aTime);

  // Finds the next valid frame and return it.
  const flac::Frame& FindNextFrame();

  // Returns the next ADTS frame, if available.
  already_AddRefed<MediaRawData> GetNextFrame(const flac::Frame& aFrame);

  // Reads aSize bytes into aBuffer from the source starting at aOffset.
  // Returns the actual size read.
  int32_t Read(uint8_t* aBuffer, int64_t aOffset, int32_t aSize);

  // Returns the average frame length derived from the previously parsed frames.
  double AverageFrameLength() const;

  // The (hopefully) Flac resource.
  MediaResourceIndex mSource;

  // Flac frame parser used to detect frames and extract side info.
  nsAutoPtr<flac::FrameParser> mParser;

  // Total duration of parsed frames.
  media::TimeUnit mParsedFramesDuration;

  // Sum of parsed frames' lengths in bytes.
  uint64_t mTotalFrameLen;

  // Audio track config info.
  UniquePtr<AudioInfo> mInfo;
};

} // mozilla

#endif // !FLAC_DEMUXER_H_